Archiv > Development

Mld-4

<< < (11/19) > >>

wino:
Hier mal ein Versuch die Voraussetzungen für udev (README udev) aufzuzeigen.  


Kernel - Diese Optionen sind erforderlich:

--- Code: ---     CONFIG_HOTPLUG=y
      CONFIG_UEVENT_HELPER_PATH=""
      CONFIG_NET=y
      CONFIG_UNIX=y
      CONFIG_SYSFS=y
      CONFIG_SYSFS_DEPRECATED*=n
      CONFIG_PROC_FS=y
      CONFIG_INOTIFY_USER=y
      CONFIG_SIGNALFD=y
--- End code ---
Diese Optionen könnten erforderlich sein:

--- Code: ---CONFIG_TMPFS=y
      CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)
      CONFIG_BLK_DEV_BSG=y (SCSI devices)
--- End code ---
Udev arbeitet nicht mit der CONFIG_SYSFS_DEPRECATED* Auswahl!
Unix domain sockets (CONFIG_UNIX) als ein ladbares Kernmodul könnte arbeiten, wird aber  nicht unterstützt.

CONFIG_UEVENT_HELPER_PATH sollte nicht, wie für mdev erforderlich, auf sbin/hotplug gesetzt sein. Diese Option könnte das System unter Umständen unbrauchbar machen.

Das proc Filesystem wird auf /proc und das sysfs Filesystem auf /sys gemountet. Etwas anderes wird von udev nicht unterstützt.

Folgende Gruppen sind für udev (base) anzulegen.
disk, cdrom, floppy, tape, audio, video, lp, tty, dialout und kmem.
Ebenso muss /run unter / angelegt sein. Ein Symlink von /run wird nach /var/lib/run angelegt.  

Zur Bootzeit soll /dev in das devtmpfs Filsystem gemountet werden. Vor dem Start von udev müssen die Device /dev/null und /dev/console angelegt werden.

Eingebunden als Addon wird udev im Makefile von initramfs.
--- Code: ---packages = $(addprefix ../,$(addsuffix /$(package).opk,kernel lib-c base bootsplash busybox init opkg udev))
--- End code ---
@Claus,

Du kennst Dein MLD aus dem FF und wirst sicherlich den Start von udev richtig einbinden. Besondere Modulladescripte wie beispielsweise für die dvb, net usw. können entfallen.

MfG
wino

wino:

--- Quote ---Soweit ich weiß, braucht lediglich der mdev Aufruf in der /etc/init.d/rc.funktions, der die devices erstellt, durch nen udev äquivalent ersetzt zu werden. Außerdem ist die /sbin/hotplug durch ne udev Variante zu ersetzen.
--- End quote ---
Ganz so simpel ist es wohl nicht. Udev muss meiner Meinung nach schon in der init gestartet werden.

Die init von Debian:
--- Code: ---#!/bin/sh -e
# used for initramfs
export PATH
. /lib/debian-installer/init-debug
debugshell "just booted"

mount /proc
mount /sys
/lib/debian-installer/start-udev

init='/bin/busybox init'
for i in $(cat /proc/cmdline); do
case $i in
  init=/init|init=init)
   # Avoid endless loop
   :;;
  init=*)
   init=${i#init=};;
  noshell)
   sed -i '/^tty[23]/s/^/#/' /etc/inittab;;
esac
done
debugshell "before init"
exec $init
--- End code ---
Und start-udev: (Habe ich schon etwas gekürzt.)
--- Code: ---#!/bin/sh -e

make_extra_nodes() {
  [ -e /etc/udev/links.conf ] || return 0
  grep '^[^#]' /etc/udev/links.conf |
  while read type name arg1; do
    [ "$type" -a "$name" -a ! -e "/dev/$name" -a ! -L "/dev/$name" ] ||continue
    case "$type" in
      L) ln -s $arg1 /dev/$name;;
      D) mkdir -p /dev/$name;;
      M) mknod -m 600 /dev/$name $arg1;;
      *) echo "links.conf: unparseable line ($type $name $arg1)";;
    esac
  done
}


echo > /sys/kernel/uevent_helper

if ! grep -E -q "^[^[:space:]]+ /dev (dev)?tmpfs" /proc/mounts; then
  mount -n -o mode=0755 -t tmpfs tmpfs /dev
fi

make_extra_nodes

udevd --daemon --resolve-names=never

udevadm trigger --action=add

mount /dev/pts

udevadm settle || true

if [ -d /sys/bus/scsi ]; then
    modprobe -q scsi_wait_scan && modprobe -r scsi_wait_scan || true
    udevadm settle || true
fi
exit 0
--- End code ---
Und noch die /etc/udev/links.conf:
--- Code: ---D pts
D shm
M null  c   1 3
M console c   5 1
M ppp  c 108 0
M loop0 b   7 0
D net
M net/tun c  10 200
--- End code ---
Es sind natürlich nur Beispiele wie es aussehen könnte.

MfG
wino

orgel:
@Claus hast Du das mit Absicht gemacht, das MLD Verzeichnis noch einmal komplett im Git Verzeichnis drin hast ?

Gruß
Orgel

clausmuus:
@Orgel,
kannst Du etwas genauer beschreiben was Du meinst?

@wino,
ist doch genau wie ich gesagt habe. Der mdev -s Aufruf muss durch nen udev Aufruf ersetzt werden. Das wird dann genau an der von Dir beschriebenen Stelle aufgerufen, nämlich direkt nach dem Mounten von sys und proc und nach dem Erstellen von /dev/null und /dev/console.
Die Kernel Config kannst Du gerne entsprechend Deinen Bedürfnissen anpassen, und mir nen git-diff zuschicken.

@MarMic,
ich werd mdev erst entsorgen wenn udev läuft. Solange das noch in Entwicklung ist, kann beides parallel existieren ohne sich zu stören (solange nur eines der Beiden Pakete installiert ist).

Claus

orgel:
Im Prinzip ist das ganze Verzeichnis mit Unterverzeichnissen MLD noch einmal vorhanden innerhalb des Git Verzeichnis.

MLD-->MLD-->Kernel-->usw

Gruß
Orgel

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version