「openwrt-19.07.6-x86-64-combined-squashfs.img」イメージのサイズは 20MB です。ファイル名を「openwrt.raw」に変更すると、virt-manager にインポートしてシステムを起動できます。ただし、ルート パーティション「/」にはスペースがありません。
「openwrt-19.07.6-x86-64-combined-squashfs.img」を USB ドライブに dd し、次に USB ドライブを新しいファイルに dd し、出力ファイルを virt-manager にインポートしてシステムを起動すると、ルート パーティションのサイズは「256MB」になります。
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
出力ファイルは入力ファイルと同じサイズです。このアクションは無意味だと理解しています。しかし、USB ドライブに dd すると 256MB のルート パーティションが使用可能になる理由を説明できますか? 物理的な USB ドライブや他のディスクを必要とせずに、256MB のルート スペースを持つイメージ ファイルを作成する方法はありますか?
答え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
(「サイズ」の列に注意してください。)
2番目のパーティションには圧縮された読み取り専用のルートイメージが格納されるはずですそして読み取り/書き込み可能な F2FS 領域ですが、どのように動作するのかはわかりません。最初の起動時にサイズが変更されるのかもしれません。