Creación del sistema de archivos Linux integrado con busybox

  

Resumen Busybox es una herramienta imprescindible para crear sistemas de archivos Linux integrados. Este artículo toma la última versión 1.00 de busybox como ejemplo para introducir la configuración e instalación de este software, así como la preparación de otros archivos de script necesarios para construir el sistema de archivos.

Palabras clave busybox Script de inicio del sistema de archivos de Linux incorporado

1busybox Introducción Las personas que están familiarizadas con Linux integrado no estarán familiarizadas con busybox. Es muy llamado "Swiss Army Knife" en sistemas Linux incrustados porque combina muchos comandos y herramientas UNIX comunes en un solo ejecutable. Aunque en comparación con las herramientas GNU correspondientes, busybox proporciona un poco menos de funcionalidad y parámetros, pero en sistemas más pequeños (como discos de arranque) o sistemas integrados, es suficiente. El busybox está diseñado con un entorno de trabajo especial limitado por los recursos de hardware. Utiliza una forma inteligente de reducir su tamaño: todos los comandos se agrupan en un archivo ejecutable por medio de "complementos", que están determinados por diferentes enlaces simbólicos en el proceso de aplicación real. . Por ejemplo, el archivo ejecutable final generado es busybox. Cuando se crea un enlace simbólico ls para él, la función del directorio de la columna se puede implementar ejecutando este nuevo comando. El uso de un único archivo ejecutable para maximizar el uso compartido del código del programa, incluso el encabezado del archivo, el bloque de control de memoria y otros recursos del sistema operativo se comparten, para sistemas con recursos limitados, es realmente El más adecuado. En el proceso de compilación de busybox, es muy conveniente agregar o restar su "plug-in", el último enlace simbólico también puede ser generado automáticamente por el sistema del compilador. Aquí está un paso a paso para construir un nuevo sistema de archivos Linux desde cero con busybox. 2 Compilación de busybox A mediados de octubre de 2004, finalmente se lanzó la versión estable de busybox 1.00. El código fuente completo se puede descargar de http://www.busybox.net, y el tamaño del paquete comprimido es de aproximadamente 1.3 MB. Después de descomprimir el código fuente, vaya al directorio busybox1.00 y ejecute make menuconfig para abrir su interfaz de compilación. Esta interfaz es algo similar a la compilación del kernel de Linux, como se muestra en la Figura 1. Además de la elección de comandos que finalmente se compilan en el ejecutable, hay muchas otras configuraciones que son importantes en esta interfaz de menú. Los siguientes tres directorios son de interés para muchas personas: Opciones de compilación --- > Opciones de instalación --- > Utilidades de administración de contraseñas /inicio de sesión --- > En las opciones de compilación, hay una opción para usar la compilación cruzada ¿Quieres construir BusyBox con un compilador cruzado). Si desea compilar otras plataformas, debe seleccionarlo y establecer el prefijo del compilador correspondiente. En las Opciones de instalación puede establecer la ruta de instalación, que se establece en el directorio raíz del nuevo sistema de archivos. Por supuesto, también puede usar el directorio predeterminado _instalar, y luego copiarlo al nuevo sistema de archivos después de la instalación. Al configurar las Utilidades de administración de inicio de sesión /contraseña, para evitar la molestia de configurar glibc, es mejor utilizar el uso de funciones de contraseña y grupo en lugar de funciones del sistema. Los comandos proporcionados por busybox son, sin duda, completos, pero su configuración predeterminada no constituye un sistema de archivos completamente funcional. Los comandos que deben agregarse son getty, login y passwd en las Utilidades de administración de inicio de sesión /contraseña, que fueron proporcionadas anteriormente por otro paquete, tinylogin. Por supuesto, estos comandos también se pueden eliminar si no necesita una interfaz de inicio de sesión interactiva. Al establecer el parámetro del kernel init = /bin /sh, puede obtener un shell directamente después de que el sistema comience a compilar la interfaz de configuración de 1busybox. El comando tlenetd es un programa de servicio de inicio de sesión remoto. La compilación en el busybox proporcionará una gran comodidad para la depuración futura. Por supuesto, el dispositivo integrado también se puede administrar a través del terminal serial, pero la forma de inicio de sesión en la red es más conveniente. Después de configurar, guardar, salir, ejecutar make, make install command, busybox creará /usr, /bin, /sbin y otros directorios en el futuro sistema de archivos raíz. Puede ver el enlace simbólico entre el ejecutable de busybox compilado y otros comandos de la aplicación. El tamaño típico del archivo busybox es de unos 300 KB en el caso de enlaces dinámicos y de unos 800 KB en enlaces estáticos. El sistema de archivos implementado por él puede controlarse a menos de 1 MB. Pero hasta ahora, lo que no es un sistema de archivos utilizable completo, debemos agregar algunos archivos necesarios sobre esta base para que funcione. 3 mejorar el sistema de archivos 3.1 la necesidad de aumentar la referencia del archivo a un sistema Linux normal encontrará que al sistema de archivos creado por busybox aún le faltan muchos archivos. Las siguientes tres líneas de comandos establecen algunos de los directorios incluidos en los sistemas UNIX comunes. Aunque no todos son necesarios, es más estándar construirlos. Estos comandos se ejecutan en el directorio raíz del nuevo sistema de archivos, y la ejecución del tercer comando también debe tener privilegios de raíz. Mkdir mnt root var tmp proc boot etc libmkdir /var /{lock, log, mail, run, spool} chown 0: 0R * Si busybox se compila con enlaces dinámicos, también necesita la biblioteca dinámica requerida por busybox: libcrypt. So.1, libc.so.6, ldlinux.so.2 se colocan en el directorio lib. Es mejor crear los archivos y enlaces apropiados de manera estándar. Consulte la siguiente lista: -rwxrwxrwx 192519ld-2.3.2.solrwxrwxrwx 111ld-linux.so.2 - &g; ld-2.3.2.so-rwxrwxrwx 1 1190032libc- 2.3.2.solrwxrwxrwx 113libc.so.6 - > libc-2.3.2.so-rwxr-xr-x 118348libcrypt-2.3.2.solrwxrwxrwx 117libcrypt.so.1 - > libcrypt-2.3.2.so3.2 Escribir archivos en la carpeta etc La carpeta etc es donde se guardan muchos archivos de configuración del sistema. Estos archivos son muy importantes y pueden afectar el inicio del sistema si están mal configurados. El archivo en el directorio de ejemplo de código fuente de busybox /bootfloopy /etc es un ejemplo simple, y los archivos se pueden copiar como base.
(También vale la pena leer algunos scripts y la documentación en el directorio de ejemplo /bootfloopy). Primero, el archivo inittab es el primer archivo de script al que se accede después de que se inicia el sistema, y ​​los archivos subsiguientes se especifican. El formato de este archivo es diferente del de inicio en Linux de computadora común. El significado específico puede referirse a la documentación de busybox. Aquí hay un ejemplo simple: :: sysinit: /etc/init.d/rcStty0 :: respawn: /sbin /getty 38400 tty0tty2 :: askfirst: /bin /sh :: ctrlaltdel: /sbin /reboot :: shutdown: /bin /umount ar :: shutdown: /bin /mount /o remount, donde la primera línea especifica el script de inicio del sistema como /etc/init.d/rcS; la segunda línea especifica que se abre el primer terminal virtual Sesión de inicio de sesión; la tercera línea especifica que un tercer terminal virtual abre un shell sin autenticación de inicio de sesión; la cuarta línea especifica el comando de ejecución cuando se presiona la combinación de teclas ctrl + alt + del; las dos últimas líneas especifican la ejecución cuando se realiza el apagado. La operación El archivo fstab define los diversos "puntos de montaje" del sistema de archivos que deben coincidir con el sistema real. Un archivo fstab simple es el siguiente: proc /procprocdefaults00 /dev /hda1 /ext2rw, noauto01devpts /dev /ptsdevptsdefaults00 La tercera línea es para PTY de UNIX y se usa telnetd.

Copyright © Conocimiento de Windows All Rights Reserved