ファイルにディスクデバイスを作成する

ファイルにディスクデバイスを作成する

次のコマンドを使用してファイルにディスクデバイスを作成しようとしています。

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

これはトリックを行う必要があります。

おすすめ記事