Proceso de inicialización del sistema de archivos de Linux (6) --- ejecute el programa init

Primero, el propósito

    Una vez que el núcleo carga el archivo initrd, se realizan los preparativos necesarios para montar el sistema de archivos de disco, incluido el montaje de los sistemas de archivos sysfs y proc, y la carga del controlador del controlador de disco. A continuación, el kernel salta al programa init en el espacio de usuario e init completa la creación de los archivos del dispositivo de disco, carga el sistema de archivos del disco y cambia de rootfs al sistema de archivos raíz del disco.

    Debido a que en diferentes distribuciones de Linux, la implementación de init es muy diferente y es imposible analizar todas las distribuciones, este artículo selecciona la distribución ubuntu12.04 para describir cómo cambiar de rootfs al sistema de archivos raíz del disco.

 

En segundo lugar, cree un archivo de dispositivo de disco

    El programa init usa la herramienta udev para crear dinámicamente archivos de dispositivo de disco. El principio de funcionamiento de udev es crear los archivos de dispositivo correspondientes en el directorio / dev de acuerdo con la información del dispositivo en sysfs, por lo que el sistema de archivos sysfs debe prepararse con anticipación.

    Primero, cree los directorios de punto de montaje necesarios / dev, / root, / sys, / proc, etc .; luego, monte el sysfs en el VFS en el directorio / sys de rootfs y monte el tmpfs en el directorio / dev ( / El tipo de sistema de archivos de dev es tmpfs); finalmente, para generar la información de impresión, se crean dos archivos de dispositivo especiales de / dev / console y / dev / null.

    Una vez preparada la información necesaria, se puede iniciar el proceso en segundo plano de udev y udev puede crear dinámicamente el archivo del dispositivo de disco según sysfs. El código de inicio de Udev está en scripts / init-top / udev.

 

 

 

Tres, monte el sistema de archivos del disco

    Por lo general, hay dos formas de montar un sistema de archivos de disco: modo local y modo de red. Según el valor de la variable BOOT, init elige realizar carga local o carga de red, si es carga local, ejecuta el script / scripts / local; si es carga de red, ejecuta el script / scripts / nfs. Las PC personales generalmente se cargan localmente y los servidores en los centros de datos generalmente se cargan mediante nfs.

    Finalmente, el programa init llama al script / scripts / local para montar el sistema de archivos del disco.

 

 

Cuarto, cambie el sistema de archivos raíz

    Después de montar correctamente el sistema de archivos de disco, debe migrar directorios importantes como / sys, / proc y / dev bajo rootfs al sistema de archivos de disco.

    Finalmente, el sistema de archivos raíz del kernel se cambia de rootfs al directorio raíz del sistema de archivos del disco llamando al programa / sbin / run-init.

 

 

Cinco, la vista final de VFS

    Hasta ahora, el proceso de inicialización del sistema de archivos del kernel se ha completado. La vista final de VFS se muestra a continuación (debido a que el sistema de archivos es demasiado grande, solo se proporciona la estructura topológica clave):

 

Seis, resumen

    El trabajo principal del programa init es cargar el sistema de archivos de disco, migrar directorios importantes bajo rootfs al sistema de archivos de disco y finalmente cambiar el directorio raíz del kernel de rootfs al directorio raíz del sistema de archivos de disco.

 

Supongo que te gusta

Origin blog.csdn.net/daocaokafei/article/details/114873134
Recomendado
Clasificación