O que o mkinitrd altera quando adiciona módulos do kernel ao initrd?

6

Ao criar um initrd usando o mkinitrd (CentOS 5.5), os módulos do kernel adicionados ao initrd são modificados no processo. Por exemplo, o /lib/sata_via.ko do initrd não é binário idêntico ao /lib/modules/2.6.18-194.32.1.el5/kernel/drivers/ata/sata_via.ko.

Estou apenas curioso para saber o que acontece quando o mkinitrd inclui um módulo do kernel - ele liga em dependências, ou o que faz com que o módulo mude?

    
por Lars 08.02.2011 / 21:03

2 respostas

1

Você tem um /lib/sata_vio.ko no seu initrd? É (ou foi) um dos seus sistemas de arquivos (por exemplo, / ="root") em uma unidade SATA que precisaria desse driver? Uma entrada para ela aparece em /etc/modules ou /etc/mkinitrd/modules ?

No meu sistema Ubuntu, o módulo está no mesmo local dentro da imagem initrd, por ex. <extracted initrd>/lib/modules/<uname -r>/drivers/ata/sata_vio.ko .

O que file diz? O que strings | grep '\<ver' diz? Talvez seja de um driver diferente ou de uma versão de kernel diferente?

Obviamente, você pode usar ls -l ou du para obter uma ideia se /lib/sata_vio.ko for maior e executar nm -D nos dois arquivos para ver se há alguma diferença nos símbolos (por exemplo, usando diff ).

Todo o processo deve ser documentado em man mkinitrd , em particular, ele deve dizer que scripts seu sistema executa, talvez algo em /usr/share/initrd-tools/scripts ou /etc/mkinitrd/scripts ?

    
por 08.02.2011 / 23:25
1

O initrd (ou initramfs) é o conteúdo de um pequeno sistema de arquivos baseado em RAM que o carregador de inicialização disponibiliza para o kernel carregar na inicialização. Ele contém ferramentas mínimas para carregar módulos, módulos necessários para acessar o hardware necessário (por exemplo, seu disco rígido e sistema de arquivos). O init mínimo (primeiro processo) contido lá então muda para o real /. A imagem initrd é um arquivo gzip (1) ed cpio (1) dos arquivos requeridos, nenhum link ou outra operação é feita a eles.

    
por 16.01.2013 / 17:22