Notas de estudio de Xunwei 4412: compile e instale el sistema de archivos Linux más pequeño

Entorno experimental: máquina física Ubuntu20.04/Windows 10 21H2

1. Cree e instale un sistema de archivos Linux mínimo

1.1 compilar arranque

Copie las siguientes tres carpetas en el directorio del mismo nivel de Ubuntu:

 

Una vez completada la copia, como se muestra en la figura:

 

Use el siguiente comando para descomprimir el código fuente de uboot:

tar -vxf iTop4412_uboot_20180320.tar.gz

Una vez completada la descompresión, se verá así:

 

Puede compilar el código fuente de uboot usando el script "build_uboot.sh" en la carpeta de código fuente iTop4412_uboot. Durante la compilación, los siguientes parámetros deben configurarse de acuerdo con el modelo de placa:

clasificación de hardware

Parámetros de ejecución de scripts

Placa base SCP, memoria 1G

SCP_1GDDR

Placa base SCP, memoria 2G

SCP_2GDDR

Tablero central POP, memoria 1G

POP_1GDDR

Tablero central POP, memoria 2G

POP_2GDDR

La placa de desarrollo utilizada por el autor es la placa central SCP con memoria 1G, por lo que el parámetro utilizado al compilar es "SCP_1GDDR", ingrese al directorio iToop4412_uboot y use el siguiente comando para completar la compilación de uboot:

./build_uboot.sh SCP_1GDDR

Una vez completada la compilación, como se muestra en la figura

 

El archivo u-boot-iTop-4412.bin compilado se encuentra en el directorio iTop4412_uboot, como se muestra en la figura:

 

 

1.2 Compilar el kernel de Linux

Primero copie el código fuente del kernel iTop4412_Kernel_3.0_20191007.tar.gz a Ubuntu, como se muestra en la figura

 

Luego use el siguiente comando para descomprimir:

tar -vxf iTop4412_Kernel_3.0_20191007.tar.gz

Una vez completada la descompresión, se verá así:

 

Luego ingrese al directorio "iTop4412_Kernel_3.0" para configurar el kernel compilado.

 

Si necesita compilar el kernel para el sistema Linux más pequeño, debe seleccionar el archivo de configuración de config_for_linux*. Si está compilando el kernel para Android, seleccione config_for_android*. Lo mismo es cierto para otros sistemas, donde elite significa elite version y super significa la versión completa.

Tome el kernel requerido para compilar el sistema mínimo de Linux como ejemplo. Dado que el autor usa la versión élite de SCG1G, se debe usar el siguiente comando para configurar el archivo .config:

cp config_for_linux_scp_elite .config

Una vez completado, use el siguiente comando para compilar el kernel:

hacer zImagen

Se mide que el sistema Ubuntu20.04 LTS encontrará errores causados ​​por problemas de versión durante la compilación, como se muestra en la figura

 

Solución: de acuerdo con el directorio de errores, busque el archivo timeconst.pl, ingrese y busque la oración definida(@array), ignore la definida de acuerdo con el indicador entre paréntesis y configure:

si (!definido(@val)) {

Cambiar a:

si (!(@val)) {

El proceso detallado es el siguiente: En el directorio del kernel iTop4412_Kernel_3.0, use el siguiente comando para editar el archivo timeconst.pl:

vim /kernel/timeconst.pl

Luego salte al número de líneas incorrectas, aquí hay 373, use el siguiente comando en vim para saltar:

373gg

Después de completar el salto, como se muestra en la figura:

 

Después de la modificación, como se muestra en la figura:

 

Luego guarde y salga, vuelva a compilar, como se muestra en la figura después de completar la compilación:

 

El archivo zImage generado está en el directorio ./arch/arm/boot, como se muestra en la figura

 

1.3 Descargar y configurar Busybox

La producción del sistema de archivos de Linux más pequeño se puede completar utilizando la caja de herramientas de código abierto Busybox. Busybox es un software que integra más de cien de los comandos y herramientas de Linux más utilizados, incluidos los comandos de shell de uso común. Su sitio web oficial es:

https://busybox.net/

Abra el sitio web oficial, como se muestra en la figura, la última versión es 1.35.0

 

Después de descargar, copie a Ubuntu, como se muestra en la figura:

 

Use el siguiente comando para descomprimir:

tar -vxf caja ocupada-1.35.0.tar.bz2

Una vez completada la descompresión, como se muestra en la figura

 

Vaya al directorio busybox-1.35.0 generado por descompresión y luego use el siguiente comando

hacer menuconfig

Puede configurar el sistema de archivos de Linux. La medida real de Ubuntu 20.04 LTS mostrará el siguiente error:

 

Esto se debe a que el sistema Ubuntu carece de un paquete ncurses devel, use el siguiente comando para instalarlo:

apt instalar libncurses5-dev

Después de completar, use make menuconfig nuevamente para ingresar a la interfaz de configuración del menú de buybox, como se muestra en la figura

 

Luego, ingrese al directorio Configuración, desplácese hacia abajo y busque el "Prefijo del compilador cruzado" en "---Opciones de compilación" para configurar el compilador cruzado.

 

Aquí, tome el compilador cruzado "arm-none-linux-gnueabi-" instalado anteriormente como ejemplo, presione Entrar para ingresar "Prefijo del compilador cruzado", ingrese "arm-none-linux-gnueabi-" en el cuadro de edición y luego seleccione "OK" OK, como se muestra en la figura:

 

A continuación, configure el directorio de instalación del sistema de archivos para Busybox, que por defecto es el directorio "_install" de la carpeta actual, como se muestra en la figura:

 

Aquí, cree un directorio del sistema de archivos fuera del directorio busybox-1.35.0 para que busybox instale el sistema de archivos, por lo que debe cambiar "./_install" a "../filesystem", como se muestra en la figura:

 

Luego seleccione "Ok" y guarde para salir, como se muestra en la figura, seleccione "Sí".

 

1.4 Mejorar el sistema de archivos mínimo de Linux

Como se muestra en la figura, cree un directorio de sistema de archivos en el mismo directorio que busybox-1.35.0.

 

Luego, complete los archivos requeridos por el sistema Linux mínimo en el sistema de archivos, de la siguiente manera:

Use el siguiente comando para crear una serie de carpetas en el sistema de archivos:

mkdir dev etc lib mnt proc sys tmp var

Después de la finalización, como se muestra en la figura

 

Luego, ingrese al directorio etc recién creado y use los siguientes comandos para crear las carpetas init.d y rc.d

mkdir init.d rc.d

Después de completar, como se muestra en la figura:

 

Luego ingrese la carpeta rc.d recién creada y use el siguiente comando para crear la carpeta init.d

mkdir init.d

Después de completar, como se muestra en la figura:

 

Luego regrese al directorio del sistema de archivos, ingrese al directorio var y use el siguiente comando para crear carpetas requeridas por otros sistemas:

mkdir lib bloquear registro ejecutar tmp

Después de completar, como se muestra en la figura:

 

Las siguientes operaciones necesitan usar algunos archivos de inicialización provistos por Xunwei, como se muestra en la figura, evite abrirlos en ventanas después de la descompresión.

 

Ingrese al directorio etc creado, copie los tres archivos del perfil passwd de configuración de eth0 en él y use el siguiente comando para cambiar los permisos de estos archivos a 755:

chmod 755 perfil de contraseña de configuración eth0

Después de completar, como se muestra en la figura:

 

Ingrese al directorio init.d debajo del directorio etc, copie los dos archivos ifconfig-eth0 y rcS en él, y use el siguiente comando para cambiar los permisos de estos archivos a 755:

chmod 755 ifconfig-eth0 rcS

Después de completar, como se muestra en la figura:

 

Vaya al directorio etc/rc.d/init.d, copie el archivo netd y use el siguiente comando para cambiar el permiso del archivo a 755:

chmod 755 neto

Después de completar, como se muestra en la figura:

 

Regrese al directorio del sistema, ingrese la carpeta lib y use el siguiente comando para copiar los archivos de la biblioteca del compilador en ella:

cp /usr/local/arm/arm-2009q3/arm-none-linux-guneabi/libc/lib/* ./

Después de completar, como se muestra en la figura:

 

De esta forma, se ha perfeccionado el sistema de archivos del sistema Linux más pequeño.

1.5 Compilar el sistema de archivos mínimo de Linux

Ingrese al directorio busybox-1.35.0 y use los siguientes comandos para completar la compilación e instalación del sistema Linux mínimo:

hacer

hacer instalar

Después de usar el comando make, el sistema Ubuntu20.04 LTS tendrá el siguiente error:

 

Edite el archivo ipaddress.c con el siguiente comando:

red vim/libiproute/ipaddress.c

Luego salte a la línea 345, como se muestra en la figura:

 

Agregue compilación condicional para IFA_F_DADFAILED, el programa se modifica a:

 

Después de guardar y salir, vuelva a compilar y descubra que hay nuevos errores. Estos errores se deben principalmente a la falta de coincidencia entre la cadena de herramientas cruzadas y la versión del código fuente. Simplemente elimine esos módulos no definidos en la configuración de busybox.

 

Aquí hay dos, a saber, nsenter y sync.Ingrese "/" en el make menuconfig de busybox para buscar el módulo para obtener su ubicación, y luego elimine el estado seleccionado.

Los siguientes son los resultados de la búsqueda de nsenter, y su ubicación se puede obtener como Utilidades del sistema Linux

 

Después de buscar y seleccionar, ingrese "n" para eliminar el estado seleccionado e ingrese "y" para ingresar el estado seleccionado.

 

Continuar para encontrar la sincronización

 

En el menú de Coreutils, también realiza la operación de deselección:

 

Finalmente, guarde y salga, y use make para compilar nuevamente.

 

Se pasa la compilación, y finalmente usa el siguiente comando para completar la instalación de busybox:

hacer instalar

Después del éxito, el resultado es como se muestra en la figura:

 

1.6 Empaca el sistema de archivos Linux más pequeño

Después de ejecutar los comandos anteriores para compilar e instalar busybox, utilice la herramienta de empaquetado make_ext4fs para copiar el archivo comprimido linux_tools.tgz en el directorio "/".

  Luego use el siguiente comando para descomprimir:

tar -vxf herramientas_linux

Después de completar, como se muestra en la figura:

 

Después de eso, ingrese al directorio del mismo nivel que el sistema de archivos anterior y use el siguiente comando para empaquetar el sistema de archivos mínimo de Linux:

make_ext4fs -s -l 314572800 -a root -L sistema de archivos linux system.img

El último parámetro filesystem indica el directorio donde se encuentra la plantilla del sistema de archivos, es decir, el sistema de archivos de Linux perfecto mencionado anteriormente, y el penúltimo parámetro system.img indica que el nombre del archivo generado después del empaquetado es system.img.

En realidad, se mide que este comando informará un error en el sistema Ubuntu 20.04 LTS, lo que provocará un error al cargar la biblioteca compartida libc ++.so.6

 

Simplemente use los siguientes comandos para instalar las dos bibliotecas lib32c-dev y lib32stdc++6:

apt instalar lib32c-dev

apt instalar lib32stdc++6

Una vez completada la instalación, use el comando de paquete nuevamente para empaquetar y generar el archivo de imagen del sistema system.img, como se muestra en la figura:

 

1.7 Grabe el sistema de archivos Linux más pequeño

Úselo en modo u-boot en HyperTerminal (o minicom) (si solo necesita actualizar el kernel, no necesita borrar la partición), borre la partición e ingrese al modo fastboot

(Ejecutar uno por uno comando)

fdisk -c 0

formato gordo mmc 0:1

formato ext3 mmc 0:2

formato ext3 mmc 0:3

formato ext3 mmc 0:4

arranque rápido

Úselo en cmd.exe y grabe la imagen requerida en la placa de desarrollo a través de la línea otg

En general, no reprograme uboot (como mínimo, linux, android y QT comparten un uboot, el primer elemento es reprogramar uboot)

fastboot.exe cargador de arranque flash u-boot-iTOP-4412.bin

fastboot.exe núcleo flash zImage

fastboot.exe flash ramdisk ramdisk-uboot.img

fastboot.exe sistema flash system.img

arranque rápido -w

reinicio fastboot

Una vez completada la programación, después de que la placa de desarrollo haya cargado el kernel, use el siguiente comando para verificar la versión de busybox:

ls-j

Como se muestra en la figura, significa que el sistema empaquetado por busybox puede funcionar normalmente:

 

Supongo que te gusta

Origin blog.csdn.net/qq_41595148/article/details/128722117
Recomendado
Clasificación