17

Linux で root 権限なしで (つまり、ループバック マウントなしで) 完全な SD イメージを作成することは可能ですか? 組み込みシステム イメージの作成を自動化する方法を探しています。イメージには、特定のパーティション構造と、ビルド システムからのファイルが取り込まれた FAT および ext2 にフォーマットされたパーティションが含まれている必要があります。

4

5 に答える 5

6

you might want to look at genextfs, that creates an ext2 filesystem in a regular file without any sort of mounting.

于 2014-07-16T12:10:03.413 に答える
5

私は同じことをしようとしています。私の最初の試みはループバックブロックデバイスを使用しましたが、ループバックを必要とする両方のステップの回避策を見つけました。

ループバックのあるステップ

これが私がしていることです($ 1は画像ファイル名、$ 2はファイルサイズです):

  1. ゼロ化されたディスクイメージファイルを作成するdd if=/dev/zero of=$1 bs=512 count=$(($2/512))
  2. でパーティションテーブルを作成するparted -s $1 mklabel msdos
  3. でパーティションを作成しますparted -s $1 "mkpart primary 0% 100%"
  4. パーティションをループに接続しますsudo losetup --find $1 --offset $OFFSET_TO_PARTITION_BYTES
  5. mkfs.ext4でファイルシステムを作成しますmkfs.ext4 -I 128 -L BOOT -b 2048 -O ^has_journal /dev/loop0 $SIZE_IN_2048_BLOCKS
  6. / dev/loop0をマウントします

ループバックが使用される理由は

  • 手順4と5では、mkfsにオフセットオプションがないため、losetupを使用してその問題を解決します。
  • 手順6で、マウントによりオペレーティングシステムのext4ドライバーを使用できるようになります

Loobackの回避策

ステップ4と5のくだらない回避策:

  • xmount --in dd --out vdi disk.img mnt /
  • vdfuse -f mnt / disk.vdi -r ./mnt2
  • ./mnt2には、EntireDiskとPartition1の2つのファイルが含まれるようになります。
  • mkfs.ext4を./mnt2/Partition1にポイントします

手順6の回避策:

  • ステップ5の回避策のすべてのステップに従ってください
  • ./mnt2/Partition1をマウントするにはfuseext2を使用します

警告

警告:ext4のサポートはドキュメントで宣伝されておらず、マウントしようとすると警告が表示されます。

This is experimental code, opening rw a real file system could be
dangerous for your data. Please add "-o ro" if you want to open the file
system image in read-only mode, or "-o rw+" if you accept the risk to test
this module

アップデート

vdfuseはxmountを使用せずにRAW画像をマウントできるはずですが、RAWオプションを無視するバグがあります。

私はここでパッチを使ってバグを追跡し、修正しました:

https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/1019075

于 2012-06-28T18:47:58.590 に答える