Executando o QEMU com um diretório do sistema de arquivos raiz em vez da imagem do disco

Executando o QEMU com um diretório do sistema de arquivos raiz em vez da imagem do disco

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 -initrdopçã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 newco 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

  1. Ative o menu de inicialização na máquina virtual
  2. Anexe a unidade externa na qual seu sistema de arquivos, incluindo o kernel, está presente.
  3. 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 gpt0pela partição adequada e pela letra live ou /dev/sdBadequada (caso o USB não tenha partição)/dev/sdb1/dev/sdb

informação relacionada