¿Cómo networkingucir el tamaño del initrd al comstackr tu kernel?

Cuando compilo mi propio kernel, básicamente lo que hago es lo siguiente:

  1. Descargo las fonts de www.kernel.org y las descomprimo.

  2. Copio mi .config anterior a las fonts y hago un make menuconfig para mirar las nuevas opciones y modificar la configuration de acuerdo con la nueva política del kernel.

  3. Entonces, lo compilo: make -j 4

  4. Finalmente, lo instalo: su -c 'make modules_install && make install' .

  5. Después de algunas testings, elimino el núcleo antiguo (de /boot y /lib/modules ) y funciono completamente con el nuevo (¡este último paso me salvó la vida varias veces! ¡Es una recomendación !).

El problema es que siempre obtengo un /boot/initrd.img-4.xx que es enorme en comparación con los de mi distribución. Aquí el contenido de mi directory actual /boot/ 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 files initrd.img es aproximadamente 10 veces mayor que los de mi distribución.

Entonces, ¿hago algo mal al comstackr mi kernel? Y, ¿cómo puedo networkingucir el tamaño de mi initrd.img ?

Esto se debe a que no se eliminan todos los modules del kernel. Debes quitarlo por su tamaño.

Use este command:

 SHW@SHW:/tmp# cd /lib/modules/<new_kernel> SHW@SHW:/tmp# find . -name *.ko -exec strip --strip-unneeded {} + 

Esto networkingucirá drásticamente el tamaño. Después de ejecutar el command anterior, puede continuar para crear initramfs / initrd

Hice algunas investigaciones adicionales sobre el problema para saber cuál es la mejor manera de desmantelar los modules y aquí está el process completo que encontré (aún así, SHW aportó la respuesta, pero el process que encontré está de alguna manera más estandarizado):

  1. Descargue las fonts de www.kernel.org y descomprímalas.

  2. Copie su .config anterior a las fonts y haga un make menuconfig para ver las nuevas opciones y modifique la configuration de acuerdo con la nueva política del kernel.

  3. Luego, comstackrlo:

     $> make -j 4 
  4. Finalmente, instálalo:

     $> su -c 'make INSTALL_MOD_STRIP=1 modules_install && make install' 
  5. Después de algunas testings, elimine el antiguo kernel de los directorys /boot y /lib/modules .

El INSTALL_MOD_STRIP cuando se establece en 1 agrega una strip --strip-debug cuando instala el module, que es suficiente para networkingucir el tamaño drásticamente.

Consulte: INSTALL_MOD_STRIP en Documentation/kbuild/kbuild.txt .

También puede cambiar la configuration de su initramfs.conf

Encuentra el file en /etc/initramfs-tools/initramfs.conf

Hay una configuration que dice MODULES=most esto incluye la mayoría de los modules kn su image initrd.

MODULES=dep a MODULES=dep esto hace que el generador de initramfs adivine qué modules include.

Consulte la página de manual de initramfs.conf aquí .

NOTA 1: Después de realizar los pasos anteriores, el tamaño de mi image initramfs se networkingujo de 282 MB a 99 MB (esto sigue siendo lo suficientemente grande pero es una mejora significativa)

NOTA 2: También intenté eliminar los modules del kernel en /lib/modules/<kernel version> . Los modules suministrados por las actualizaciones del sistema operativo se eliminan (tamaño = 211 MB) y, por lo tanto, la image intiramfs correspondiente es de alnetworkingedor de 15 MB. Después de eliminar los modules del kernel de vanilla que compilé, el tamaño de la carpeta era de 185 MB y la image de 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ódigo

 find /lib/modules/<kernel_release>/ -iname "*.ko" -exec strip --strip-unneeded {} \; 

En el código anterior, reemplace <kernel_release> con la versión del kernel desde la que desea quitar los modules.

Para más discusión, vea este enlace .

El código anterior debe ejecutarse como sudo o su