Archiv > Development
Mld-4
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