Question

Je suis en train d'étudier le processus de démarrage sous Linux. Je suis tombé sur cette phrase « RAM est de plusieurs ordres de grandeur plus rapide qu'un disque de disquette, de sorte que le fonctionnement du système est rapide à partir d'un disque virtuel »

Le noyau se chargera de toute façon le système de fichiers racine dans la RAM pour l'exécuter. Donc, ma question pourquoi avons-nous besoin d'un disque virtuel pour charger le système de fichiers racine, si le chargement du noyau du système de fichiers racine dans la RAM?

Était-ce utile?

La solution

Le pour SUSE Linux fournit un bon explication des raisons pour lesquelles Linux est démarré avec un disque virtuel:

  

Dès que le noyau Linux a été   botté et le système de fichiers racine (/)   montés, les programmes peuvent être exécutés et   d'autres modules de noyau peuvent être   intégré pour fournir plus   les fonctions. Pour monter le fichier racine   système, certaines conditions doivent être   rencontré. Le noyau a besoin du   pilotes correspondant pour accéder à la   dispositif sur lequel le système de fichiers racine   est situé (en particulier SCSI   Conducteurs). Le noyau doit également contenir   le code nécessaire pour lire le fichier   système (ext2, ReiserFS, romfs, etc.).   Il est également concevable que la racine   système de fichiers est déjà chiffré. Dans   ce cas, un mot de passe est nécessaire pour   monter le système de fichiers.

     

Pour le problème des pilotes SCSI, un   nombre de solutions différentes sont   possible. Le noyau peut contenir tous   pilotes imaginables, mais cela pourrait être   un problème parce que les conducteurs différents   pourrait entrer en conflit les uns avec les autres. Aussi,   le noyau deviendrait très grand   à cause de ce. Une autre possibilité   est de fournir des noyaux différents, chacun   un contenant seulement un ou quelques disques SCSI   Conducteurs. Cette méthode a le problème   qu'un grand nombre de différents   les noyaux sont nécessaires, un problème,   augmenté du optimisée différemment   noyaux (optimisation Athlon, SMP).    L'idée de charger le pilote SCSI comme   un module de conduit au problème général   résolu par le concept d'une première   ramdisk: l'exécution des programmes de l'espace utilisateur   même avant que le système de fichiers racine est   monté.

Cela permet d'éviter une situation potentielle de la poule ou l'œuf où ne peut pas être chargé le système de fichiers racine jusqu'à ce que le périphérique sur lequel il se trouve est accessible, mais que l'appareil ne peut pas être accessible jusqu'à ce que le système de fichiers racine a été chargé:

  

Le disque virtuel initial (également appelé initdisk ou initrd) permet de résoudre précisément les problèmes décrits ci-dessus. Le noyau Linux fournit une possibilité d'avoir un petit système de fichiers chargé à un programme disque et en cours d'exécution RAM il avant que le système de fichiers racine réelle est monté. Le chargement de initrd est assurée par le chargeur de démarrage (GRUB, LILO, etc. .). chargeurs de démarrage seulement besoin routines BIOS pour charger des données à partir du support de démarrage. Si le chargeur de démarrage est en mesure de charger le noyau, il peut également charger le disque virtuel initial. pilotes spéciaux ne sont pas nécessaires.

Bien sûr, un RAMDisk est pas strictement nécessaire pour le processus de démarrage ait lieu. Par exemple, vous pouvez compiler un noyau qui contient tous les pilotes matériels nécessaires et les modules à charger au démarrage. Mais apparemment, cela est trop de travail pour la plupart des gens, et le RAMDisk avéré être une simple solution plus évolutive.

Autres conseils

La raison pour laquelle la plupart des distributions Linux utilisent un ramfs (initramfs) lors du démarrage, parce que son contenu peut être inclus dans le fichier du noyau, ou fourni par le bootloader. Ils sont donc immédiatement disponibles au démarrage, sans le noyau avoir à les charger de quelque part.

Cela permet au noyau de programmes d'exécution userspace que par exemple périphériques, configure les modules de charge, la configuration que matrice RAID nifty qui contient tous les systèmes de fichiers ou même demander à l'utilisateur le mot de passe à son système de fichiers racine cryptée.

Lorsque cette configuration est terminée, le premier script qui est appelé juste exec () s / sbin / init du (maintenant configuré et disponible) système de fichiers racine.

J'ai vu quelques systèmes où les pilotes themselvess pour les contrôleurs de disque et les rootfs sont chargés via des modules dans un initramfs, plutôt que d'être inclus dans l'image du noyau.

Vous n'avez pas strictement besoin un initramfs à démarrage - si l'image de votre noyau contient tous les pilotes nécessaires pour accéder aux rootfs et vous ne nécessite aucune configuration ou l'entrée d'utilisateur spécial (comme les tableaux RAID ou crypté systèmes de fichiers) pour le monter, il est souvent possible de démarrer directement / sbin / init des rootfs.

Voir aussi:

http://www.kernel.org/doc/ documentation / filesystems / ramfs-rootfs-initramfs.txt

http://www.kernel.org/doc/Documentation/initrd.txt

Comme une note de côté, certains systèmes (disques de secours, embarqués et autres) peuvent utiliser un ramfs comme système de fichiers racine lorsque le système de fichiers racine réelle est dans un milieu qui peut être retiré ou non inscriptibles (CD, Flash DMT, etc.) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top