[linux] VirtualBox на loop device

yolki

хочется странного - гостя загружать с loop-устройства.
на самом деле конечная цель - отлаживаю изготовление загрузочной USB-флешки.
пока мне не понятно, как это можно сделать по-другому.
не, можно конечно всё писать на флешку и грузить с неё гостя, но это ооочень долго (изготовление образа и собственно загрузка).
поэтому я делаю так: изготавливаю образ флешки (disk.img, смонтирован как loop).
для образа сделан /dev/loop0 (см. losetup)
для /dev/loop0 сделан loop.vmdk (см. VBoxManage internalcommands createvmdk) и он подцеплен в гостя в качестве диска для загрузки.
оно работает в том смысле, что когда я испекаю disk.img, с него грузится гость. если я делаю dd if=disk.img of=/dev/sde то с флешки грузится реальный комп (ноут или хост так что такой процесс меня устраивает. поправьте меня, может быть есть более продвинутые способы отладки?
короче собственно траблы:
если в госте, загруженном с loop.vmdk внести изменения в файловую систему гостя, эти изменения где-то магическим образом повисают в воздухе.
попытки смонтировать loop0 на хосте показывают изначальную фс (без гостевых изменений).
при следующей загрузке гость своих изменений не видит.
ах да, процесс примерно такой:
образ флешки FAT, в бутсекторе там syslinux, squashfs-образ корневой фс
из гостя замечательно монтируется флешка и в корне создаются файлы.

vall

loop нужен только чтоб монтировать не хосте, для вм он не нужен.
фс должна быть одновременно смонтированна только в одном месте: госте или хосте.

yolki

первую фразу немного не понял. как загрузить гостя с образа без loop?
создавать для него vdi? и испекать образ в формате vdi?
перед загрузкой гостя предлагается отмонтировать loop? не хотелось бы..
вот с флопповыми образами всё пучком, правда virtualbox умеет их хавать в сыром виде

yolki

в принципе, ожидаемо...

quad tmp # losetup /dev/loop6 loop.img
quad tmp # mke2fs /dev/loop6
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
2448 inodes, 9764 blocks
488 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=10223616
2 block groups
8192 blocks per group, 8192 fragments per group
1224 inodes per group
Superblock backups stored on blocks:
8193

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
quad tmp # losetup /dev/loop7 loop.img
quad tmp # mkdir /mnt/q1 /mnt/q2
quad tmp # mount /dev/loop6 /mnt/q1
quad tmp # mount /dev/loop7 /mnt/q2
quad tmp # ls /mnt/q1
lost+found
quad tmp # touch /mnt/q1/FOO
quad tmp # ls /mnt/q2
lost+found
quad tmp # ls /mnt/q1
FOO lost+found
quad tmp # umount /mnt/q1
quad tmp # umount /mnt/q2
quad tmp # mount /dev/loop6 /mnt/q1
quad tmp # ls /mnt/q1
FOO lost+found
quad tmp # umount /mnt/q1
quad tmp # mount /dev/loop7 /mnt/q2
quad tmp # ls /mnt/q2
FOO lost+found
quad tmp # mount /dev/loop6 /mnt/q1
quad tmp # touch /mnt/q2/BAR
quad tmp # ls /mnt/q2/
BAR FOO lost+found
quad tmp # ls /mnt/q1
FOO lost+found
quad tmp # sync
quad tmp # ls /mnt/q1
FOO lost+found
quad tmp #

а можно как-нибудь извернуться и из-под хоста подделывать образ гостя "на лету" ?
Оставить комментарий
Имя или ник:
Комментарий: