次のコマンドを使用してファイルにディスクデバイスを作成しようとしています。
dd if=/dev/zero of=file.img bs=516096 count=1000
sudo losetup /dev/loop0 file.img
(echo n; echo p; echo 1; echo ""; echo ""; echo w;) | sudo fdisk -u -C1000 -S63 -H16 file.img
sudo mke2fs -b1024 /dev/loop0 503968
ありがとうございます。インストールしました:
sudo mkdir /mnt/fcd
sudo mount -t ext2 /dev/loop0 /mnt/fcd
そして自己作成ブートローダを作成します。
sudo dd if=loader.bin of=file.img bs=512 count=1 conv=notrunc
次のコマンドを使用して削除します。
sudo umount /dev/loop0
sudo losetup -d /dev/loop0
2つの質問があります。
1.fdiskで次の出力を取得します。
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-1007999, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-1007999, default 1007999):
最初のセクタがゼロではなく2048で始まるのはなぜですか? ext2または他のもののMBRに0-2048を使用しますか?
2. ディスクを作成したら、次を実行します。
fdisk -l file.img
出力は次のとおりです。
Disk file.img: 516 MB, 516096000 bytes
255 heads, 63 sectors/track, 62 cylinders, total 1008000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Device Boot Start End Blocks Id System
なぜ仕切りがないのですか?
ありがとうございます。
答え1
1.- 最初に、fdisk はパーティションをシリンダ境界に合わせるためにパーティションを作成し、MBR、パーティションテーブル、その他のエントリに使用されるディスクの最初のシリンダを空にします。したがって、最初のパーティションは通常ブロック63で始まります(各ブロックは512バイト)。 RedHat 6.xなどのディストリビューションのfdiskはまだこの方法で動作しますが、警告を表示してDOS以外の互換モードを選択できるようにします。
最新のfdiskバージョンでは、MBの境界に合わせてソートされたパーティションを作成して、パーティションページのソートを保証します。これはパフォーマンスに大きな影響を与える可能性があります。これについてご質問がある場合は、私のブログで詳細を読むことができます。http://sinrega.org/?p=14そしてhttp://sinrega.org/?p=13)。 2048は1MB(2048 * 512)です。
2.-ファイルサポートデバイスにext2ファイルシステムを作成すると、パーティションテーブルが上書きされます。パーティションを作成したら、作成したパーティションと同じブロックから始まる別のループデバイスを接続する必要があります。あなたの場合、パーティションは2048で始まるので、オフセットは1048576(2048 * 512)でなければなりません。
losetup -o 1048576 /dev/loop1 file.img
mkfs.ext2 /dev/loop1
mount /dev/loop1 /mnt
# Do whatever you want with the partition here
umount /mnt
losetup -d /dev/loop1
losetup -d /dev/loop0
これはトリックを行う必要があります。
答え2
sfdisk
+mke2fs
これは、これら2つのツールと慎重なオフセット計算を組み合わせることによって実現できます。
これはsudoなしで行うことができます。
ここでは、最小限の実行可能な例について説明します。https://stackoverflow.com/questions/10949169/how-to-create-a-multi-partition-sd-image-without-root-privileges/52850819#52850819