J'utilise la distribution SourceMage (distrib source), avec simpleinit-msb et udev.
Je ne suis pas spécialiste dans le domaine, mais j'ai pris quelques minutes pour regarder comment c'est organisé :
- Je n'ai jamais compilé le support du devfs dans le noyau.
- J'ai un runlevel nommé "%DEV" qui est lancé en tout premier par simpleinit-msb, contenant un unique script qui s'occupe de udev :
Il monte /sys, /proc, puis un ramfs dans /dev. Voilà la fonction appelée dans ce fichier (udev_root est sur /dev/ dans udev.conf):
start_udev()
{ (
. /etc/udev/udev.conf
# mount sysfs
echo "Mounting sysfs at /sys"
mount -n -t sysfs none /sys
# mount proc
echo "Mounting /proc"
mount -n -t proc none /proc
echo "Mounting ramfs at $udev_root"
mount -n -t ramfs none $udev_root
# create some needed stuff
ln -s /proc/self/fd $udev_root/fd
ln -s /dev/fd/0 $udev_root/stdin
ln -s /dev/fd/1 $udev_root/stdout
ln -s /dev/fd/2 $udev_root/stderr
mkdir $udev_root/shm
mkdir $udev_root/pts
# propogate /udev from /sys - we only need this while we do not
# have initramfs and an early user-space with which to do early
# device bring up
echo "Creating initial udev device nodes"
/sbin/udevstart
if [ -f /etc/udev/udev.missing ]; then
echo "Processing /etc/udev/udev.missing"
cd /dev
while read line; do
if [ "${line:0:1}" == "#" ]; then continue; fi
for ((i=0; i<7; i++)); do
val[$i]=${line%%:*}
line=${line#*:}
done
if [ "${val[1]}" == "d" ]; then
mkdir ${val[0]}
else
mknod ${val[0]} ${val[1]} ${val[2]} ${val[3]}
fi
chmod ${val[4]} ${val[0]}
chown ${val[5]}:${val[6]} ${val[0]}
done < /etc/udev/udev.missing
cd /
fi
echo "Telling init to reopen file descriptors"
kill -USR1 1
echo "Starting udevd"
/sbin/udevd &
) }
L'init se poursuit ensuite avec les autres runlevels.
J'espère t'avoir été utile. N'hésite pas à demander des précisions.
# Mon expérience sur SourceMage
Posté par tipote . En réponse au message simpleinit-msb et udev. Évalué à 1.
Je ne suis pas spécialiste dans le domaine, mais j'ai pris quelques minutes pour regarder comment c'est organisé :
- Je n'ai jamais compilé le support du devfs dans le noyau.
- J'ai un runlevel nommé "%DEV" qui est lancé en tout premier par simpleinit-msb, contenant un unique script qui s'occupe de udev :
Il monte /sys, /proc, puis un ramfs dans /dev. Voilà la fonction appelée dans ce fichier (udev_root est sur /dev/ dans udev.conf):
start_udev()
{ (
. /etc/udev/udev.conf
# mount sysfs
echo "Mounting sysfs at /sys"
mount -n -t sysfs none /sys
# mount proc
echo "Mounting /proc"
mount -n -t proc none /proc
echo "Mounting ramfs at $udev_root"
mount -n -t ramfs none $udev_root
# create some needed stuff
ln -s /proc/self/fd $udev_root/fd
ln -s /dev/fd/0 $udev_root/stdin
ln -s /dev/fd/1 $udev_root/stdout
ln -s /dev/fd/2 $udev_root/stderr
mkdir $udev_root/shm
mkdir $udev_root/pts
# propogate /udev from /sys - we only need this while we do not
# have initramfs and an early user-space with which to do early
# device bring up
echo "Creating initial udev device nodes"
/sbin/udevstart
if [ -f /etc/udev/udev.missing ]; then
echo "Processing /etc/udev/udev.missing"
cd /dev
while read line; do
if [ "${line:0:1}" == "#" ]; then continue; fi
for ((i=0; i<7; i++)); do
val[$i]=${line%%:*}
line=${line#*:}
done
if [ "${val[1]}" == "d" ]; then
mkdir ${val[0]}
else
mknod ${val[0]} ${val[1]} ${val[2]} ${val[3]}
fi
chmod ${val[4]} ${val[0]}
chown ${val[5]}:${val[6]} ${val[0]}
done < /etc/udev/udev.missing
cd /
fi
echo "Telling init to reopen file descriptors"
kill -USR1 1
echo "Starting udevd"
/sbin/udevd &
) }
L'init se poursuit ensuite avec les autres runlevels.
J'espère t'avoir été utile. N'hésite pas à demander des précisions.