私の目標は、通常のファイルを作成し、その中にパーティションとファイルシステム(実際には仮想ハードドライブ)を作成し、最後にマウントすることでした。
sudo dd if=/dev/zero of=imagem-zero.img count=20480000
約20Gbファイルを生成します。次に partition を使用し、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'
私の質問は、両方のパーティションにファイルシステムを作成するための正しいオフセットを見つける方法です。
答え1
-E
スイッチを使用することを忘れました!
また、sudo
必ず必要な場合以外は使用しないことをお勧めします。
ここでは不要なゼロのファイルを作成します
sudo
。dd if=/dev/zero of=image-zero.dd count=20480000 status=progress
cfdisk
ここでは必要ありませんが、必要に応じて0を指定した画像を分割します。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
セカンドパーティション開始セクタ:16779264
計算する:
論理セクタサイズにパーティションの開始セクタを掛け、シェルを使って計算しましょう。
結果:
最初のパーティション:
offset=$(( 512 * 2048 ))
2番目のパーティション:
offset=$(( 512 * 16779264 ))
答え2
このオプションを使用してファイルシステムを作成できると仮定すると、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