Fdisk

在文件中創建磁碟設備

  • October 17, 2018

我正在嘗試在文件中創建磁碟設備:

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

我有兩個問題:

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 開始而不是從 0 開始?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.- 最初,fdisk 創建分區試圖使它們與柱面邊界對齊,使磁碟上的第一個柱面空閒,因為它將用於 MBR、分區表和其他東西。這樣,第一個分區通常從第 63 塊開始(每個塊為 512 字節)。RedHat 6.x 等發行版中的 fdisk 仍然以這種方式工作,但會警告您並讓您選擇非 DOS 兼容模式。

較新的 fdisk 版本,創建與 MB 邊界對齊的分區,以確保分區與頁面對齊,因為這會對性能產生巨大影響(如果您對此感到好奇,可以在我的部落格上閱讀更多資訊:http://sinrega。 org/?p=14http://sinrega.org/?p=13)。2048 為 1 MB (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

這應該可以解決問題。

引用自:https://unix.stackexchange.com/questions/157876