Por que o / lib / modules é tão grande no meu gentoo, comparado ao Ubuntu?

1

Eu tenho uma instalação do Gentoo. Para compilar o kernel usei a configuração do kernel do Ubuntu 14.04.

Acho difícil entender por que os tamanhos das bibliotecas de módulos são tão diferentes:

No Ubuntu

oz123@ubuntu $ du -sh /lib/modules/4.2.0-36-generic/
202M    /lib/modules/4.2.0-36-generic/

No Gentoo

oz123@gentoo ~ # du -sh /lib/modules/4.2.8-gentoo-1/
1.8G    /lib/modules/4.2.8-gentoo-1/

É por causa de alguma opção de tempo de compilação? Estou faltando alguma coisa aqui?

atualizar

eu fiz

DIR1=/lib/modules/4.2.0-36-generic/
DIR2=/mnt/gentoo/lib/modules/4.2.8-gentoo-1/
diff -r $DIR1 $DIR2 | grep $DIR2

Isso revela que os módulos que estão nas duas bibliotecas são binários diferentes, por exemplo:

Binary files /lib/modules/4.2.0-36-generic/kernel/sound/pci/ac97/snd-ac97-codec.ko and /mnt/gentoo/lib/modules/4.2.8-gentoo-1/kernel/sound/pci/ac97/snd-ac97-codec.ko differ

O mistério começa a ficar mais claro:

$ du -sh /lib/modules/4.2.0-36-generic/kernel/sound/usb/misc/snd-ua101.ko
36K /lib/modules/4.2.0-36-generic/kernel/sound/usb/misc/snd-ua101.ko
$ du -sh /mnt/gentoo/lib/modules/4.2.8-gentoo-1/kernel/sound/usb/misc/snd-ua101.ko
368K    /mnt/gentoo/lib/modules/4.2.8-gentoo-1/kernel/sound/usb/misc/snd-ua101.ko

Isso é consistente com alguns módulos que eu verifiquei.

Então os módulos compilados no Gentoo são quase 10 vezes maiores, por que ???

Ah ... tirando é a resposta ...

laptop-oz ~ # du -sh /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
368K    /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
laptop-oz ~ # strip --strip-unneeded /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
laptop-oz ~ # du -sh /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko
44K /lib/modules/4.2.8-gentoo-1/kernel/sound/usb/snd-usbmidi-lib.ko

Atualização 2

A decapagem não é a única coisa. Eu estou suspeitando também compilar bandeiras. Para verificar isso instalei o figlet (versão 2.2.5) no Ubuntu e compilei a mesma versão com o emerge no gentoo:

No Ubuntu:

$ ls -l /usr/bin/figlet-figlet 
-rwxr-xr-x 1 root root 43504 Nov 26  2012 /usr/bin/figlet-figlet

No Gentoo:

# ls -l /usr/bin/figlet
-rwxr-xr-x 1 root root 47384 Jun  8 16:40 /usr/bin/figlet

Estas são as minhas flags de compilação no Gentoo:

-O2 -pipe -march=haswell

Parece que ao criar o figlet com -O1 , estou obtendo um resultado muito mais semelhante ao Ubuntu:

# ls -l /usr/bin/figlet
-rwxr-xr-x 1 root root 43288 Jun  8 17:10 /usr/bin/figlet

A pequena diferença é provavelmente devida à versão gcc (no Ubuntu 4.8.4, no Gentoo 4.9.3).

    
por Oz123 08.06.2016 / 16:25

1 resposta

3

Como você mesmo criou os módulos do Gentoo, provavelmente esqueceu de remover as informações de depuração deles. Experimente

strip --strip-unneeded snd-ua101.ko

e veja se faz alguma diferença.

Da próxima vez que você reconstruir módulos para o seu sistema, retire todos os módulos usando

make INSTALL_MOD_STRIP=1 modules_install
    
por 08.06.2016 / 16:39