Arch-Linux
lsblk 說EFI分區的文件系統是crypto_LUKS,而diskutil說它是FAT32(雙啟動arch/mac)
我試圖在我的 MacBook 上雙啟動 Arch。起初,我嘗試使用 LUKS 加密安裝 Arch。不幸的是,在使用指南的過程中,我了解到它有點過時,而且我不具備在沒有指南的情況下繼續安裝的知識,所以我刪除了所有內容並從頭開始,這次沒有加密。由於錯誤的文件系統,即crypto_LUKS,我無法
mount /dev/<appleEFIpartition> /mnt/boot
(如本指南中所述)之前一直很好。我真的很驚訝這是怎麼可能的,因為我沒有加密我的 mac 引導載入程序,它仍然可以完美執行,我可以啟動到 macOS 並毫無問題地使用它(如果我加密了我的引導載入程序,我希望我的電腦會損壞) . 我決定仔細檢查,macdiskutil
說我的 EFI 是 FAT32(沒有提到任何卷的 crypto_LUKS)。我對這怎麼可能感到非常困惑。這是我首先在 Arch 安裝介質上檢查文件系統然後從 macOS中使用的螢幕截圖。
diskutil
通常,LUKS 標頭無法在格式化後保留。
設置:
# truncate -s 100M foobar.img # losetup --find --show foobar.img /dev/loop0 # parted /dev/loop0 mklabel gpt mkpart boot 1MiB 100%
盧克斯:
# cryptsetup luksFormat /dev/loop0p1 # wipefs /dev/loop0p1 DEVICE OFFSET TYPE UUID LABEL loop0p1 0x0 crypto_LUKS d9a4c128-1cb9-4252-a7ec-697ae4c35535 loop0p1 0x4000 crypto_LUKS d9a4c128-1cb9-4252-a7ec-697ae4c35535
胖的:
# mkfs.vfat /dev/loop0p1 # wipefs /dev/loop0p1 DEVICE OFFSET TYPE UUID LABEL loop0p1 0x36 vfat 524F-02F3 loop0p1 0x0 vfat 524F-02F3 loop0p1 0x1fe vfat 524F-02F3
因此,在 mkfs.vfat 之後,crypto_LUKS 標頭簽名消失了。
然而,這畢竟是 Linux ……其中 LUKS 標頭是一個已知的東西,因此它會被擦除是有道理的。在另一個不使用 LUKS 的作業系統中,這可能是另一回事。
修復擦除的 LUKS 標頭後,可以同時擁有:
# wipefs /dev/loop0p1 DEVICE OFFSET TYPE UUID LABEL loop0p1 0x0 crypto_LUKS key to try again ... loop0p1 0x4000 crypto_LUKS loop0p1 0x36 vfat 615E-AF44 loop0p1 0x1fe vfat 615E-AF44
此時,如果指定,文件系統仍然可以正常安裝:
# mount /dev/loop0p1 /mnt/foobar mount: /mnt/foobar: unknown filesystem type 'crypto_LUKS'. dmesg(1) may have more information after failed mount system call. # mount -t vfat /dev/loop0p1 /mnt/foobar # grep foobar /proc/mounts /dev/loop0p1 /mnt/foobar vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0
所以我們在同一台設備上同時擁有 LUKS 和 vfat 魔法。
此時,您可以使用
wipefs
僅刪除 LUKS 標頭:# umount /mnt/foobar # wipefs -a -t crypto_LUKS /dev/loop0p1 /dev/loop0p1: 6 bytes were erased at offset 0x00000000 (crypto_LUKS): 4c 55 4b 53 ba be /dev/loop0p1: 6 bytes were erased at offset 0x00004000 (crypto_LUKS): 53 4b 55 4c ba be
它只回到 vfat :
# wipefs /dev/loop0p1 DEVICE OFFSET TYPE UUID LABEL loop0p1 0x36 vfat 615E-AF44 loop0p1 0x1fe vfat 615E-AF44
它被這樣檢測
# file -s /dev/loop0p1 /dev/loop0p1: DOS/MBR boot sector # blkid /dev/loop0p1 /dev/loop0p1: SEC_TYPE="msdos" UUID="615E-AF44" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="boot" PARTUUID="e3d8e408-2e48-45c4-bd6d-9be685d95ed5"
並且它再次安裝文件系統自動檢測,因此
-t vfat
不再需要# mount /dev/loop0p1 /mnt/foobar