En la primera parte Hemos compilado busybox y el kernel de Linux. En esta sección, crearemos la imagen initramfs.

Creando initramfs

Initramfs es el primer archivo que se carga en la memoria al arrancar el sistema. contenido en este archivo /en eso El proceso de arranque se inicia ejecutando el archivo de nuestro kernel. Vamos a crear una imagen initramfs usando el archivo busybox que compilamos como estático en el ejemplo anterior.

Para esto, abramos un nuevo directorio y copiemos nuestro archivo busybox en él. próximo init Escribamos nuestro archivo de la siguiente manera.

#!/busybox ash /busybox mkdir -p /bin /busybox --install -s /bin export PATH=/bin exec /bin/ash

Aquí, la primera línea es la línea shebang y especifica con qué se debe ejecutar el archivo.

segunda linea /compartimiento Se utiliza para crear el directorio.

La tercera línea se usa para instalar el archivo busybox mediante un enlace simbólico a /bin.

en la cuarta linea TRAYECTORIA La variable ambiental está configurada. De esta forma especificamos dónde buscar los comandos de busybox.

En la última línea escribimos para reemplazar el proceso actual con un nuevo shell de cenizas.

Embalaje Initramfs

init Hagamos nuestro archivo ejecutable y generemos nuestra imagen initramfs con el siguiente comando.

encontrar ./ ​​| cpio -H nuevoc -o > ../initrd.img

Si queremos, podemos comprimirlo para reducir el tamaño de nuestra imagen initramfs.

gzip -9 initrd.img

Probando initramfs y kernel

Podemos probar nuestra imagen kernel e initramfs usando qemu con el siguiente comando.

qemu-system-x86_64 --enable-kvm -kernel bzImage -initrd initrd.img -append "silencioso" -m 1024 

Si no hay problema, aparecerá la pantalla del terminal y podrá utilizar los comandos de busybox.

Probando la distribución mínima

Siguiente en la sección Se explicará cómo crear nuestro propio sistema rootfs mínimo a partir de código C simple.