Cuando compilo mi propio núcleo, básicamente lo que hago es lo siguiente:
Descargo las fuentes de www.kernel.org y lo descomprimo.
Copio mi anterior
.config
a las fuentes y hago unmake menuconfig
seguimiento para ver las nuevas opciones y modificar la configuración de acuerdo con la nueva política del núcleo.Entonces, lo compilo:
make -j 4
Por último, lo instalo:
su -c 'make modules_install && make install'
.Después de algunas pruebas, elimino el núcleo antiguo (de
/boot
y/lib/modules
) y ejecuto completamente el nuevo (¡este último paso me salvó la vida varias veces! ¡Es un consejo profesional !).
El problema es que siempre obtengo uno /boot/initrd.img-4.x.x
que es enorme en comparación con los de mi distribución. Aquí el contenido de mi /boot/
directorio actual como ejemplo:
# ls -alFh
total 243M
drwxr-xr-x 5 root root 4.0K Mar 16 21:26 ./
drwxr-xr-x 25 root root 4.0K Feb 25 09:28 ../
-rw-r--r-- 1 root root 2.9M Mar 9 07:39 System.map-4.4.0-1-amd64
-rw-r--r-- 1 root root 3.1M Mar 11 22:30 System.map-4.4.5
-rw-r--r-- 1 root root 3.2M Mar 16 21:26 System.map-4.5.0
-rw-r--r-- 1 root root 170K Mar 9 07:39 config-4.4.0-1-amd64
-rw-r--r-- 1 root root 124K Mar 11 22:30 config-4.4.5
-rw-r--r-- 1 root root 126K Mar 16 21:26 config-4.5.0
drwxr-xr-x 5 root root 512 Jan 1 1970 efi/
drwxr-xr-x 5 root root 4.0K Mar 16 21:27 grub/
-rw-r--r-- 1 root root 19M Mar 10 22:01 initrd.img-4.4.0-1-amd64
-rw-r--r-- 1 root root 101M Mar 12 13:59 initrd.img-4.4.5
-rw-r--r-- 1 root root 103M Mar 16 21:26 initrd.img-4.5.0
drwx------ 2 root root 16K Apr 8 2014 lost+found/
-rw-r--r-- 1 root root 3.5M Mar 9 07:30 vmlinuz-4.4.0-1-amd64
-rw-r--r-- 1 root root 4.1M Mar 11 22:30 vmlinuz-4.4.5
-rw-r--r-- 1 root root 4.1M Mar 16 21:26 vmlinuz-4.5.0
Como habrás notado, el tamaño de mis initrd.img
archivos es aproximadamente 10 veces mayor que el de mi distribución.
Entonces, ¿hago algo mal al compilar mi kernel? Y, ¿cómo puedo reducir el tamaño de mi initrd.img
?
fuente
Respuestas:
Esto se debe a que todos los módulos del núcleo no están despojados. Necesitas quitarlo para reducir su tamaño.
Usa este comando:
Esto reducirá drásticamente el tamaño. Después de ejecutar el comando anterior, puede proceder a crear initramfs / initrd
fuente
initrd
imagen entre 10 ... ¡Muchas gracias, funcionó bien!{}
y+
.Investigué un poco más sobre el problema para saber cuál es la mejor manera de quitar los módulos y aquí está el proceso completo que encontré (todavía SHW trajo la respuesta, pero el proceso que encontré está de alguna manera más estandarizado):
Descargue las fuentes
www.kernel.org
y descomprímalo.Copie su anterior
.config
a las fuentes y haga unmake menuconfig
seguimiento de las nuevas opciones y modifique la configuración de acuerdo con la nueva política del núcleo.Luego, compílalo:
Finalmente, instálalo:
Después de algunas pruebas, elimine el núcleo antiguo
/boot
y los/lib/modules
directorios.El
INSTALL_MOD_STRIP
cuando se establece en1
añadir unstrip --strip-debug
al instalar el módulo, que es suficiente para reducir el tamaño drásticamente.Ver: INSTALL_MOD_STRIP en
Documentation/kbuild/kbuild.txt
.fuente
También puede cambiar la configuración de su
initramfs.conf
Encuentra el archivo en
/etc/initramfs-tools/initramfs.conf
Hay una configuración que dice que
MODULES=most
esto incluye la mayoría de los módulos de su imagen initrd.Cambiarlo a
MODULES=dep
esto hace que el generador initramfs adivine qué módulos incluir.Consulte la página de manual de initramfs.conf aquí .
NOTA 1: Después de realizar los pasos anteriores, el tamaño de la imagen de mi initramfs se redujo de 282 MB a 99 MB (todavía es lo suficientemente grande, pero es una mejora significativa)
NOTA 2: También intenté quitar los módulos del núcleo en
/lib/modules/<kernel version>
. Los módulos suministrados por las actualizaciones del sistema operativo se eliminan (tamaño = 211 MB) y, por lo tanto, la imagen intiramfs correspondiente es de alrededor de 15 MB. Después de quitar los módulos del núcleo de vainilla que compilé, el tamaño de la carpeta era de 185 MB y la imagen intramfs era de 16 MB. ¡Entonces, después de todas las optimizaciones, el tamaño bajó de 282 MB a 16 MB! Para pelar use este códigoEn el código anterior, reemplace
<kernel_release>
con la versión del núcleo de la que desea quitar los módulos.Para más discusión vea este enlace .
El código anterior debe ejecutarse como
sudo
osu
fuente