GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿cuándo usaría Pivot_root sobre Switch_root?

Quiero comprender mejor el proceso de inicio de Linux para iniciar un sistema en red sobre ceph en lugar de nfs.

En el proceso me he encontrado con dos formas de cambiar de raíz. Uno llamado switch_root y el otro llamado pivot_root. Estos scripts se ejecutan desde un sistema de archivos en memoria (initramfs) obtenido a través de tftp mediante el proceso de arranque pxe.

¿Cuándo usarías uno sobre el otro? He visto que ambos se usan en algunos scripts de inicio colocados en la raíz.

Respuesta aceptada:

Encontré una maravillosa explicación aquí. Sin embargo, permítanme tratar de poner en un formato más corto de lo que entendí en la respuesta.

Versión más corta

  1. Mientras el sistema arranca, necesita un espacio de usuario temprano. Se puede
    lograr mediante initramfs o initrd.
  2. initrd se carga en ramdisk que es un verdadero SISTEMA DE ARCHIVO .
  3. initramfs es no un sistema de archivos .
  4. Para initrd pivot_root se utiliza y para initramfs switch_root se utiliza.

Versión más larga

Ahora, a la explicación detallada de lo que había puesto arriba.

Mientras que tanto un initramfs como un initrd tienen el mismo propósito, hay
2 diferencias. La diferencia más obvia es que un initrd se carga en un ramdisk. Consiste en un sistema de archivos real (típicamente
ext2) que está montado en un ramdisk. Un initramfs, por otro lado,
no es un sistema de archivos. Es simplemente un archivo cpio (comprimido) (de tipo
newc) que se desempaqueta en un archivo tmpfs. Esto tiene el efecto secundario de hacer
que initramfs sea un poco más optimizado y capaz de cargarse un poco
antes en el proceso de arranque del núcleo que un initrd. Además, el tamaño de
initramfs en la memoria es más pequeño, ya que el núcleo puede adaptar el tamaño de
tmpfs a lo que realmente se carga, en lugar de depender de los tamaños de disco ram
predefinidos, y también puede limpiar la ram que se
usó, mientras que los ramdisks tienden a permanecer en uso (debido a los detalles de la
implementación de pivot_root).

También hay otra diferencia de efectos secundarios:cómo se maneja el dispositivo raíz (y
cambiar a él). Dado que un initrd es un sistema de archivos real
desempaquetado en ram, el dispositivo raíz debe ser en realidad el ramdisk. Para
un initramfs, hay un kernel "rootfs" que se convierte en el tmpfs en el que
se desempaqueta el initramfs (si el kernel carga un initramfs; si
no, entonces el rootfs es simplemente el sistema de archivos especificado a través del parámetro de arranque del kernel root=
), pero este rootfs provisional no debe
especificarse como el parámetro de arranque root=(y no habría forma de
hacerlo, ya que no hay ningún dispositivo conectado). Esto significa que
aún puede pasar su dispositivo raíz real al kernel cuando usa un
initramfs. Con un initrd, debe procesar usted mismo cuál es el dispositivo raíz real
. Además, dado que el dispositivo raíz "real" con un initrd
es el ramdisk, el kernel realmente tiene que cambiar los dispositivos raíz de un
dispositivo real (el ramdisk) al otro (su raíz real). En el caso
de un initramfs, el espacio initramfs (el tmpfs) no es un dispositivo real,
por lo que el kernel no cambia los dispositivos reales. Por lo tanto, mientras que el comando
pivot_root se usa con un initrd, se debe usar un comando diferente
para un initramfs. Busybox proporciona switch_root para lograr esto,
mientras que klibc ofrece new_root.


Linux
  1. ¿Para qué carga de trabajo usó contenedores de Linux por primera vez?

  2. Tres comandos de Linux que nunca debes usar

  3. ¿Cuándo sería útil Yum para un usuario de Ubuntu?

  4. ¿Cuándo usar pthread_exit() y cuándo usar pthread_join() en Linux?

  5. ¿Por qué alguien elegiría FreeBSD sobre Linux?

Cómo usar el comando de tiempo de Linux:todo lo que necesita saber

7 razones por las que uso Manjaro Linux y tú también deberías hacerlo

¿Cuánto intercambio debería usar en Linux?

Las 5 mejores distribuciones de Linux que te recomendamos usar

¿Cómo usa expresiones regulares con el comando cp en Linux?

Apague mi disco duro (respaldo) en Linux cuando no lo use