O que está acontecendo é que você está tentando inicializar o Linux da maneira "Obsoleta". É aí que initrdexiste um ramdisk em oposição a um arquivo cpio compactado descompactado pelo kernel em um ramfs e com a maneira antiga de mudar para o dispositivo final.
Nesse modo, o kernel monta o disk.img como um ramdisk como o sistema de arquivos raiz e depois é executado /linuxrcnele. Provavelmente no seu caso, não existe esse arquivo. Quando /linuxrc(que é suposto fazer o que for necessário para abrir o dispositivo de bloco para o sistema de arquivos raiz real) sai, o kernel monta o sistema de arquivos raiz real.
As mensagens acima mostram que ele monta o disco ram com êxito (1,0: 1 é para ram, portanto /dev/ram0), mas não o sistema de arquivos raiz real / dev / sda1 (8,1: 8 é sd, 1 é a1). Presumivelmente, como você não especificou uma linha de comando do kernel ( -append), que /dev/sda1vem de um CONFIG_CMDLINE transmitido no momento da compilação ou uso do kernel rdev.
Se o seu disk.img deve conter um sistema de arquivos raiz, como por exemplo uma pequena distribuição Linux com /sbin/init..., provavelmente você deseja escrevê-lo:
kvm -kernel kernel.img -initrd disk.img -append 'root=/dev/ram0`
Então, o kernel trataria o disco ram como o sistema de arquivos raiz real (embora você ainda possa usar pivot_rootoutro).
Para poder ver as mensagens do kernel mais facilmente, eu recomendo usar a saída serial:
kvm -kernel kernel.img -initrd disk.img -nographic -append "root=/dev/ram0 console=ttyS0"
Como alternativa, você pode usar um init ramfs em vez de um init ramdisk:
mkdir -p RAMFS/{bin,dev}
cd RAMFS/bin
cp /bin/busybox .
"$PWD/busybox" --install .
cd ..
cp -a /dev/{null,tty,zero,console} dev
printf '%s\n' "#! /bin/sh" "exec /bin/sh" > init
chmod +x init
find . | cpio -oHnewc | gzip > ../initramfs.gz
cd ..
kvm -kernel kernel.img -initrd initramfs.gz
(fornecida busyboxé a versão vinculada estaticamente) e você obterá um shell e outros utilitários do busybox nesse kernel).
Observe que o kernel agora roda /initem oposição a /linuxrcou /sbin/initnesse modo.