Linux で root 権限なしで (つまり、ループバック マウントなしで) 完全な SD イメージを作成することは可能ですか? 組み込みシステム イメージの作成を自動化する方法を探しています。イメージには、特定のパーティション構造と、ビルド システムからのファイルが取り込まれた FAT および ext2 にフォーマットされたパーティションが含まれている必要があります。
質問する
12030 次
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はファイルサイズです):
- ゼロ化されたディスクイメージファイルを作成する
dd if=/dev/zero of=$1 bs=512 count=$(($2/512))
- でパーティションテーブルを作成する
parted -s $1 mklabel msdos
- でパーティションを作成します
parted -s $1 "mkpart primary 0% 100%"
- パーティションをループに接続します
sudo losetup --find $1 --offset $OFFSET_TO_PARTITION_BYTES
- mkfs.ext4でファイルシステムを作成します
mkfs.ext4 -I 128 -L BOOT -b 2048 -O ^has_journal /dev/loop0 $SIZE_IN_2048_BLOCKS
- / 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 に答える