18.04.2 carregar o initrd no ramdisk

18.04.2 carregar o initrd no ramdisk

Estou tentando criar um kernel de inicialização PXE paraCloneDeploy. Eu tenho uma NIC que precisa de alguns drivers que não funcionam imediatamente, mas funcionam bem em uma instalação do Ubuntu, então pensei em simplesmente inicializar o PXE usando o kernel e o initrd a partir dos quais inicializo meu Ubuntu (não sendo muito Linux -savvy Não consigo pensar em uma maneira muito melhor de fazer as coisas, as tentativas de construir meu próprio kernel não conseguiram produzir uma NIC funcional).

Estou executando uma instalação 18.04.2 atualizada. Então copiei os arquivos: vmlinuz-4.18.0-20-generice initrd.img-4.18.0-20-generic para os lugares certos do meu sistema PXE e tentei inicializar a partir deles.

Esta é a linha de comando de inicialização (ipxe) (com localizações de imagens encurtadas para manter as coisas legíveis):

kernel http://.../IpxeBoot?filename=vmlinuz-4.18.0-20-generic&type=kernel initrd=initrd.img-4.18.0-20-generic root=/dev/ram0 rw ramdisk_size=1560000  web=http://.../ USER_TOKEN= task=debug consoleblank=0 
imgfetch --name initrd.img-4.18.0-20-generic http://.../IpxeBoot?filename=initrd.img-4.18.0-20-generic&type=bootimage
boot

Ao inicializar, vários dispositivos relevantes são inicializados (incluindo minha NIC!), Mas então me deparo com o seguinte erro:

gave up waiting for root file system device
ALERT! /dev/ram0 does not exist. Dropping to a shell!

eu encontreiessa questão, o que sugere que preciso executar uma etapa extra durante a inicialização em algum lugar para carregar o módulo brd e fazer com que o initrd seja transformado em um disco RAM realmente utilizável. Foi sugerido add "brd rd_size=16777216" to /etc/initramfs/modules, mas quando descompactei o arquivo initrd.img-4.18.0-20-generic (usando unmkinitramfs), não há /etc/initramfs. (Observo também que provavelmente deveria usar rd_nr=1 rd_size=1048576apenas ram0 criado em vez de ram0 até ram15).

Como faço para superar o erro de inicialização. E se isso envolve carregar o brd, como faço isso para esta versão do kernel?

Responder1

O ramdisk inicial (no seu caso é initrd.img-4.18.0-20-generic) é gerado pela update-initramfsferramenta automaticamente durante a instalação do kernel em seu sistema.

update-initramfsverifica seu sistema e adiciona os módulos necessários initrdpara carregá-lo durante a inicialização.

Existem dois locais onde você pode colocar seus scripts initial ramdisk:

/usr/share/initramfs-tools

e

/etc/initramfs-tools 

No seu caso você deve inserir essa linha /etc/initramfs-tools/modulese executar

update-initramfs -u

para o seu kernel atual.

Então confira o resultado:

mkdir myinitramfs

cd myinitramfs

zcat /boot/initrd.img-4.18.0-20-generic | cpio --extract

cat conf/modules

verifique se o seu módulo está na lista

informação relacionada