私の目標は、通常のファイルを作成し、その中にパーティションとファイルシステム(文字通り仮想ハードドライブ)を作成し、最後にそれをマウントすることです。
Sudo dd if=/dev/zero of=imagem-zero.img count=20480000
約20Gbでファイルを作成します。次に、cfdisk
でパーティションを作成しました。その後、ファイルのステータスは次のようになりました。
$ gdisk -l imagem-zero.img
GPT fdisk (gdisk) version 1.0.1
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present
Found valid GPT with protective MBR; using GPT.
Disk imagem-zero.img: 40960000 sectors, 19.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 544A9633-7FA3-4BE8-BEE7-612C151A4504
Partition table holds up to 128 entries
First usable sector is 2048, last usable sector is 40959966
Partitions will be aligned on 2048-sector boundaries
Total free space is 0 sectors (0 bytes)
Number Start (sector) End (sector) Size Code Name
1 2048 16779263 8.0 GiB 8304
2 16779264 40959966 11.5 GiB 8302
ここで、これら2つのパーティションの両方でファイルシステムをext4
にしたいのですが、質問のタイトルにエラーメッセージが表示されて失敗します。
$ Sudo mkfs.ext4 imagem-zero.img offset=$((2048*512))
mke2fs 1.43.4 (31-Jan-2017)
mkfs.ext4: invalid blocks 'offset=1048576' on device 'imagem-zero.img'
$ Sudo mkfs.ext4 imagem-zero.img offset=$((2048))
mke2fs 1.43.4 (31-Jan-2017)
mkfs.ext4: invalid blocks 'offset=2048' on device 'imagem-zero.img'
私の質問は、両方のパーティションでファイルシステムを作成するための正しいオフセットを見つける方法です。
-E
_スイッチの使用を忘れました!さらに、必要のない場合はSudo
を使用しないことをお勧めします。
ゼロ化されたファイルを作成します。ここでSudo
は必要ありません。
_dd if=/dev/zero of=image-zero.dd count=20480000 status=progress
_
ゼロ化された画像を必要に応じてcfdisk
で分割します。ここでは、Sudo
は必要ありません。
_cfdisk image-zero.dd
_
ここでSudo
を必要とせずに、を使用してパーティション上にファイルシステムを作成します。
_mkfs.ext4 image-zero.dd -E offset=$(( 512 * 2048 ))
_
マウントポイントディレクトリを作成します。
_mkdir mnttest
_
でイメージをマウントします。ここでSudo
が必要であることに注意してください。
_Sudo mount -t ext4 -o offset=$(( 512 * 2048 )) image-zero.dd ./mnttest
_
Linux Mint 19でテスト済み
あなたの画像は:
論理セクターサイズ:512バイト
最初のパーティションの開始セクター:2048
2番目のパーティションの開始セクター:16779264
計算:
論理セクターのサイズにパーティションの開始セクターを掛けて、シェルで計算してみましょう。
結果:
1番目のパーティション:offset=$(( 512 * 2048 ))
2番目のパーティション:offset=$(( 512 * 16779264 ))
offset=
オプションを使用してファイルシステムを作成できるとすると、どのように使用しますか?
マニュアルページには
-E拡張オプション
ファイルシステムの拡張オプションを設定します。拡張オプションはコンマで区切られ、等号( '=')を使用して引数を取ることができます。
オフセット=オフセット
デバイスまたはファイルの先頭からオフセットしてファイルシステムを作成します。これは、仮想マシンのディスクイメージを作成するときに役立ちます。
したがって、正しい構文は次のようになります。
Sudo mkfs.ext4 imagem-zero.img -E offset=$((2048))
これにより、ファイルシステムを作成できますが、いくつかのファイルを作成することもできます。したがって、ループデバイスを使用することをお勧めします。
losetup -P -f imagem-zero.img
これにより、/dev/loopX
とパーティション/dev/loopXp0
、/dev/loopXp1
が得られます。これらのパーティションでmkfs
を使用してマウントし、これらのパーティションにファイルを書き込むことができます。パーティションをアンマウントした後、
losetup -d /dev/loopX