Размер образа "openwrt-19.07.6-x86-64-combined-squashfs.img" составляет 20 МБ. Если я изменю имя файла на "openwrt.raw", я смогу импортировать его в virt-manager и загрузить систему. Но в корневом разделе "/" нет места.
Если я скопирую «openwrt-19.07.6-x86-64-combined-squashfs.img» на USB-накопитель, а затем скопирую на USB-накопитель новый файл, импортирую выходной файл в virt-manager и загружу систему, то размер корневого раздела составит «256 МБ».
dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/dev/sde
dd if=/dev/sde of=./openwrt_with_256MB_root_partition.raw
Размер "openwrt_with_256MB_root_partition.raw" такой же, как и у USB-накопителя. Но если я использую следующую команду:
dd if=openwrt-19.07.6-x86-64-combined-squashfs.img of=/openwrt.raw
выходной файл имеет тот же размер, что и входной. Я понимаю, что это действие бессмысленно. Но может ли кто-нибудь объяснить, что делает корневой раздел размером 256 МБ доступным, когда я добавляю его на USB-накопитель? Есть ли способ создать файл образа с корневым пространством размером 256 МБ без необходимости использования физического USB-накопителя или других дисков?
решение1
Не знаю, чем сейчас занимается OpenWRT.
Однако то, что вы делаете, это просто добавление некоторых мусорных данных в конец файла. Поскольку размер файла в конечном итоге становится размером устройства внутри виртуальной машины, легко понять результат.
Вы также можете использовать truncate
:
truncate -s256M openwrt-19.07.6-x86-64-combined-squashfs.img
Строго говоря, это не то же самое, поскольку в результате получается разреженный файл, но это гораздо быстрее и достаточно хорошо.
Чтобы получить то же самое, вам на самом деле нужно записать некоторые данные в файл, например так:
dd if=/dev/zero bs=1M count=236 >> openwrt-19.07.6-x86-64-combined-squashfs.img
Вы также можете использовать расширенные флаги в dd
. 256 - 20 = 236
Еще один инструмент, связанный с этим, — fallocate
.
Обновлять: Глядя на изображение, оно выглядит так:
$ fdisk -l openwrt-19.07.6-x86-generic-combined-squashfs.img
Disk openwrt-19.07.6-x86-generic-combined-squashfs.img: 19.5 MiB, 20450816 bytes, 39943 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xf1f0223e
Device Boot Start End Sectors Size Id Type
openwrt-19.07.6-x86-generic-combined-squashfs.img1 * 512 33279 32768 16M 83 Linux
openwrt-19.07.6-x86-generic-combined-squashfs.img2 33792 558079 524288 256M 83 Linux
(Обратите внимание на столбец «размер».)
Второй раздел должен содержать сжатый корневой образ, доступный только для чтения.иобласть F2FS для чтения-записи, не знаю, как это работает. Может, она меняет размер при первой загрузке или что-то в этом роде.