simular un pendrive (o disco duro) con particiones en un loopback device apuntando a un archivo
primero lo primero:
Q: porque demonios querrias hacer eso?
A: razones bastante obscuras, si logro hacer andar lo que estoy intentando va a salir otro post.
digamos que quiero usar usb-creator-gtk para crear un pendrive booteable en base a una iso de ubuntu pero estoy dentro de una vm que no ve los pendrives que enchufo en la maquina.
como alguien terco digo, "ya se, hago que usb-creator-gtk haga el usb booteable en un archivo y despues le hago dd en el host (que no es linux)".
pero ese archivo/device tiene que parecerse a un disco y tener particiones, y aqui empieza la pelea.
agregale la siguiente opcion al booteo de tu kernel en grub (si, arranco facil la cosa):
loop.max_part=63
esto nos va a permitir tener particiones en los loop devices (que ya vamos a ver que son).
crea un archivo de 2GB con ceros adentro que va a representar a nuestro pendrive inexistente:
# copiamos de /dev/zero al archivo llamado pen 8 pedazos de 256M
dd if=/dev/zero of=pen bs=256M count=8
ahora tenemos que crear el loop device que apunta a este archivo
# crea el primer loop device que tengas libre (normalmente /dev/loop0) apuntando al archivo pen
sudo losetup -f pen
ahora creemos particiones en nuestro archivo:
sudo fdisk /dev/loop0
vamos a crear una particion que tome todo el tamanio del dispositivo:
en la consola de fdisk apreta n, p, 1,
ahora tenemos que decirle al kernel que cargue las particiones de loop0 de nuevo
sudo blockdev --rereadpt /dev/loop0
una vez cargadas, formateamos la primera particion
sudo mkfs.vfat /dev/loop0p1
ahora con nuestro device que se parece a un pendrive podemos arrancar usb-creator-gtk:
sudo usb-creator-gtk --allow-system-internal
elegimos /dev/loop0p1, elegimos la iso y le damos a Make Startup Disk
terminamos, cerramos usb-creator-gtk y eliminamos el loop device
sudo losetup -d /dev/loop0p1
si hicieramos dd de este archivo a un pendrive tendriamos un pendrive booteable.