Estou executando o Debian Bookworm em um TS412 (QNAP); ele armazena o kernel e o initrd em flash. Tem um total de 16 MB de flash. Portanto, mesmo depois de ajustar as partições MD, o melhor que consigo é um initrd de 12 MB. Estou usando compactação xz. Mas mesmo assim, o initrd inicial era de 12,5 MB. Eu sei que a solução comum é reduzir os módulos, mas eles não são o verdadeiro problema.
2984 .../usr/lib/modules
6036 .../usr/share
18824 .../usr/lib/arm-linux-gnueabi
Procurando em arm-linux-gnueabi tinha coisas como libX11... Essa máquina nem tem console (até conseguir uma linha serial é difícil) certamente não precisa de "X".
Então eu removi muitos pacotes totalmente (apt-get remove ...), na verdade, um pouco mais do que deveria. Mas o resultado foi um initrd muito menor (cerca de 5 MB IIRC) que inicializa e funciona perfeitamente.
O problema é que, se eu fizer ssh na caixa e executar o emacs(1), seria bom projetar a versão da GUI de volta para minha área de trabalho normal (que tem muita memória e telas grandes, etc.), mas isso exigiria a instalação do Bibliotecas cliente X no TS412.
Agora não vejo por que só porque tenho o pacote com as bibliotecas do cliente X instaladas, uma cópia precisa ser mantida no initrd, elas não são necessárias durante a inicialização. Existe uma maneira de limitar a entrada de outras coisas no initrd, não apenas nos módulos (que não são os culpados)
Já tentei pesquisas em documentos em busca de guias para limitar o initrd.
Pode haver um binário destinado a exibir informações gráficas durante a inicialização que extrairia bibliotecas das quais depende no arquivo initramfs .
Um desses binários disponível na maioria das arquiteturas, inclusive,
armel
é olabel.so
plugin fornecido porplymouth-label
como plugin para Plymouth para ter uma exibição gráfica com texto durante a inicialização. Este plugin depende de várias bibliotecas X11 e é usado para renderizar texto . Quando este plugin é adicionado ao initramfs, todas as bibliotecas das quais ele depende também são adicionadas para que possa ser usado na fase de inicialização. Isso é anunciado pelas dependências do pacote:plymouth-label
depende delibcairo2
qual depende de vários pacotes da biblioteca X11, incluindo o fornecimento da biblioteca .libx11-6
libX11.so.6
A adição do gancho initramfs
label.so
seria/usr/share/initramfs-tools/hooks/plymouth
:copy_exec
é uma função shell (fornecida porinitramfs-tools-core
) que extrairá as dependências sempre que necessário, além de copiar o binário, contandoldd
para descobrir o que é necessário.então parece que seria puxado apenas quando uma configuração sem texto fosse usada em Plymouth... para exibir texto.
Como o objetivo principal do QNAP não é o vídeo, deve-se evitar a instalação do plymouth e principalmente deste plugin, evitando que as bibliotecas X11 sejam extraídas do arquivo initramfs .
Não consigo ver nenhuma outra causa para esse comportamento. Pode haver outro pacote semelhante causando esse comportamento por motivos semelhantes.
Tendo seguido a lógica da resposta útil do @AB. Criei um par rápido e sujo de scripts para ajudar a acompanhar a árvore de dependências. (a resposta AB continua sendo a resposta para a pergunta específica)