GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Quand utiliseriez-vous Pivot_root sur Switch_root ?

Je souhaite mieux comprendre le processus d'initialisation de Linux afin de démarrer un système sur ceph plutôt que sur nfs.

Au cours du processus, j'ai rencontré deux formes de changement de racine. L'un appelé switch_root et l'autre appelé pivot_root. Ces scripts sont exécutés à partir d'un système de fichiers en mémoire (initramfs) obtenu via tftp à l'aide du processus de démarrage pxe.

Quand utiliseriez-vous l'un plutôt que l'autre ? J'ai vu les deux utilisés dans certains scripts d'initialisation placés à la racine.

Réponse acceptée :

J'ai trouvé une merveilleuse explication ici. Cependant, permettez-moi d'essayer de mettre dans un format plus court ce que j'ai compris dans la réponse.

Version plus courte

  1. Pendant que le système démarre, il a besoin d'un espace utilisateur précoce. Cela peut être
    réalisé en utilisant initramfs ou initrd.
  2. initrd est chargé dans le disque virtuel qui est un réel SYSTÈME DE FICHIERS .
  3. initramfs n'est pas un système de fichiers .
  4. Pour initrd pivot_root est utilisé et pour initramfs switch_root est utilisé.

Version plus longue

Passons maintenant à l'explication détaillée de ce que j'avais mis ci-dessus.

Bien qu'un initramfs et un initrd aient le même objectif, il y a
2 différences. La différence la plus évidente est qu'un initrd est
chargé dans un disque virtuel. Il se compose d'un système de fichiers réel (généralement
ext2) qui est monté sur un disque virtuel. Un initramfs, en revanche,
n'est pas un système de fichiers. Il s'agit simplement d'une archive cpio (compressée) (de type
newc) qui est décompressée dans un fichier tmpfs. Cela a pour effet secondaire de rendre
l'initramfs un peu plus optimisé et capable de se charger un peu
plus tôt dans le processus de démarrage du noyau qu'un initrd. De plus, la taille
des initramfs en mémoire est plus petite, car le noyau peut adapter la taille
des tmpfs à ce qui est réellement chargé, plutôt que de s'appuyer sur
des tailles de disque mémoire prédéfinies, et il peut également nettoyer la RAM qui était
utilisée alors que les disques RAM ont tendance à rester utilisés (en raison des détails de l'implémentation
de pivot_root).

Il existe également une autre différence d'effet secondaire :la façon dont le périphérique racine (et
le passage à celui-ci) est géré. Puisqu'un initrd est un système de fichiers réel
décompressé dans la RAM, le périphérique racine doit en fait être le disque RAM. Pour
un initramfs, il existe un noyau "rootfs" qui devient le tmpfs dans lequel
l'initramfs est décompressé (si le noyau charge un initramfs ; si
ce n'est pas le cas, alors le rootfs est simplement le système de fichiers spécifié via le paramètre de démarrage du noyau root=
), mais ce rootfs intermédiaire ne doit pas
être spécifié comme paramètre de démarrage root=(et il n'y aurait aucun moyen de le faire, puisqu'aucun appareil n'y est connecté). Cela signifie que vous
pouvez toujours transmettre votre véritable périphérique racine au noyau lorsque vous utilisez un
initramfs. Avec un initrd, vous devez traiter vous-même quel est le véritable périphérique racine
. De plus, puisque le « vrai » périphérique racine avec un initrd
est le disque virtuel, le noyau doit vraiment basculer les périphériques racine d'un
périphérique réel (le disque virtuel) à l'autre (votre véritable racine). Dans le cas
d'un initramfs, l'espace initramfs (le tmpfs) n'est pas un vrai périphérique,
donc le noyau ne change pas de vrais périphériques. Ainsi, alors que la commande
pivot_root est utilisée avec un initrd, une commande différente doit être utilisée
pour un initramfs. Busybox fournit switch_root pour accomplir cela,
tandis que klibc propose new_root.


Linux
  1. Quel âge aviez-vous lorsque vous avez commencé à utiliser Linux ?

  2. Explication des types de système de fichiers Linux, lequel devez-vous utiliser

  3. Antivirus sur Linux :dois-je vraiment l'utiliser et si oui, quand en ai-je besoin ?

  4. Meilleurs clients Torrent que vous pouvez utiliser sur le bureau Linux

  5. Trois commandes Linux que vous ne devriez jamais utiliser

Comment utiliser Linux Time Command :tout ce que vous devez savoir

7 raisons pour lesquelles j'utilise Manjaro Linux et vous devriez aussi

Quelle quantité d'échange devriez-vous utiliser sous Linux ?

Les 5 meilleures distributions Linux que nous vous recommandons d'utiliser

Comment utiliser les expressions régulières avec la commande cp sous Linux ?

Sur un serveur Linux, comment utilisez-vous plusieurs terminaux sur une seule connexion ssh ?