Criando initramfs de 32 bits em uma máquina de 64 bits

1

Estou em um kernel de 64 bits e quero executar um kernel de 32 bits no QEMU. Depois de ter a imagem do kernel compactada, tentei criar a imagem initramfs usando mkinitcpio , mas isso criou apenas uma imagem com código de 64 bits (busybox, que mkinitcpio usa, 64 bits e outros executáveis também).

Eu poderia usar o programa gen_init_cpio , que é parte do kernel e obter os executáveis de 32 bits de alguma outra forma, mas prefiro evitar isso e deixar um programa decidir o que o kernel precisa no rootfs.

Existe alguma maneira de obter uma imagem initramfs de 32 bits ao executar um kernel de 64 bits?

    
por cadaniluk 08.07.2017 / 21:42

1 resposta

1

Um sistema de 64 bits não gera um initramfs de 32 bits porque não precisa dele. Então você teria que instalar a distro de 32 bits em um chroot.

Mas isso pode não funcionar, já que a maioria dos geradores initramfs, incluindo mkinitcpio , faz a detecção automática do módulo. O initramfs conterá apenas os módulos necessários para seu hardware e configuração específicos, não funcionará em nenhum outro lugar. No final, com a maioria dos geradores initramfs, você precisa executá-lo dentro da própria VM inicializada.

Você pode desativar a autodetecção do módulo, mas o initramfs será enorme. Um compromisso é especificar manualmente os módulos necessários em um arquivo de configuração.

    
por 08.07.2017 / 21:51