msdosパーティションテーブルとfat32を使用してディスクイメージを作成する

msdosパーティションテーブルとfat32を使用してディスクイメージを作成する

単体テストに含めるディスクイメージファイルを作成したいと思います。このディスクファイルには、私が読みたいいくつかのファイルが含まれている必要があります。 SDカードまたはUSBスティックにコピーを作成すると、ddディスクイメージが大きすぎて圧縮してもサイズが大きすぎます。

だから、新しいディスクイメージを作成し、後でマウントしたいと思います。次に、新しいデータを追加し、バージョン管理のためにディスクイメージを圧縮します。

私の現在のステップ:

  1. ディスクイメージの作成:dd if=/dev/zero of=DISK1.img bs=1M count=1200
  2. 別々に開く:sudo parted DISK1.img
  3. パーティション化されたテーブルの作成(partedを使用):mklabel msdos
  4. パーティションの作成(partedを使用):mkpart primary fat32 1MB 100%
  5. 印刷:
    (parted) print                                                            
    Modell:  (file)
    Festplatte  <path>/DISK1.img:  1258MB
    Sektorgröße (logisch/physisch): 512B/512B
    Partitionstabelle: msdos
    Disk-Flags: 
    
    Nummer  Anfang  Ende    Größe   Typ      Dateisystem  Flags
     1      1049kB  1258MB  1257MB  primary  fat32        lba
    

parted を終了して再度開くと、ファイルシステムが認識されなくなりました。

(parted) print                                                            
Modell:  (file)
Festplatte  <path>/DISK1.img:  1258MB
Sektorgröße (logisch/physisch): 512B/512B
Partitionstabelle: msdos
Disk-Flags: 

Nummer  Anfang  Ende    Größe   Typ      Dateisystem  Flags
 1      1049kB  1258MB  1257MB  primary               lba

最初から画像を作成するには?

2024-03-02 修正

@Stephen Kittのコメントを使って、次のように動作しました。

  1. dd if=/dev/zero of=DISK1.img bs=1M count=1200
  2. parted DISK1.img
  3. パーティション化されたテーブルの作成(partedを使用):mklabel msdos
  4. パーティションの作成(partedを使用):mkpart primary fat32 1MB 100%
  5. 別れの終了
  6. mkfs.vfat -v --offset 2048 DISK1.img

マウントパーティション:

  1. 開始セクタを探す:(fdisk -lu DISK1.img上記と同じ)
  2. オフセットの取得 (バイト): 512bytes * 2048sectors = 1048576
  3. lopsetup パーティション:sudo losetup -o 1048576 /dev/loop0 DISK1.img
  4. 山:sudo mount /dev/loop0 DISK_MOUNT
  5. マウントされたパーティションにデータをコピーする(ルートが必要)
  6. 削除sudo umount /dev/loop0
  7. 失われた分離:sudo losetup -d /dev/loop0

これで、新しいデータがディスクイメージにあります。

ベストアンサー1

あなたのステップは正しいです。以下を追加します。

sudo mkfs.vfat -F 32 DISK1.img手順のステップ1以降とステップ2の前。

よりmkfs.vfat マンページ

おすすめ記事