GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:quando useresti Pivot_root su Switch_root?

Voglio capire meglio il processo di init di Linux per eseguire il netboot di un sistema su ceph anziché su nfs.

Nel processo mi sono imbattuto in due forme di cambio di root. Uno chiamato switch_root e l'altro chiamato pivot_root. Questi script vengono eseguiti da un filesystem in memoria (initramfs) ottenuto tramite tftp utilizzando il processo di avvio pxe.

Quando useresti uno sull'altro? Ho visto entrambi usati in alcuni script di init inseriti nella radice.

Risposta accettata:

Ho trovato una spiegazione meravigliosa qui. Tuttavia, vorrei provare a mettere in un formato più breve quello che ho capito nella risposta.

Versione più breve

  1. Mentre il sistema si avvia, ha bisogno di uno spazio utente iniziale. Può essere
    ottenuto utilizzando initramfs o initrd.
  2. initrd viene caricato in ramdisk che è un vero FILE SYSTEM .
  3. initramfs è non un file system .
  4. Per initrd pivot_root è usato e per initramfs switch_root viene utilizzato.

Versione più lunga

Ora, alla spiegazione dettagliata di ciò che avevo messo sopra.

Sebbene sia un initramfs che un initrd abbiano lo stesso scopo, ci sono
2 differenze. La differenza più ovvia è che un initrd è
caricato in un ramdisk. Consiste in un vero e proprio filesystem (tipicamente
ext2) che viene montato in un ramdisk. Un initramfs, d'altra parte,
non è un filesystem. È semplicemente un archivio cpio (compresso) (di tipo
newc) che viene decompresso in un tmpfs. Questo ha l'effetto collaterale di rendere
l'initramfs un po' più ottimizzato e in grado di caricarsi un po'
prima nel processo di avvio del kernel rispetto a un initrd. Inoltre, la dimensione di
initramfs in memoria è inferiore, poiché il kernel può adattare la
dimensione di tmpfs a ciò che viene effettivamente caricato, piuttosto che fare affidamento su
dimensioni predefinite del ramdisk, e può anche ripulire la ram che è stata
utilizzata mentre i ramdisk tendono a rimanere in uso (a causa dei dettagli dell'implementazione
pivot_root).

C'è anche un'altra differenza di effetti collaterali:come viene gestito il dispositivo di root (e
passare ad esso). Poiché un initrd è un vero e proprio filesystem
decompresso nella ram, il dispositivo di root deve essere effettivamente il ramdisk. Per
un initramfs, esiste un kernel "rootfs" che diventa il tmpfs in cui
viene decompresso l'initramfs (se il kernel carica un initramfs; se
no, allora rootfs è semplicemente il filesystem specificato tramite il parametro di avvio del kernel root=
), ma questo rootfs provvisorio non dovrebbe essere
specificato come parametro di avvio root=(e non ci sarebbe un modo per
farlo, poiché non è collegato alcun dispositivo). Ciò significa che
puoi ancora passare il tuo vero dispositivo root al kernel quando usi un
initramfs. Con un initrd, devi elaborare quello che il vero dispositivo di root
sei tu stesso. Inoltre, poiché il "reale" dispositivo di root con un initrd
è il ramdisk, il kernel deve davvero scambiare i dispositivi di root da un
dispositivo reale (il ramdisk) all'altro (il tuo vero root). Nel caso
di un initramfs, lo spazio initramfs (il tmpfs) non è un dispositivo reale,
quindi il kernel non cambia dispositivo reale. Pertanto, mentre il comando
pivot_root viene utilizzato con un initrd, è necessario utilizzare un comando diverso
per un initramfs. Busybox fornisce switch_root per ottenere ciò,
mentre klibc offre new_root.


Linux
  1. 11 modi sorprendenti in cui usi Linux ogni giorno

  2. Quale soluzione di backup open source usi?

  3. Quando usare pthread_exit() e quando usare pthread_join() in Linux?

  4. Perché qualcuno dovrebbe scegliere FreeBSD su Linux?

  5. Su un server Linux come si utilizzano più terminali su una singola connessione ssh?

Come utilizzare Linux Time Command:tutto ciò che devi sapere

7 motivi per cui uso Manjaro Linux e dovresti farlo anche tu

Quanto swap dovresti usare in Linux?

Per quale carico di lavoro hai utilizzato per la prima volta i container Linux?

Tre comandi Linux che non dovresti mai usare

Le 5 distribuzioni Linux più belle che ti consigliamo di utilizzare