MacBook에서 Arch를 이중 부팅하려고 합니다. 처음에는 LUKS 암호화로 Arch를 설치해 보았습니다. 불행하게도 가이드를 중간쯤 읽다가 그것이 약간 오래되었다는 것을 깨달았고 가이드 없이 설치를 계속할 수 있는 지식이 없었기 때문에 모든 것을 삭제하고 이번에는 암호화 없이 처음부터 시작했습니다. 내가 할 수 없을 때까지는 괜찮았습니다 mount /dev/<appleEFIpartition> /mnt/boot
(예:이 가이드) 잘못된 파일 시스템(예: crypto_LUKS)으로 인해 발생합니다. Mac 부트로더를 암호화하지 않았지만 여전히 완벽하게 작동하고 macOS로 부팅하여 문제 없이 사용할 수 있기 때문에 이것이 어떻게 가능한지 정말 놀랐습니다. (내 부트로더 프로그램을 암호화하면 컴퓨터가 충돌할 것으로 예상했습니다.) . 나는 다시 확인하기로 결정했고 Mac에서는 diskutil
내 EFI가 FAT32라고 말했습니다(볼륨에 대한 crypto_LUKS에 대한 언급은 없습니다).
나는 이것이 어떻게 가능한지 매우 혼란스러워합니다. 여기에 있다스크린샷먼저 아치 설치 미디어의 파일 시스템을 확인한 후 diskutil
macOS에서 사용했습니다.
답변1
일반적으로 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 Magic이 모두 있습니다.
이 시점에서는 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