
Para testar o sistema de arquivos raiz, preciso executar o QEMU com a imagem de disco criada como sistema de arquivos raiz, o QEMU aceita -kernel que pode ser usado para especificar o kernel diretamente, sem implantá-lo dentro do sistema de arquivos raiz, no entanto, preciso de um recurso semelhante para o root sistema de arquivos para especificar o caminho do sistema de arquivos raiz extraído em vez de criar uma imagem de disco e usá-la com as opções -hda ou -usbdisk.
é possível apenas com o QEMU?! Ou com ferramentas de terceiros (como emulador de imagem de disco virtual)
Meu objetivo é testar um arquivo tar do sistema de arquivos raiz sem criar uma imagem de disco
Responder1
Se o seu rootfs não for muito grande, você pode usar um initd. Use a -initrd
opção qemu e forneça um arquivo cpio (compactado) com o arquivo rootfs. Portanto, se você tiver um arquivo tar, deverá descompactá-lo e criar um cpio. Você deve usar -H newc
o formato para cpio. Exemplo;
mkdir /tmp/rootfs
cd /tmp/rootfs
tar xf /path/to/rootfs.tar
find | cpio --quiet -o -H newc | bzip2 -c > /tmp/rootfs.cpio
O legal é que você não precisa de root ou sudo para isso.
Responder2
Você pode gravar seu sistema de arquivos em uma unidade USB e conectá-lo à máquina virtual QEMU.
Em seguida, monte isso como seu sistema de arquivos raiz com opções de kernel no GRUB
- Ative o menu de inicialização na máquina virtual
- Anexe a unidade externa na qual seu sistema de arquivos, incluindo o kernel, está presente.
- Se o seu sistema de arquivos tiver kernel e grub, está tudo bem. Caso contrário, anexe qualquer live CD do Linux também com a máquina virtual. Edite a linha de comando do GRUB e use seu kernel e sistema de arquivos raiz.
Digamos que seu pendrive seja /dev/sdB
(considerando que você também anexou uma imagem de disco rígido e isso é /dev/sdA
, de qualquer maneira, você pode encontrá-lo) seu comando grub deve se parecer com
kernel (hd1,gpt0)/location_of-kernel root=/dev/sdB
initramfs mention_if_you_have
boot
Substitua gpt0
pela partição adequada e pela letra live ou /dev/sdB
adequada (caso o USB não tenha partição)/dev/sdb1
/dev/sdb