Pre-populated /dev ?

Bonsoir,
Je voudrais votre avis sur une manip qui consite à utiliser un “pre-populated” /dev pour accélérer le démarrage de la machine…

Deux liens ou c’est évoqué :
debian-administration.org/articles/620
forum.eeeuser.com/viewtopic.php?id=54518

Il faudrait compresser le répertoire /dev (peuplé) dans un .tar puis modifier le script /etc/initd/udev

Les gains de temps ont l’air intéressant…
Quelqu’un a-t-il déjà essayé ?

PS : Support Debian est-il approprié pour ma question ? Pas sur… Mais pause-café non plus :wink:

oui mais si tu garde l intramfs, udev et tout plein de trucs au démarrage c’est inutile.
tu ne gagne pas grand chose (tu gagne le temps que udev s’affiche au boot: 3-4 sec).

Si tu veux vraiment accélérer le boot c’est une compile kernel (0 modules),
suppression de tout ce tu n’utilise pas au démarrage (etc/rcS rc2 …3)
ensuite suppression de udev et /dev en statique (une copie simple suffit pas besoin de compression)
avec ça tu peux arriver à 5-8 sec de boot (console avec X light)

Inconvénients:

  • pas de détection automatique (mount manuel des disque usb, etc…)
  • pas de logs
  • pas de graphique lourds mais simpas ( gnome beryl compiz)
  • reinstalle minimale avec beaucoup de temps (en compile et adaptation script)

[quote=“dchost99”]Si tu veux vraiment accélérer le boot c’est une compile kernel (0 modules),
suppression de tout ce tu n’utilise pas au démarrage (etc/rcS rc2 …3)
ensuite suppression de udev et /dev en statique (une copie simple suffit pas besoin de compression)
avec ça tu peux arriver à 5-8 sec de boot (console avec X light)
[/quote]
Super, merci pour tes précisions,
Donc une simple copie de /dev suffirait ?

Les inconvénients je les connaissaient déjà…
Je vais tester ça dans une machine virtuelle…
Encore merci.

Mouais, je ne vois pas le gain si tu lances udev ce qui est quasi indispensable surtout si tu utilises une archive: Dans ce cas, cela consiste à faire une série de mknod ce que fait udev. Par ailleurs, celui ci charge les modules correspondants ce qui devra être fait. La mise en dur des modules est effectivement la solution pour accélérer les choses (suppression de l’initrd surtout) mais cela peut poser des pbms par exemple pour l’usb (sur le 2.4, l’USB ne fonctionnait correctement qu’en modules…)

Sans initrd, plus de suspend… donc plus de boote hyper rapide :slightly_smiling:

Bonjour,

Donc ce n’est pas franchement une bonne idée…
Je vais faire un essai dans une machine virtuelle, je ne risque pas grand chose…

Merci de vos infos :smiley:

copie suffit ( rsync -a /dev/* …)
et si tu garde udev il n’y a pas de gain.
Je viens de faire une doc dans les astuces
http://forum.debian-fr.org/viewtopic.php?f=8&t=22621

[quote=“dchost99”]copie suffit ( rsync -a /dev/* …)
et si tu garde udev il n’y a pas de gain.
Je viens de faire un doc dans les astuces
http://forum.debian-fr.org/viewtopic.php?f=8&t=22621[/quote]
C’est très bien tout ça, cool :smt023
Je regarde + tard à tête reposée… Merci

Bonjour tout lmonde!

Je vien de tester cette méthode de pre-populated /dev.

*Voici la procédure que j’ai suivie:

  1. vérifier si l’on a le paquet ‘udev’ . Pour cela, taper « ls /var/cache/apt/archives » et essayer de trouver ‘udev’. Dans mon cas, je n’ai pas trouvé ce paquet : en fait il est installé (on le voit facilement en tapant ‘aptitude install udev’ , en notant qu’aucun paquet n’est installé), mais il n’est pas présent dans /var/cache/apt/archives. On va voir par la suite comment on va procéder pour l’obtenir.

  2. vérifier la version de ‘udev’ que l’on a: «apt-cache show udev». Voici la version de mon udev: 0.125-7+lenny1.

  3. Il faudra donc télécharger le paquet ‘udev 0.125-7+lenny1’ sous Windows, en allant dans : ftp.fr.debian.org/debian/pool/ma … _amd64.deb

  4. Une fois le fichier téléchargé, le copier via WinSCP dans ‘/home’ par exemple (peu importe l’emplacement, mais de préférence éviter de le copier dans la racine) et taper la commande «dpkg -x udev_0.125-7+lenny1_amd64.deb /home ».

  5. Plusieurs répertoires ont été créés à présent, dont ‘lib’. Aller dans ‘lib/udev’ (qui se trouve dans /home pour moi) et copier le fichier 'create_static_nodes ’ dans /lib/udev via la commande « cp create_static_nodes /lib/udev/ ».

  6. Ensuite, aller dans ‘/etc’ et taper « tar cf init-devs.tar /dev » (pour que les fichiers ne se retrouvent pas dans un répertoire “inférieur” à la décompression).

  7. Télécharger le nouveau script : chezphil.org/tmp/init.d-udev.
    Pour cela, retourner sous Windows et aller dans la page: chezphil.org/tmp/init.d-udev.
    Puis cliquer sur l’onglet ‘Fichier’ (en haut à gauche de la page) et ‘enregistrer sous’ le bureau par exemple. Enfin, copier ce fichier qui se nomme ‘init.d-udev’ (que l’on a sur notre bureau) dans /home (par exemple et de préférence) via WinSCP.

8)Ensuite faire une copie de sauvegarde du script original que nous allons “écraser”, ce script se trouvant dans /etc/init.d/udev /. Il faut donc taper la commande
«cp /etc/init.d/udev /home» pour copier le script (j’ai choisi de le mettre dans /home).

9)Copier le nouveau script (téléchargé) dans ‘/etc/init.d/udev’. Pour cela, taper « cp /home/init.d-udev /etc/init.d/udev ».

  1. Il faut que ce script appartienne à root et qu’il soit exécutable. Il faut donc taper les commandes
    « chown root:root /etc/init.d/udev » et « chmod 755 /etc/init.d/udev ».


*Quelques infos pour aider:

a) “vim /etc/network/interfaces”:

This file describes the network interfaces available on your system and how to activate them. For more information, see interfaces(5).

The loopback network interface

auto lo
iface lo inet loopback

The primary network interface

allow-hotplug eth0
iface eth0 inet dhcp

b) “vim /etc/init.d/networking”:

! /bin/sh -e

BEGIN INIT INFO

Provides: networking

Required-Start: mountkernfs ifupdown $local_fs

Required-Stop: ifupdown $local_fs

Default-Start: S

Default-Stop: 0 6

Short-Description: Raise network interfaces.

END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"

[ -x /sbin/ifup ] I I exit 0

. /lib/lsb/init-functions

process_options( ) {
[ -e /etc/network/options ] I I return 0
log_warning_msg “/etc/network/options still exists and it will be IGNORED! Read README. Debian of netbase.”
}

check_network_file_systems( ) {
[ -e /proc/mounts ] I I return 0

   exec 9<&0 < /proc/mounts
   while read DEV MTPT FSTYPE REST;  do
         case $DEV in
         /dev/nbd*|/dev/nd[a-z]*|/dev/etherd/e*)
               log_warning_msg "not deconfiguring network interfaces: network devices still mounted."
               exit 0
               ;;
        esac
        case $FSTYPE in
        nfs|nfs4|smbfs|ncp|ncpfs|cifs|coda|ocfs2|gfs|pvfs|pvfs2|fuse.httpfs|fuse.curlftpfs)
               log_warning_msg "not deconfiguring network interfaces: network file systems still mounted.
               exit 0
               ;;
        esac
  done
  exec 0<&9  9<&-

}

case “$1” in
start)
process_options

        log_action_begin_msg "Configuring network interfaces"
        if ifup -a; then
              log_action_end_msg $?
        else
              log_action_end_msg $?
        fi
        ;;

stop)
check_network_file_systems

        log_action_begin_msg "Deconfiguring network interfaces"
        if ifdown -a --exclude=lo; then
              log_action_end_msg $?
        else
              log_action_end_msg $?
        fi
        ;;

force-reload|restart)
process_options

        log_action_begin_msg "Reconfiguring network interfaces"
        ifdown -a --exclude=lo | |   true
        if ifup -a --exclude=lo; then
              log_action_end_msg $?
        else
              log_action_end_msg $?
        fi
        ;;

*)
echo “Usage: /etc/init.d/networking {start|stop|restart|force-reload}”
exit 1
;;
esac

exit 0

c) “ls /etc/rcS.d”:

README

S01glibc.sh

S01hostname.sh

S01keyboard-setup

S01module-init-tools

S01mountkernfs.sh

S01udev

S01udev-mtab

S02checkroot.sh
S02console-setup
S02ifupdown
S02ifupdown-clean
S02mountdevsubfs.sh
S02mtab.sh
S03checkfs.sh
S03mountall-bootclean.sh
S03mountall.sh
S03mountnfs-bootclean.sh
S03mountnfs.sh
S03mountoverflowtmp
S03networking
S03urandom


*Problèmes rencontrés:

Au redémarrage, je n’ai plus d’internet, plus d’eth0.

j’ai testé la commande “sudo /etc/init.d/networking restart”

On m’affiche: “Reconfiguring network interfaces…done.” mais ça ne règle pas le pb

aprés qan je redémarre et qe je remets ifconfig, ya tjr pas dinternet… et qan je mets ‘ifup eth0’, on m’affiche:

“SIOCSIFADDR: No such device
eth0: ERROR while getting interface flags: No such device
eth0: ERROR while getting interface flags: No such device
Bind socket to interface: No such device
Failed to bring up eth0”

DES SOLUTIONS? :slightly_smiling:

Euhh pardonner moi, mais j’ai vraiment du mal à comprendre le pre-populated /dev
Ca sert seulement à gagner du temps au démarrage ?

[quote=“BbT0n”]Euhh pardonner moi, mais j’ai vraiment du mal à comprendre le pre-populated /dev
Ca sert seulement à gagner du temps au démarrage ?[/quote]

Oui, en effet, ça permet de gagner pas mal de temps au démarrage!

Par exemple, j’utilise VmWare en ce moment, et grâce à ce pre-populated /dev, je suis passé de 5-6s à un peu moins de 4s au démarrage :slightly_smiling:

Par contre, il ya plus d’internet chez moi, donc c normal qe ca démarre aussi vite…

Rebonjour :slightly_smiling:

Je m’excuse d’insister un peu trop, mais en fait je suis en stage, stage que je finis ce mercredi soir…
On m’a demandé d’appliquer cette méthode d’udev, mais j’y arrive pas…

Ce serait vraiment sympa que quelqu’un m’aide assez rapidement, vu le peu de temps qu’il me reste…

Merci d’avance.

Salut,

Recompilation du kernel : Combien de siècles il va falloir pour amortir le temps de compil à raison d’une seconde par démarrage ?

Autre méthode vous privant de l’automatisme : Ceci ne se chiffre peut-être pas en siècles ?

A part supprimer le démarrage des modules inutiles et l’affichage des avertissements sur lesquels on ne peut pas agir je ne vois pas grand chose à gagner :smiley:

[quote=“relax”]Rebonjour :slightly_smiling:

Je m’excuse d’insister un peu trop, mais en fait je suis en stage, stage que je finis ce mercredi soir…
On m’a demandé d’appliquer cette méthode d’udev, mais j’y arrive pas…

Ce serait vraiment sympa que quelqu’un m’aide assez rapidement, vu le peu de temps qu’il me reste…

Merci d’avance.[/quote]
Simple, le module de ta carte réseau n’est pas installé. udev se charge d’initialiser les périphériques, si tu neutralises son action, ça coince. Il te faut mettre le nom du module de ta carte réseau dans /etc/modules. ° cet instant il te faut rajouter la requête DHCP dans le temps de boute, tu retrouveras tes 5-6 secondes je pense.

[quote=“fran.b”][quote=“relax”]Rebonjour :slightly_smiling:

Je m’excuse d’insister un peu trop, mais en fait je suis en stage, stage que je finis ce mercredi soir…
On m’a demandé d’appliquer cette méthode d’udev, mais j’y arrive pas…

Ce serait vraiment sympa que quelqu’un m’aide assez rapidement, vu le peu de temps qu’il me reste…

Merci d’avance.[/quote]
Simple, le module de ta carte réseau n’est pas installé. udev se charge d’initialiser les périphériques, si tu neutralises son action, ça coince. Il te faut mettre le nom du module de ta carte réseau dans /etc/modules. ° cet instant il te faut rajouter la requête DHCP dans le temps de boute, tu retrouveras tes 5-6 secondes je pense.[/quote]

Ok je vais tester ça :slightly_smiling: Je te tiendrai au courant.

Merci bcp!

Re :slightly_smiling:

J’ai utilisé la commande suivante pour essayer de résoudre le pb avec internet : “sudo module-assistant a-i pcnet32”.

Voici ce que l’on m’affiche: “pcnet32, qu’est-ce que pcnet32?”

Je comprends pas pkoi on m’affiche ce message…

désolé de remplir cette page de messages, j’ai oublié de signaler:

  1. voici ce que j’ai dans mon /etc/modules:

loop
alias eth0 pcnet32

2)j’ai également essayé la commande “modprobe pc32net”, mais en vain :frowning: toujours pas d’internet…

Est-ce que quelqu’un pourrait m’aider si possible?

Merci.

Salut Relax,
Je suppose que tu as essayé de recompiler le noyau en mettant le module de la carte vmware (pcnet32 non ?) ? Pas de résultat de ce côté là ?

[quote=“lol”]Salut Relax,
Je suppose que tu as essayé de recompiler le noyau en mettant le module de la carte vmware (pcnet32 non ?) ? Pas de résultat de ce côté là ?[/quote]

Salut!
Oui j’ai essayé en mettant en dur le module “AMD PCnet32 PCI support”, mais cela ne résout toujours pas mon problème d’internet…

Merci pour la proposition!

lsmod
regarde si pcnet n’est pas chargé
et pourquoi tes rcS démarre tous en même temps? (S02 S03)
essaye de faire le démarrage classique (ifup et en 39 il me semble et networking 40)
il faut respecter l’ordre du démarrage des script, un après l’autre…(a condition que le module soit actif)