Em que passo estou faltando para colocar meu kernel 2.6 ARM rodando no QEMU?

0

Eu estou tentando cross-compilar e inicializar um kernel Linux 2.6 para ARM usando o QEMU. Eu basicamente segui as mesmas instruções que estão incluídas no todo tutorial sobre o assunto.

Especificamente:

  1. Baixe e compile o kernel

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- versatile_defconfig
    $ #Disabled loadable modules and enabled initramfs
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all
    
  2. Compile o Busybox

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- arm
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install
    
  3. Crie o arquivo cpio do diretório% cell_de% do Busybox

    $ cd $BUSYBOX/_install
    $ find . | cpio -o -Hnewc | gzip > ../initramfs.gz
    
  4. Inicialize usando qemu-system-arm

    $ qemu-system-arm -M versatilepb -m 200M -kernel $KERNEL/arch/arm/boot/zImage -initrd $BUSYBOX/initramfs.gz -append "root=/dev/ram0"
    

O resultado é este:

Parecequeokernelnãoreconheceosistemadearquivos,masnãoseicomoconsertarisso.Estessãobasicamenteospassosexatosquecadatutorialsegue.Nãoexisteum"cpiofs" para ativar na fonte do kernel.

    
por user1833965 28.03.2016 / 07:48

1 resposta

0

Sucesso!

A solução, como sugerido, era incorporar a imagem initrd no kernel apontando CONFIG_INITRAMFS_SOURCE para o diretório "_install" do meu BusyBox. Muito obrigado a jc__ por essa dica.

Além disso, para qualquer outra pessoa tentando isso, é importante notar que eu precisava criar no diretório _install do Busybox:

  • dev / console
  • dev / loop0

como mencionado neste: link

    
por 29.03.2016 / 07:36