Ejecutar QEMU con un directorio del sistema de archivos raíz en lugar de una imagen de disco

Ejecutar QEMU con un directorio del sistema de archivos raíz en lugar de una imagen de disco

Para probar el sistema de archivos raíz, necesito ejecutar QEMU con la imagen de disco creada como sistema de archivos raíz, QEMU acepta -kernel que se puede usar para especificar el kernel directamente sin implementarlo dentro del sistema de archivos raíz, sin embargo, necesito una característica similar para root file system para especificar la ruta del sistema de archivos raíz extraído en lugar de crear una imagen de disco y utilizarla con las opciones -hda o -usbdisk.

¿Es posible con QEMU solo? O con herramientas de terceros (como un emulador de imagen de disco virtual)

Mi objetivo es probar un archivo tar del sistema de archivos raíz sin crear una imagen de disco.

Respuesta1

Si tu rootfs no es demasiado grande, puedes usar un initd. Utilice la -initrdopción qemu y proporcione un archivo cpio (comprimido) con rootfs. Entonces, si tiene un archivo tar, debe descomprimirlo y crear un cpio en su lugar. Debe utilizar -H newcel formato para cpio. Ejemplo;

mkdir /tmp/rootfs
cd /tmp/rootfs
tar xf /path/to/rootfs.tar
find | cpio --quiet -o -H newc | bzip2 -c > /tmp/rootfs.cpio

Lo bueno es que no necesitas root ni sudo para esto.

Respuesta2

Puede escribir su sistema de archivos en una unidad USB y luego conectarlo con la máquina virtual QEMU.

Luego móntelo como su sistema de archivos raíz con opciones de kernel en GRUB

  1. Activar menú de inicio en máquina virtual
  2. Conecte la unidad externa en la que está presente su sistema de archivos, incluido el kernel.
  3. Si su sistema de archivos tiene kernel y grub, todo está bien. De lo contrario, adjunte cualquier CD en vivo de Linux también con la máquina virtual. Edite la línea de comando de GRUB y use su kernel y sistema de archivos raíz.

Digamos que su pendrive es /dev/sdB(teniendo en cuenta que también ha adjuntado una imagen de disco duro y eso es /dev/sdA, de todos modos puede encontrarla) su comando grub se verá así

kernel (hd1,gpt0)/location_of-kernel root=/dev/sdB
initramfs mention_if_you_have
boot

Reemplace gpt0con la partición adecuada y /dev/sdBcon la letra viva adecuada /dev/sdb1o /dev/sdb(en caso de que el USB no tenga partición)

información relacionada