Arch-Linux

如果(root)是 F2FS,將 GRUB 安裝到加密分區不起作用

  • July 3, 2019

我正在嘗試使用加密/boot分區設置新的 Arch Linux 安裝,如下所述:https ://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#Encrypted_boot_partition_.28GRUB.29

我正在創建三個分區cgdisk

/dev/sda1 - 類型 ESP ( ef00) 大小 100MiB

/dev/sda2 - 類型 Linux ( 8300) 大小 200MiB - 用於/boot(加密後)

/dev/sda3 - 類型 Linux LVM ( 8e00) 大小 12GiB - 用於/(加密後)

然後我使用這些命令:

mkfs.fat -F32 /dev/sda1

cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptoboot
mkfs.ext2 /dev/mapper/cryptoboot
mkdir /mnt/boot
mount /dev/mapper/cryptoboot /mnt/boot

mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

cryptsetup luksFormat /dev/sda3
cryptsetup open /dev/sda3 cryptosystem
mkfs.f2fs /dev/mapper/cryptosystem
mount /dev/mapper/cryptosystem /mnt

# edit "/etc/pacman.d/mirrorlist" as needed

pacstrap /mnt base grub-efi-x86_64 efibootmgr dosfstools f2fs-tools

genfstab -U /mnt >> /mnt/etc/fstab

arch-chroot /mnt

# remember to configure time, locale, language and hostname

# edit "/etc/mkinitcpio.conf"
# HOOKS="base udev autodetect modconf block keymap encrypt lvm2 filesystems keyboard fsck"

mkinitcpio -p linux

# edit "/etc/default/grub"
# GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda3:lvm"
# GRUB_ENABLE_CRYPTODISK=y

grub-mkconfig -o /boot/grub/grub.cfg

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub --recheck

我收到此錯誤:

為 x86_64 平台安裝。

grub-install:錯誤:無法獲取“/boot/efi”的規範路徑。

已經嘗試過:

  • 安裝fuse2mtools包;
  • 在環境中重新創建/boot/efi目錄並重新掛載/dev/sda1到它chroot

ext4用於根分區時,最後一個過程有效,並且 GRUB 安裝 - 甚至引導(奇怪的是,不需要重新安裝,只需mkdir)。

但是對於 F2FS,這還不夠,儘管它設法將錯誤消息更改為:

為 x86_64 平台安裝。

grub-install:錯誤:未知文件系統。

根據 Arch Wiki ($$ 1 $$,$$ 2 $$) 應該可以將 F2FS 用於 root,前提是 GRUB 安裝到具有它支持的另一個文件系統的單獨分區。我的/boot分區是ext2. 那麼,為什麼不安裝呢?

非常感謝您的幫助。

解決方案是注意/etc/fstab它的生成,因為genfstab不添加條目/boot並且/boot/efi必須手動完成。

之後chroot,我們不僅要重新掛載 ESP,還要重新掛載/boot分區。然後grub-install會工作。

**更新:**安裝/boot和 ESP 應該在將根文件系統安裝到之後完成/mnt,即

# format the ESP
mkfs.fat -F32 /dev/sda1

# set up LUKS for the boot partition
cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptoboot
mkfs.ext2 /dev/mapper/cryptoboot

# same for the root partition
cryptsetup luksFormat /dev/sda3
cryptsetup open /dev/sda3 cryptosystem
mkfs.f2fs /dev/mapper/cryptosystem

# mount root, and only then, mount /boot and the ESP, in that order
mount /dev/mapper/cryptosystem /mnt

mkdir /mnt/boot
mount /dev/mapper/cryptoboot /mnt/boot

mkdir /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

# edit "/etc/pacman.d/mirrorlist", then continue with pacstrap etc

這是一個邏輯問題。如果我們按該順序執行操作,genfstab將正確生成所有分區的條目,並且一切都會正常工作。

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