Fsck
如何讓 syslinux 安裝到 fat32 備份引導扇區
如何讓 syslinux 安裝到 fat32,並讓它寫入備份引導扇區。它只寫入主引導扇區,然後 fsck.fat 抱怨。您可以獲取 fsck.fat 來修復它,但這需要在互動模式下執行它,因此無法通過腳本進行。
/tmp # fallocate -l 50m test_image /tmp # mkfs.fat -F32 test_image mkfs.fat 4.1 (2017-01-24) /tmp # syslinux --directory syslinux --install test_image /tmp # fsck.vfat test -a fsck.fat 4.1 (2017-01-24) There are differences between boot sector and its backup. This is mostly harmless. Differences: (offset:original/backup) 3:53/6d, 4:59/6b, 5:53/66, 6:4c/73, 7:49/2e, 8:4e/66, 9:55/61, 10:58/74 , 90:fa/0e, 91:fc/1f, 92:31/be, 93:c9/77, 94:8e/7c, 95:d1/ac, 96:bc/22 , 97:76/c0, 98:7b/74, 99:52/0b, 100:06/56, 101:57/b4, 102:1e/0e, 103:56/bb , 104:8e/07, 105:c1/00, 106:b1/cd, 107:26/10, 108:bf/5e, 109:78/eb ------------ SNIP --------------------------------------------------------- , 484:0d/00, 485:0a/00, 504:fe/00, 505:02/00, 506:b2/00, 507:3e/00 , 508:18/00, 509:37/00 Not automatically fixing this. test: 2 files, 353/100792 clusters
根據https://en.wikipedia.org/wiki/Design_of_the_FAT_file_system:
對於 FAT32 文件系統,保留扇區包括邏輯扇區 1 的文件系統資訊扇區和邏輯扇區 6 的備份引導扇區
這意味著您可以通過呼叫這兩個命令來解決問題(替換
sdXX
為您的分區,例如sdb1
):sudo dd if=/dev/sdXX of=bootrec.dat bs=512 count=1 sudo dd if=bootrec.dat of=/dev/sdXX bs=512 seek=6
如果您正在使用磁碟映像文件,則必須在第二個命令的末尾添加
conv=notrunc,nocreat
參數,否則您將截斷並破壞映像。我已經測試了這些命令,它們使 fsck.vfat 非常高興。