Salut,
Je suis toujours en train de me monter un clef USB from debootstrap, et sans utiliser les helpers, j’avance bien. J’ai un problème concernant la compréhension global du “montage” (mount) durant la chaine d’initialisation du boot (initrd) au prompt du bash, et mes méthodes ne sont peut être pas des plus académiques, je prends donc tous conseils…
fran.b, m’a vite dissuadé d’utiliser des liens symboliques en RAM, et il a bien fait, je me suis tourné vers AUFS, un autre unionfs à priori bien moins buggé et avec beaucoup moins d’overhead (5% contre 10% théorique).
Après un debootstrap et quelques apt-get de paquets essentiel, j’ai décompresser mon initrd avec cpio et gunzip.
- J’ai collé les 2 modules aufs.ko et exportfs.ko dans /lib/modules/…/kernel de mon initrd
- Puis j’ai modifié mon script init, à la racine de l’initrd, juste avant l’appel a l’init, pour monter la partition / en AUFS (je le collerais ici en rentrant du boulot)
Dans le fichier init de l’initrd :- Je créer /aufs /ro /rw
- Je créer un tmpfs sur /rw
- Je monte (–move) /root sur /ro
- Je monte /aufs en union avec /ro et /rw
- Je monte (–move) /ro sur /aufs/ro et /rw sur /aufs/rw (pour pouvoir y accéder après)
- Je monte (–move) /root sur /aufs
- Et l’init est lancé, j’imagine qu’il chroot ou pivot_root sur le /root
Ça marche bien, je vois bien l’effet du copy-on-write dans le tmpfs /rw, ca arrache bien !
Le seul truc que j’ai omis de dire, c’est que mon fstab, est pratiquement vide, c’est a dire que j’ai laissé que la /proc et lorsque je regarde mon mtab, j’ai plein de truc de monter.
Mon fstab serait-il inutile ?
QUESTIONS
-
Je crois que le fstab sert surtout lors d’un “mount -a”, mais dans quel cas on fait ca ? En plus le initrd se charge de monter tout ce qu’il faut, donc finalement, que fait le fstab ? (oui oui je suis perdu)
-
Admettons que quelqu’un me fasse comprendre les subtilités du fstab, j’imagine que je vais devoir ajouter un ligne pour ma racine, mais comme elle est en AUFS
j’imagine que je peux remettre la chaine (br=… en aufs équivaut a dirs=… en unionfs) qui m’a servis a monter la racine dans mon initrd.
De tête :
none /proc proc defaults 0 0
/ / aufs br=/ro:/rw=rw 1 1
-
Comment puis-je faire pour que mon init (initrd) detecte le bon device “root=” au démarrage (sans forcement utiliser les UUID ou LABEL des partitions) ?
J’ai vu des types qui, dans un petite boucle for, essayaient de monter sda1, sdb1, sdc1, puis sdd1, etc… jusqu’au succès et essaye de lire un fichier qui confirme la présence de la partition voulue.
Est ce fiable ? y’a t’il mieux ? -
J’ai vu aussi que après recompression , mon initrd (même sans les modules) fait presque le double de la taille de celui d’origine.
Dois je utiliser mkinitrd -u ? dans ce cas, comment taper dans le fichier init directement ?
(Sans passer par des script top, bottom, etc…)
Voila, merci d’avance pour le coup de main
Molux