| | Logicien | Posté le 16/01/2005 @ 20:22 | Astucien
2361 Messages
| Bonjour,
Un initrd est un fichier compressé avec gzip qui contient un système de fichiers racine simplifié en ext2 ou vfat. Cette racine est utilisée comme intermédiaire. Elle est dite " pivotroot" et montée en mémoire vive par le noyau au démarrage. Un script nommé linuxrc, contenu à sa racine, est exécuté et permet au noyau d'avoir accès à ce qui lui manque pour réussir son démarrage, le plus souvent des modules essentiels au montage du vrai système de fichiers racine sur le disque dur(ext2, ext3, reiserfs, etc). Après accès à ces modules essentiels, la vrai partition racine sur le disque dur est montée à l'aide de ces modules comme REALROOT. Le noyau ayant accès à tous les modules de la vrai partition racine, peut maintenant compléter le démarrage avec succès. Un initrd est utilisé entre autres, avec des noyaux génériques pour réduire la taille du noyau. Un initrd est le plus souvent localisé dans le Répertoire /boot.
root 13:18 ~ } cp /boot/initrd-2.6.10-gen.gz /root copie de travail
root 13:18 ~ } gzip -d initrd-2.6.10-gen.gz décompresse en initrd-2.6.10-gen
root 13:18 ~ } file initrd-2.6.10-gen
initrd-2.6.10-gen: Linux rev 1.0 ext2 filesystem data
root 13:19 ~ } modprobe loop le module loopback est nécessaire au montage
root 13:19 ~ } mount -t ext2 initrd-2.6.10-gen -o loop /mnt/divers
root 13:19 ~ } cd /mnt/divers
root 13:20 divers } ls
bin dev etc lib linuxrc lost+found proc sbin sys temp usr
root 13:23 divers } ls etc
devfsd.conf fstab initrd.defaults initrd.scripts modules
root 13:24 divers } cat etc/fstab
/dev/ram0 / ext2 defaults
proc /proc proc defaults 0 0
On voit que le noyau monte l'initrd en mémoire vive via /dev/ram0. Le noyau peut exécuter cette tâche seulement si le support essentiel au montage d'un " ramdisk" est compilé en dur dans le noyau. Sinon, il y aura un " kernel panic". Le système de fichiers virtuel proc est toujours nécessaire. Pour les curieux, voici le contenu complet de initrd-2.6.10-gen copié dans le fichier [url="http://perso.b2b2c.ca/~agissons/systemes/contenu-initrd"]contenu-initrd[/url]. Celui-ci ne contient toutefois rien d'essentiel au démarrage, puisque mon noyau personnalisé contient en dur l'essentiel pour réussir le démarrage sans initrd. Vous préférez sans doute maintenant voir par vous-mêmes le contenu de votre propre initrd.
root 14:17 divers } cd
root 14:17 ~ } umount /mnt/divers
root 14:18 ~ } rm -rf initrd-2.6.10-gen
root 14:18 ~ }
| | |
| |
| Publicité |
|
| | luteola | Posté le 16/01/2005 à 20:36 | Astucien
3040 Messages
| [chinois]
je crois qu'il est temps que je m'achète un bouquin sur linux. Histoire de comprendre ce que tu veux dire Logicien... En plus, si je me trompe pas, ca fait suite au topic que j'ai lancé suite à une update du kernel. J'ai pas eu l'occaz de remettre le nez dedans d'ailleurs... Ca tardera pas.
En tout cas, merci de nous éclairer ainsi.
a+
| | | | | Shaika-Dzari | Posté le 16/01/2005 à 21:01 | Astucien
1952 Messages
| Toujours très intéressant Paul!
Si j'ai bien compris, je pourais me faire un noyau ultra léger ne contenant presque rien en dur et à l'aide de initrd chargé le reste en fonction de ma distribution?
Un noyau commun ultra léger et un initrd bien configurer pour chacun?
Possible?
-->Lutela, ne t'en fait pas! J'en ai trois et bien souvent je suis dépasser moi aussi...
Logicien est un maître dans l'art [smile]
Modifié par Shaika-Dzari le 16/01/2005 21:03 | | | | | Logicien | Posté le 16/01/2005 à 21:31 | Astucien
2361 Messages
| Disons que le maître a déjà été bête [happy]. Shaika-Dzari, le mieux que tu puisses faire quand tu recompiles les sources du noyau, c'est de mettre dans le noyau que le strict essentiel pour qu'il puisse monter la partition racine sur le disque dur. Quand le noyau peut monter la partition racine de lui-même, sans initrd, il a accès à tous les modules de la vrai partition racine et a tout ce qu'il faut pour réussir le démarrage. Un initrd ne peut offrir mieux.
Le support pour le bus PCI, le port IDE et/ou SCSI, le système de fichiers de la partition racine, les binaires ELF doivent être compilés dans le noyau pour pouvoir se passer d'un initrd. Plusieurs autres choses que je ne peux nommer le doivent aussi. Souvent l'option module n'existe pas. Il faut donc compiler le support dans le noyau quand nécessaire. Quand les trois options [Y], [M] et [ ] existent, il faut lire Help pour mieux comprendre si on doit activer ou non le support et comment, en dur ou en module.
Mais pleins de choses peuvent être mises en modules ou mêmes non compilées parce-qu'elles ne s'appliquent pas. Ça allége le volume du noyau et évite des conflits. C'est une question de goût, moi je préfère mettre en modules tout ce qui est possible, parce-qu'il y a plus de paramètres qu'on peut passer à un support compilé en module que directement dans le noyau. On peut faire "modinfo le_module" pour connaître ces paramètres. Cela implique que l'administrsteur veille à ce que tous les modules nécessaires soient chargés en mémoire, ce que le noyau(2.6) et le fichier de configuration /etc/modprobe.conf ne réussissent pas toujours à faire sans son intervention. Heureusement pour l'administrateur, il y a /etc/modules pour un chargement automatique au démarrage de modules.
Un initrd est de la fantaisie utilisée par les noyaux génériques des distributions qui ne peuvent inclure dans le noyau tout ce qui est nécessaire à toutes les architectures et configurations matérielles sur lesquelles les distributions peuvent s'installer. L'initrd offre au noyau ce complément qui lui permet de démarrer sur n'importe quoi. Cet initrd est peut-être créé après reconnaissance matérielle pour qu'il soit adapté. Je ne sais pas.
Avec un noyau personnalisé, le support pour une seule architecture et configuration matérielle doit être incluse dans le noyau, ce qui est tout-à-fait possible et rend l'initrd tout-à-fait Superflu. Modifié par Logicien le 16/01/2005 21:58 | | | | | sogemat | Posté le 16/01/2005 à 22:14 | Astucien
2440 Messages
| salut logicien,
ce n'est pas la premiere fois que tu repette ca, ca doit devenir commun pour toi.
qu'en est-il au sujet de system.map ?
A+++ | | | | | Logicien | Posté le 17/01/2005 à 00:52 | Astucien
2361 Messages
| Salut sogemat,
pour la procédure qui permet de monter un initrd, je ne me souviens pas de l'avoir abordée pour la simple raison que je ne comprenais pas clairement qu'un initrd doit être décompressé avant de pouvoir être monté.
Pour le System.map, à toutes les fois que je recompile le noyau, même version ou non, je le copie de la racine des sources du noyau vers le Répertoire /boot. Qu'est-ce qu'un System.map? Il me semble qu'il contient l'adresse mémoire ou le noyau doit lire un "system call". Vraiment, si quelqu'un a une meilleure explication, je suis ouvert. Modifié par Logicien le 17/01/2005 00:53 | | | | | sogemat | Posté le 18/01/2005 à 23:32 | Astucien
2440 Messages
| Logicien a écrit :
Un initrd est de la fantaisie utilisée par les noyaux génériques des distributions qui ne peuvent inclure dans le noyau tout ce qui est nécessaire à toutes les architectures et configurations matérielles sur lesquelles les distributions peuvent s'installer. L'initrd offre au noyau ce complément qui lui permet de démarrer sur n'importe quoi. Cet initrd est peut-être créé après reconnaissance matérielle pour qu'il soit adapté. Je ne sais pas.
Avec un noyau personnalisé, le support pour une seule architecture et configuration matérielle doit être incluse dans le noyau, ce qui est tout-à-fait possible et rend l'initrd tout-à-fait Superflu.
|
c'est ca que je voulais dire que tu nous tue à nous dire.
je te présente mes excuses pour n'avoir pas été explicite ; lancé dans ma pensée, j'ai totalemment occulté le post de départ pour me focaliser sur le dernier post ;) | | | | | Logicien | Posté le 19/01/2005 à 01:04 | Astucien
2361 Messages
| Ce que tu cites sogemat, est essentiel à comprendre en matière de compilation du noyau et savoir comment voir le contenu d'un initrd ne peut qu'être bénifique. Je ne radotte pas encore même si je suis perçu à tort par luteola comme un doyen de faculté. Je ne pense pas encore que mes propos soient incompréhensibles. | | | | | abourgeo | Posté le 20/01/2005 à 00:12 | Astucien
1784 Messages
| Logicien, ce que tu présentes là concernant "initrd", c'est top !!!! et limpide dans l'exposé !
Ceci dit, après avoir fait les manips, j'ai une curiosité et une question:
1/ curiosité: je n'ai rien dans /etc de l'initrd !!!???
]# ls
bin dev etc lib linuxrc loopfs proc sbin sys sysroot
# ls ./etc/
#
2/ question: j'me suis déjà amusé à "construire" des "mini-distributions" avec un noyau, un système de fichier basique, quelques commandes de base dans /bin et /sbin, quelques fichiers de config minimalistes, (j'en oublie)......, le tout placé sur une partition dédiée. Après correction du chargeur du démarrage de la machine, il est possible de booter sur cette mini-distrib (qui ne sait rien faire, mais c'est un exercice !!!)
Alors (suite à tes explications), comment est-ce possible que je puisse démarrer cette pseudo-distrib sans "initrd" et sans noyau personnalisé de manière à compenser l'absence de "initrd" ?
si tu as l'explication, suis fortement interessé !!!
merci encore une fois ;-) | | | | | Logicien | Posté le 20/01/2005 à 02:54 | Astucien
2361 Messages
| Alors (suite à tes explications), comment est-ce possible que je puisse démarrer cette pseudo-distrib sans "initrd" et sans noyau personnalisé de manière à compenser l'absence de "initrd" ?
Ton noyau doit, comme je l'ai expliqué plus haut, contenir l'essentiel pour monter la partition racine afin d'accéder aux modules dont il a de besoin pour poursuivre et terminer le démarrage. Si ce n'est pas le cas, tu as le choix de recompiler le noyau, ou utiliser l'initrd qui l'accompagne, ou encore créer un initrd personnalisé avec la commande mkinitrd. | | | | | abourgeo | Posté le 20/01/2005 à 13:14 | Astucien
1784 Messages
| j'me suis mal exprimé Logicien !
actuellement, je réussis bel et bien à booter, or j'ai un noyau "tout à fait conventionnel" et pas de "initrd" dans le Répertoire /boot de la partition réservée à cette "pseudo-distrib-de-test" !!!!!!!!
comment est-ce possible ?
;-) | | | | | Logicien | Posté le 21/01/2005 à 06:45 | Astucien
2361 Messages
| Il est encore plus important se lire le fichier de configuration de ton chargeur concernant l'entrée que tu utilises pour démarrer ce noyau. Tu verras vraiment si un initrd est utilisé ou non et quel noyau précisément est utilisé. Si tu démarres sans initrd, c'est que ton installation Linux est aussi conventionnelle que le noyau qui la démarre. Ce noyau a tout ce qu'il faut pour monter la partition racine et accéder à ses modules. Les modules d'un noyau peuvent être sur une disquette, un cdrom(moins certain), un lecteur flash, un initrd, un disque dur ou même sur le réseau. Les problèmes de démarrages sont beaucoup liés à savoir comment le noyau va accéder aux modules.
Modifié par Logicien le 21/01/2005 06:51 | | | |
| | Haut de la page |
| | Inscrivez-vous ! |
- Posez vos questions
- Résolvez vos problèmes
- Aidez les autres
- Participez et créez vos discussions
- Dialoguez en privé avec d'autres membres
- Suivez vos sujets préférés
- Affichez les signatures des membres
|
|