Executando o bzImage no QEMU: Não é possível montar o fs raiz no bloco desconhecido (0.0)

7

Eu compilei o kernel fazendo make menuconfig e make . Eu estava tentando executar o bzImage no qemu, fazendo 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?

    
por Coder404 16.09.2012 / 02:50

2 respostas

10

Funcionou. O kernel inicializou bem. O erro é:

Unable to mount root fs on unknown-block(0.0)

O kernel está procurando por 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 tem que ser carregado de algum lugar: quando o kernel inicia, ele monta um sistema de arquivos (o sistema de arquivos raiz) no diretório / , então executa o programa /sbin/init . O programa init é normalmente responsável por executar os scripts de inicialização e iniciar os serviços, incluindo programas que permitem que os usuários façam login.

Você deve se certificar de que o kernel é capaz de 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 que é 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.

    
por 16.09.2012 / 15:50
0

Mesmo que os sistemas de arquivos sejam compilados sozinho no kernel, um sistema de arquivos inicial deve ser criado, o qual estará presente na RAM para rodar o kernel. Para tornar esse sistema de arquivos ram inicial, o mkinitrd é usado. No Ubuntu, o mkinitramfs é usado em vez disso

cd ~/linux/linux-2.6.32.59/arch/i386/boot

mkinitramfs -o initrd.img-2.6.32.59

depois disso, execute o kernel no qemu

qemu-system-i386 -kernel bzImage -initrd initrd.img-2.6.32.59 -m 512M

-initrd reprresenta o sistema de arquivos ram inicial

você pode encontrar o sistema de arquivos RAM em /boot/initramfs-linux.img

    
por 02.02.2017 / 15:05