mkfs.ext4:デバイスdevice.imgの無効なブロックオフセット= X

mkfs.ext4:デバイスdevice.imgの無効なブロックオフセット= X

私の目標は、通常のファイルを作成し、その中にパーティションとファイルシステム(実際には仮想ハードドライブ)を作成し、最後にマウントすることでした。

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必ず必要な場合以外は使用しないことをお勧めします。

  1. ここでは不要なゼロのファイルを作成しますsudo

    dd if=/dev/zero of=image-zero.dd count=20480000 status=progress
    
  2. cfdiskここでは必要ありませんが、必要に応じて0を指定した画像を分割します。sudo

    cfdisk image-zero.dd
    
  3. パーティションにファイルシステムを作成するには、次のコマンドを使用します。必要ありませんsudo

    mkfs.ext4 image-zero.dd -E offset=$(( 512 * 2048 ))
    
  4. いくつかのマウントポイントディレクトリを作成します。

    mkdir mnttest
    
  5. イメージをインストールするには、次のものが必要です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 ))

おすすめ記事