virt-make-fs
del qcow2
ejemplo de libguestfs
/server//a/332114/163884 lo mencionó, pero aquí hay un ejemplo completo:
sudo apt-get install libguestfs-tools
# Workarounds for Ubuntu 18.04 bugs. See section below.
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*
mkdir sysroot
# Just a test file.
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=qcow2 --type=ext2 sysroot sysroot.ext2.qcow2
Tenga en cuenta que sudo
no es necesario, excepto para la instalación y las soluciones de errores de Ubuntu.
Luego verifiqué que QEMU realmente puede leerlo con:
qemu-system-x86_64 -drive file=sysroot.ext2.qcow2,format=qcow2,if=virtio,snapshot ...
Entonces puedo montar la imagen dentro de QEMU Linux y leer el archivo.
virt-make-fs
ejemplo ext
Esta increíble herramienta también puede crear sistemas de archivos ext sin procesar, por ejemplo:
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2
virt-make-fs --format=raw --type=ext4 sysroot sysroot.ext4
que podemos verificar directamente en el host con:
mkdir -p mnt
dev="$(sudo losetup --show -f -P sysroot.ext4)"
sudo mount -o loop "$dev" mnt
cmp sysroot/myfile mnt/myfile
Minimización del tamaño de la imagen.
Una característica realmente buena virt-make-fs
es que intenta minimizar automáticamente el tamaño de la imagen si eso es lo que queremos:
Virt-make-fs por defecto minimiza el espacio extra, pero puede usar el indicador --size para dejar espacio en el sistema de archivos si lo desea.
entonces:
df -h
me dice que la imagen está llena al 82%:
/dev/loop17 1.5M 1.1M 244K 82% /home/ciro/test/guestfs/mnt
Podemos agregar fácilmente algo de espacio adicional al mínimo con --size-=+
:
virt-make-fs --format=raw --size=+8M --type=ext2 sysroot sysroot.ext2
gastos generales del diario ext4
El manual también menciona que:
Tenga en cuenta que los sistemas de archivos ext3 contienen un diario, generalmente de 1 a 32 MB de tamaño. Si no va a utilizar el sistema de archivos de una manera que requiera el diario, entonces esto solo se desperdicia.
y es interesante verificar eso con:
du -bs *
que produce:
1052672 sysroot
1446297 sysroot.ext2
2599731 sysroot.ext4
así que vemos que el ext4 salió significativamente más grande.
errores de Ubuntu libguestfs
Ahora por el lado negativo: parece que actualmente no hay mantenedor de Ubuntu y la biblioteca generalmente tiene errores en Ubuntu.
sudo
en teoría no se requiere, pero se requiere debido a un error de empaquetado de Ubuntu a menos que hagamos una solución alternativa: /ubuntu/1046828/how-to-run-libguestfs-tools-tools-such-as- virt-make-fs-without-sudo / 1046829 # 1046829
libguestfs: error: /usr/bin/supermin exited with error status 1.
To see full error messages you may need to enable debugging.
Do:
export LIBGUESTFS_DEBUG=1 LIBGUESTFS_TRACE=1
and run the command again. For further information, read:
http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
You can also run 'libguestfs-test-tool' and post the *complete* output
into a bug report or message to the libguestfs mailing list.
libguestfs: error: /usr/bin/supermin exited with error status 1.
Después de eso, sin nuestras soluciones, 18.04 (pero no 16.04) falla con: https://bugzilla.redhat.com/show_bug.cgi?id=1591617
libguestfs: error: tar_in: write error on directory: /:
debido a un error que ya se corrigió en sentido ascendente.
Probado en Ubuntu 18.04, libguestfs-tools 1: 1.36.13-1ubuntu3, QEMU 1: 2.11 + dfsg-1ubuntu7.3.
qemu-img
yfallocate
son un poco más convenientes quedd
.