Incorporar initramfs no kernel existente

Incorporar initramfs no kernel existente

É possível incorporar uma imagem initramfs no kernel existente sem recompilar tudo? Não tenho recursos para fazer isso.

Responder1

O initramfs pode ser incorporado no kernel em tempo de construção (é claro que isso é permitido no menuconfig, selecionando a árvore rootfs). E pode ser útil para algumas circunstâncias específicas. Observe apenas que, uma vez incorporada, qualquer ferramenta rootfs proprietária no binário final pode quebrar a GPL. Mas até que seu initramfs contenha apenas algumas coisas do busybox, não deverá haver nenhum problema.

Responder2

normalmente ninguém integraria uma imagem initramfs em um kernel, até onde eu sei, isso nem é possível (sem reescrever o código de acordo com o conceito), pelo menos não é o pretendido.

o initrd é sempre um fluxo de dados (arquivo) separado que é carregado junto com o kernel para ajudar na inicialização, é opcional, mas quase sempre incluído nas distribuições gnu/linux modernas

então você não precisa se perguntar como incorporá-lo, mas como alterá-lo, então dê uma olhada na configuração do seu bootloader, normalmente você deve identificar 3 coisas (também principalmente nesta ordem)

  • imagem do kernel (algo que guia seu bootolader para a imagem do kernel (na maioria das vezes um arquivo) para carregá-lo na memória RAM
  • linha de comando (uma string que também é escrita na memória RAM para o kernel acessá-la e usá-la (como fornecer parâmetros dentro de um sistema operacional, mas fora de apenas escrever e chamar (código assembly))) (essa coisa na maioria das vezes tem algum root=/ dev/xy ro qualquer opção
  • uma imagem initrd (imagem opcional do ramdisk inicial que é carregado após o kernel na memória ram, o kernel então o usa como um disco virtual que é usado principalmente (mas existem sistemas ativos que rodam completamente dentro dele, por exemplo) auxiliar na inicialização antes do root fs é encontrado e montado (como se os discos fossem lentos e fluidos (ordem do disco, material scsi, inicialização a partir da rede, criptografia do sistema de arquivos, shell de emergência de recuperação se o fsck falhar, ... etc)

então, para responder sua pergunta, não, se o seu gerenciador de inicialização for incapaz de usar o initrd diretamente e você não puder substituí-lo, basta carregar outro gerenciador de inicialização com ele (como se coisas muito arcaicas ainda pudessem carregar o grub como um kernel, por exemplo), caso contrário, apenas atualize o caminho para o arquivo initrd separado na configuração do seu bootloader.

BTW, se você estiver usando o grub2, não edite a configuração diretamente, ela é gerada pelo update-grub usando dados em /etc/default/grub e /etc/default/grub.d/, no grub legado você ainda edita o menu.lst diretamente em a partição de inicialização, mas o grub2 é muito complexo para isso, você ainda pode editar as coisas diretamente, mas provavelmente será sobrescrito posteriormente, então isso não é uma boa ideia ...

informação relacionada