Arch-Linux

lsblk 說EFI分區的文件系統是crypto_LUKS,而diskutil說它是FAT32(雙啟動arch/mac)

  • August 27, 2022

我試圖在我的 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

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