Lorsque je compile mon propre noyau, je fais essentiellement ce qui suit:
Je télécharge les sources depuis www.kernel.org et les décompresse.
Je copie mon précédent
.config
aux sources et fais unmake menuconfig
pour surveiller les nouvelles options et modifier la configuration selon la nouvelle politique du noyau.Ensuite, je le compile:
make -j 4
Enfin, je l' installe:
su -c 'make modules_install && make install'
.Après quelques tests, je supprime l'ancien noyau (de
/boot
et/lib/modules
) et je tourne complètement avec le nouveau (cette dernière étape m'a sauvé la vie plusieurs fois! C'est un pro-tip !).
Le problème est que j'obtiens toujours un /boot/initrd.img-4.x.x
qui est énorme par rapport à ceux de ma distribution. Voici le contenu de mon /boot/
répertoire actuel à titre d'exemple:
# 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
Comme vous l'avez peut-être remarqué, la taille de mes initrd.img
fichiers est environ 10 fois supérieure à celle de ma distribution.
Alors, est-ce que je fais quelque chose de mal lors de la compilation de mon noyau? Et, comment puis-je réduire la taille de mon initrd.img
?
la source
Réponses:
En effet, tous les modules du noyau ne sont pas supprimés. Vous devez le dépouiller pour réduire sa taille.
Utilisez cette commande:
Cela réduira considérablement la taille. Après avoir exécuté la commande ci-dessus, vous pouvez continuer à créer initramfs / initrd
la source
initrd
image par 10 ... Merci beaucoup, cela a bien fonctionné!{}
et+
.J'ai fait des recherches supplémentaires sur le problème pour savoir quel est le meilleur moyen de supprimer les modules et voici le processus complet que j'ai trouvé (SHW a quand même apporté la réponse mais le processus que j'ai trouvé est en quelque sorte plus standardisé):
Téléchargez
www.kernel.org
et décompressez les sources .Copiez votre précédent
.config
vers les sources et faites unmake menuconfig
pour surveiller les nouvelles options et modifiez la configuration en fonction de la nouvelle politique du noyau.Ensuite, compilez-le:
Enfin, installez-le:
Après quelques tests, supprimez l'ancien noyau des répertoires
/boot
et/lib/modules
.Le
INSTALL_MOD_STRIP
quand est défini pour1
ajouter unstrip --strip-debug
lors de l'installation du module, ce qui suffit pour réduire considérablement la taille.Voir: INSTALL_MOD_STRIP dans
Documentation/kbuild/kbuild.txt
.la source
Vous pouvez également modifier la configuration de votre
initramfs.conf
Trouvez le fichier sur
/etc/initramfs-tools/initramfs.conf
Il existe un paramètre qui indique que
MODULES=most
cela inclut la plupart des modules de votre image initrd.Le changer en
MODULES=dep
ceci fait que le générateur initramfs devine quels modules inclure.Consultez la page de manuel pour initramfs.conf ici .
REMARQUE 1: Après avoir effectué les étapes ci-dessus, la taille de mon image initramfs est passée de 282 Mo à 99 Mo. (c'est toujours assez grand mais c'est une amélioration significative)
REMARQUE 2: j'ai également essayé de supprimer les modules du noyau à
/lib/modules/<kernel version>
. Les modules fournis par les mises à jour du système d'exploitation sont supprimés (taille = 211 Mo) et donc l'image intiramfs correspondante est d'environ 15 Mo. Après avoir supprimé les modules du noyau vanilla que j'ai compilé moi-même, la taille du dossier était de 185 Mo et l'image intramfs était de 16 Mo. Ainsi, après toutes les optimisations, la taille est passée de 282 Mo à 16 Mo !! Pour le décapage, utilisez ce codeDans le code ci-dessus, remplacez
<kernel_release>
par la version du noyau dont vous souhaitez supprimer les modules.Pour plus de discussion, consultez ce lien .
Le code ci-dessus doit être exécuté en tant que
sudo
ousu
la source