Eu compilei o kernel fazendo make menuconfig
e make
. Eu estava tentando executar o bzImage no qemu, qemu -kernel bzImage
mas não funcionou com a mensagem de erro:
Unable to mount root fs on unknown-block(0.0)
Como posso corrigir isso? Como posso executar o bzImage no qemu?
linux
linux-kernel
qemu
Coder404
fonte
fonte
Respostas:
Isso deu certo. O kernel inicializou bem. O erro é:
O kernel está procurando um sistema de arquivos raiz. Você precisa fornecer um. Você não pode interagir com um kernel sem executar processos nele, e o processo inicial precisa ser carregado de algum lugar: quando o kernel é iniciado, ele monta um sistema de arquivos (o sistema de arquivos raiz) no diretório
/
e executa o programa/sbin/init
. O programa init normalmente é responsável por executar scripts de inicialização e iniciar serviços, incluindo programas que permitem que os usuários efetuem login.Você deve se certificar de que o kernel possa montar o sistema de arquivos raiz. Ele deve ter drivers para o tipo de sistema de arquivos e para todas as camadas envolvidas no dispositivo de bloco (controlador de disco (adaptador SCSI / SATA / IDE / USB /…), tipo de partição etc.).
O Linux oferece uma possibilidade adicional, que é carregar um sistema de arquivos inicial na RAM usado durante o processo de inicialização para localizar e montar o sistema de arquivos raiz. Esse sistema de arquivos inicial pode conter módulos que manipulam o dispositivo e o tipo de sistema de arquivos do sistema de arquivos raiz. Existem dois mecanismos ligeiramente diferentes: initrd e initramfs.
fonte
Mesmo que os sistemas de arquivos sejam compilados sozinhos no kernel, é necessário criar um sistema de arquivo inicial que estará presente na RAM para executar o kernel. Para criar esse sistema de arquivos ram inicial, o mkinitrd é usado. No ubuntu, mkinitramfs é usado em vez disso
depois disso, execute o kernel no qemu
-initrd representa novamente o sistema de arquivos ram inicial
você pode encontrar o sistema de arquivos ram em /boot/initramfs-linux.img
fonte