Seus módulos possuem muitos símbolos e informações de depuração. O comando que você quer é strip --strip-unneeded
.
No momento, estou tentando substituir manualmente o kernel no ubuntu-core em um dispositivo incorporado com um kernel personalizado. No entanto, quando tento atualizar o initrd, meu initrd se torna muito maior.
Aqui está o que eu fiz:
/lib/modules/new_kernel_version
Se eu fizer isso, meu initrd se tornará bem maior que o original, então verifiquei os módulos individuais. Eu escolhi o driver do sistema de arquivos btrfs.ko
como um exemplo. Então, comparando esses dois módulos, percebi que o que acabei de escolher no initrd era muito maior, o que causou a diferença de tamanho.
-rw-r--r-- 1 root root 999K Nov 14 15:06 btrfs.ko
Para o btrfs.ko
no initrd enviado.
-rw-r--r-- 1 root root 7.2M Nov 14 15:08 btrfs.ko
Para o novo btrfs.ko
.
O que é diferente entre esses dois módulos? Isso poderia ser causado por alguma configuração defeituosa para o novo kernel? Ao produzir o kernel eu copiei /proc/config.gz
e usei make oldconfig
para atualizá-lo, então todas as otimizações devem ser as mesmas para ambos os kernels.
Ou há algo mais que está sendo feito nos módulos antes de serem colocados no initrd? Talvez haja até mesmo uma maneira melhor de construir um novo initrd para o novo kernel no ubuntu.
Atualização:
Eu também testei com um initrd que eu criei do zero usando o comando mkinitrfs
no Ubuntu, e ele tem a mesma diferença de tamanho que encontrei para o initrd que eu atualizei manualmente.
Seus módulos possuem muitos símbolos e informações de depuração. O comando que você quer é strip --strip-unneeded
.