Fdisk
在文件中創建磁碟設備
我正在嘗試在文件中創建磁碟設備:
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=14和http://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
這應該可以解決問題。