Sistema de archivos cargando durante el proceso de arranque de Linux

  

Prólogo: Creo que mi artículo es relativamente simple. Algunos principiantes pueden echar un vistazo, es por eso que no estoy publicando en la versión incorporada. Para el maestro, si no tienes tiempo, la esperanza puede ayudarme a ver y dar indicaciones a los errores. Este es también el propósito de mi venida aquí para comunicarme con ustedes.

Una vez completado el controlador del módulo, se monta el sistema de archivos. Siempre pensé: compilé el kernel utilizando el modo initrd, el dispositivo se carga en el script /linuxrc bajo el sistema de archivos RAM DISK, por lo que se pierde mucho tiempo en esto. Sin embargo, hay una comprensión más profunda de initrd, y esperaré un minuto. De hecho, el primer sistema de archivos montado por el kernel es root.cramfs en nand flash. El código relacionado con el montaje mount_root () está en el archivo /fs/super.c. Luego, monte el sistema de archivos devcie bajo el directorio /dev con el código mount_devfs_fs (). Debido a que se usa el modo no interno, el montaje del sistema de archivos se completa, el proceso de inicio continúa hacia abajo hasta que se ejecuta:

si (execute_command) execve (execute_command, argv_init, envp_init); aquí el interruptor de inicio En otro hilo, el programa en ejecución se define en execute_command. Execute_command es la línea de comando que se pasa a vivi. Puede verlo durante el inicio: Línea de comando del kernel: noinitrd root = /dev /bon /2 init = /linuxrc console = ttyS0, por lo tanto, execute_command corresponde a /linuxrc, por lo que el programa ejecuta el script en el directorio raíz. Linuxrc, en mi sistema corresponde: #! /Bin /shecho " mount /etc como ramfs " /bin /mount -n -t ramfs ramfs /etc /bin /cp -a /mnt /etc /* /etcecho " volver a crear las entradas /etc /mtab " /bin /mount -f -t cramfs -o remount, ro /dev /mtdblock /3 //bin /mount -f -t ramfs ramfs /etcexec /sbin /init No explicaré (lo último es iniciar bash), puede montar root.cramfs bajo linux bajo /mnt para ver el contenido que debe saber:

mount – t cramfs – o root. Cramfs /mnt /cramfs aquí realmente quiere decirles a todos, cómo implementamos el arranque automáticamente cargamos algunos programas en ejecución, ahora debería estar muy claro, escribir un script está bien.
(De hecho, he estado en el problema de yy antes) Finalmente, no voy a hablar sobre el principio de initrd (initail ram disk), clichés y muchos en línea. Entiendo que entiendo que initrd contiene algunos de los controladores del módulo, que comparten el tamaño del kernel en cierta medida, porque ambos deben cargarse en la memoria al mismo tiempo que se inician, por lo que, lo que es más importante, pueden Para garantizar la portabilidad del kernel, siempre que se proporcionen diferentes sistemas de archivos initrd para diferentes plataformas de hardware, el kernel puede permanecer sin cambios. Por lo tanto, la función principal de initrd es cargar algún hardware complejo relacionado con la plataforma, como discos duros SCSI, controladores de tarjetas de red (como estaciones de trabajo sin disco, usando nfs).

Copyright © Conocimiento de Windows All Rights Reserved