URL: https://linuxfr.org/users/niouls/journaux/changement-dynamique-de-rootdevice-attention-cest-long Title: Changement dynamique de rootdevice (attention, c'est long !) Authors: niouls Date: 2004年07月30日T06:08:45+02:00 Tags: slackware et firefox Score: 0 D'abord, situons le contexte (les plus pressés d'entre vous peuvent sauter directement au point II): I) LE CONTEXTE Je dispose d'un portable dont le disque-dur est l'unique source de bruit (mis à part le ventilateur du cpu qui ne se met en route qu'en cas de forte charge). Pour atteindre le silence *absolu*, il me faut donc m'attaquer au disque-dur. La commande _hdparm -Y /dev/hdx_ (put IDE drive to sleep) est toute indiquée à cette fin. Pour l'utiliser, il faut toutefois que mon système ne dépende en rien du disque-dur. La solution consiste à mettre à profit les autres sources de données disponibles: lecteur cdrom, carte réseau, adaptateur pcmcia/compact-flash, port usb... Dans cette perspective, j'ai entrepris ces jours derniers la construction d'un système basé sur la branche current de la slackware, et dont les composants correspondent à mes besoins les plus simples : lecture de vidéos (mplayer), écoute de musique (mpd/ncmpc), réception et rédaction de courriels (fetchmail/procmail/elmo/vim), surf (firefox/windowmaker), etc. Au final, j'obtiens 483M de fichiers, dans une arborescence unix normale, et que je grave tels quels sur un cd-rw, sans compression. Au boot, un ramdisk initial crée la structure du système: - montage d'un système de fichiers de type ramfs dans /mnt (ce sera notre futur /, et basé en mémoire, il sera writeable) - montage du cdrw dans le dossier /mnt/cdrom (dont le contenu sera donc read-only) - les futurs /dev, /etc, /root, /var, et /tmp sont crées et remplis dans /mnt (ils seront writeable puisque également basés en mémoire, découlant de /mnt) - on crée les liens symboliques vers les dossiers dont un accès en lecture suffit: for DIR in bin boot lib root sbin usr do £spaces£ £/spaces£ln -s /mnt/cdrom/"$DIR" /mnt/"$DIR" done - enfin, la commande _pivot_root_ nous permet de définir effectivement /mnt comme le nouveau / La suite, via /sbin/init, va consister notamment en: - montage du /home, stocké sur une carte compact-flash - montage du partage samba pour accéder à mes fichiers multimédia (stockés sur le serveur, très bruyant, mais je m'en fous, il est dans une pièce très éloignée). Et bien sûr, le tout s'est fait **disque-dur en veille** (objectif de départ). Jusque là, tout fonctionne comme prévu. Le lecteur cdrom est même très peu sollicité une fois le système "rodé" (caches et buffers mémoire bien remplis). Mais, puisque rien n'est parfait, cette configuration implique un inconvénient tout de même de taille : le temps de chargement total, me permettant une opérationnalité complète dans mon activité moulesque excède les 3 minutes. Cela m'amène (ouf !) au problème. II) LE PROBLÈME J'ai pensé alors que le système pourrait être lancé via le disque-dur, puis que l'on switcherait sur le cd-rw le moment voulu. Facile, me dis-je, il s'agit juste de changer les liens symboliques des dossiers dont un accès en lecture suffit, puisque le reste est en mémoire. Malheureusement, un _sudo ls -l /proc/1/exe_ renvoie ceci: lrwxrwxrwx 1 root root 0 2004年07月30日 05:57 /proc/1/exe -> /disque/sbin/init Init, et les autres processus, ont été lancés avec en référence la destination du lien symbolique (/disque/sbin/init) et non le lien symbolique lui-même (/sbin/init), ce qui m'interdit tout changement de support. Un _lsof | grep /disque_ est tout aussi éloquent. Le disque reste donc **busy, soit inendormable**, tout comme moi. J'en appelle donc à la solidarité linuxfrienne : si vous avez le moindre début de commencement d'idée potentielle, je suis intéressé ! À noter, que le noyau utilisé est un 2.6.7, donc pas de overlayfs ([http://ovlfs.sf.net(...)](http://ovlfs.sf.net) ) ni de unionfs ([http://www.fsl.cs.sunysb.edu/project-unionfs.html(...)](http://www.fsl.cs.sunysb.edu/project-unionfs.html) ) possible. Je vous suis déja reconnaissant de m'avoir lu jusqu'ici :) _niouls_

AltStyle によって変換されたページ (->オリジナル) /