我知道有很多这样的问题,但我发现的例子差异很大,足以让我困惑,我希望有人可以帮助我澄清这一点。
简要解释一下我的设置。我安装了 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 并得到相同的错误。
如果有人能够确认我到目前为止所做的事情是正确的,并为我指明正确的方向以使其正常工作,我将不胜感激。
先感谢您。