> Tous les forumsLinux

 Étapes pour voir le contenu d'un initrd
Statut du sujet : NON RESOLU Imprimer
 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 ~ }
 Afficher le profil de Logicien Envoyer un message privé à Logicien
 
 
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+
Afficher le profil de luteola Voir la configuration de luteola
  Revenir en haut de la page
 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
Afficher le profil de Shaika-DzariEnvoyer un message privé à Shaika-Dzari
 Revenir en haut de la page
 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
Afficher le profil de Logicien Voir la configuration de LogicienEnvoyer un message privé à Logicien
 Revenir en haut de la page
 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+++
Afficher le profil de sogematEnvoyer un message privé à sogemat
 Revenir en haut de la page
 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
Afficher le profil de Logicien Voir la configuration de LogicienEnvoyer un message privé à Logicien
 Revenir en haut de la page
 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 ;)
Afficher le profil de sogematEnvoyer un message privé à sogemat
 Revenir en haut de la page
 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.
Afficher le profil de Logicien Voir la configuration de LogicienEnvoyer un message privé à Logicien
 Revenir en haut de la page
 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 ;-)
Afficher le profil de abourgeoEnvoyer un message privé à abourgeo
 Revenir en haut de la page
 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.
Afficher le profil de Logicien Voir la configuration de LogicienEnvoyer un message privé à Logicien
 Revenir en haut de la page
 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 ? ;-)
Afficher le profil de abourgeoEnvoyer un message privé à abourgeo
 Revenir en haut de la page
 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
Afficher le profil de Logicien Voir la configuration de LogicienEnvoyer un message privé à Logicien
 Revenir en haut de la page
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

TOUT EST GRATUIT !

Je crée mon compte




Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !
 

 > Tous les forumsLinux

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page