添加一个工作启动选项以进入 luks 分区上的 pacstrap/chroot 安装

添加一个工作启动选项以进入 luks 分区上的 pacstrap/chroot 安装

我知道有很多这样的问题,但我发现的例子差异很大,足以让我困惑,我希望有人可以帮助我澄清这一点。

简要解释一下我的设置。我安装了 Windows 10,然后在另一个磁盘上安装了 garuda linux。两者都工作正常,但都是由各自的 gui 安装程序为我设置的。我现在已经安装了 arch linux,将分区(luks 加密)与我的 garuda 安装(pacstrap)分开,并且希望能够启动到它。我可以 chroot 进入安装并完成 /dev /proc 和 /sys 的绑定安装,这样我就可以看到所有设备并成功运行更新并安装了一些 bin。

磁盘/分区设置如下:

Windows 磁盘和 EFI:

Device             Start        End    Sectors   Size Type
/dev/nvme0n1p1      2048    1085439    1083392   529M Windows recovery environment
/dev/nvme0n1p2   1085440    1290239     204800   100M EFI System
/dev/nvme0n1p3   1290240    1323007      32768    16M Microsoft reserved
/dev/nvme0n1p4   1323008  519925759  518602752 247.3G Microsoft basic data
/dev/nvme0n1p5 519925760 1953523711 1433597952 683.6G Microsoft basic data

然后对于 Linux:

/dev/sda1        2048  835028991  835026944 398.2G Linux filesystem (garuda)
/dev/sda2   835028992 1859028991 1024000000 488.3G Linux filesystem (arch -no boot)

sda1 和 sda2 都位于具有 luks 加密的 btrfs 分区上。然而,我并不完全清楚 garuda 是如何设置的(gui 安装程序)。我目前已登录 garuda,并且两个驱动器都未加密,但是我只看到未启动到 (dev/sda2) 的设备的 dev/mapper,这是唯一在 lsblk 中显示 luks 映射的设备:

✦  ╰─λ lsblk -o name,uuid,type
NAME                                          UUID                                 TYPE
sda                                                                                disk
├─sda1                                        c42114f3-adea-4625-8ec7-1d9ef08c00d5 part
├─sda2                                        35308676-366b-495a-afd3-9c65701ec867 part
│ └─luks-35308676-366b-495a-afd3-9c65701ec867 fb72ec72-1352-4e5c-849d-a44c69ba4b16 crypt

未加密的设备安装后,/run/media/dan/nix_e1拱形安装可见。

/boot(garuda)我将 grub 目录、内核和 efi 分区安装到 /efi :

✦  ╰─λ ls /boot 
drwxr-xr-x   - root  1 Jan  1970  efi
drwxr-xr-x   - root 29 Mar 02:28  grub
drwxr-xr-x   - root  8 Mar 05:09  memtest86+
.rw-r--r-- 51k root 11 Mar 19:21  amd-ucode.img
.rw------- 68M root 26 Mar 16:27  initramfs-linux-zen-fallback.img
.rw------- 43M root 26 Mar 16:27  initramfs-linux-zen.img
.rw-r--r-- 11M root 23 Mar 16:37  vmlinuz-linux-zen

/etc/fstab(嘉鲁达):

UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /              btrfs   subvol=/@,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /home          btrfs   subvol=/@home,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /root          btrfs   subvol=/@root,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /srv           btrfs   subvol=/@srv,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /var/cache     btrfs   subvol=/@cache,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /var/log       btrfs   subvol=/@log,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=c42114f3-adea-4625-8ec7-1d9ef08c00d5 /var/tmp       btrfs   subvol=/@tmp,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0
UUID=C61E-FDE5  /boot/efi       vfat    defaults      0       1

我还没有在 arch 安装上将任何东西安装到 /boot 上,所以它只具有与 garuda (也基于 arch)相同的内核的副本,并且我已经创建了准备安装的 efi 目录。我已经设置了 fstab(虽然我不完全确定我是否使用了正确的 uuid - 它会看到它与 crypt uuid 还是部分 uuid 一起使用吗?)

/etc/fstab(架构):

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/mapper/luks-35308676-366b-495a-afd3-9c65701ec867 LABEL=nix_e1
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /           btrfs      rw,nosuid,nodev,relatime,ssd,space_cache=v2,subvolid=5,subvol=/ 0 0
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /home          btrfs   subvol=/@home,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /root          btrfs   subvol=/@root,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /srv           btrfs   subvol=/@srv,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /var/cache     btrfs   subvol=/@cache,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /var/log       btrfs   subvol=/@log,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
UUID=fb72ec72-1352-4e5c-849d-a44c69ba4b16 /var/tmp       btrfs   subvol=/@tmp,defaults,noatime,autodefrag,compress=zstd,discard=async,ssd 0 0
tmpfs                                     /tmp           tmpfs   defaults,noatime,mode=1777 0 0

# /dev/zram0
/dev/zram0            none        swap        defaults,pri=100  0 0

现在这是我有点迷失的地方:

从阅读中我知道我需要一个 initcpio 钩子,现在我猜这已经适合我的 garuda 安装了。我可以看到 grub-btrfs-overlayfs 已添加到挂钩中,并且 crypt 挂钩似乎是安装的一部分...我假设我也不需要在拱形分区上执行此操作,除非我想也从那里更新 grub(看到一些建议不要从两次安装中更新 grub)。

我想接下来我需要运行sudo mkinitcpio -p linux-zen(不确定我是否错过了一些配置步骤)。但是我已经添加了这个设备,/etc/crypttab现在当我输入一次密码时它会自动安装并解锁(这对于两个分区都是相同的) - 所以在登录到 garuda 时两个驱动器都被解锁......我认为这表明它是设置正确。

现在,有些人似乎建议 grub 更新应该在此时进行安装,但它不会在更新时添加菜单条目

所以我手动向 grub 添加了一个菜单项:

/etc/grub.d/40_custom

menuentry "Arch" {
search --set=root --fs-uuid luks-35308676-366b-495a-afd3-9c65701ec867
linux /boot/vmlinuz-linux-zen root=UUID=35308676-366b-495a-afd3-9c65701ec867 rw  quiet
}

现在我在 grub 启动菜单中找到一个条目,但在启动时它说找不到设备 35308676-366b-495a-afd3-9c65701ec867,我也尝试过使用 uuid fb72ec72-1352-4e5c-849d-a44c69ba4b16 并得到相同的错误。

如果有人能够确认我到目前为止所做的事情是正确的,并为我指明正确的方向以使其正常工作,我将不胜感激。

先感谢您。

相关内容