lux
1
三块硬盘,其中esp分区在nvme0n1p1上,引导位于第二块硬盘上subvol=@arch 的 系统,但是开机显示没有vmlinuz-linux-lts 文件 我完全按照btrfs wiki 和 refind wiki
分别在mkinitcpio.conf中添加了 btrfs ,并重新生成内核,但是于事无补
有高手帮忙看看是什么问题么?
MODULES=(btrfs)
BINARIES=(btrfs)
分区如下:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 946.7M 1 loop /run/archiso/airootfs
sda 8:0 1 57.8G 0 disk
├─sda1 8:1 1 57.7G 0 part
│ └─ventoy 253:0 0 1.4G 0 dm
└─sda2 8:2 1 32M 0 part
sdb 8:16 0 1.9T 0 disk
└─sdb1 8:17 0 1.9T 0 part
nvme2n1 259:0 0 1.8T 0 disk
└─nvme2n1p1 259:2 0 1.8T 0 part
nvme0n1 259:1 0 1.8T 0 disk
├─nvme0n1p1 259:3 0 1G 0 part /mnt/boot/efi
├─nvme0n1p2 259:4 0 128M 0 part
├─nvme0n1p3 259:5 0 150.1G 0 part
├─nvme0n1p4 259:6 0 906.7G 0 part
└─nvme0n1p5 259:7 0 805.1G 0 part
nvme1n1 259:8 0 1.8T 0 disk
└─nvme1n1p1 259:9 0 1.8T 0 part /mnt
menuentry "Arch" {
icon /EFI/refind/icons/os_arch.png
volume "UUID=8f4d6769-418e-4bd5-8b9a-2554903c7af5"
loader /@arch/boot/vmlinuz-linux-lts
initrd /@arch/boot/initramfs-linux-lts.img
options "root=UUID=8f4d6769-418e-4bd5-8b9a-2554903c7af5 rw add_efi_memmap rootflags=subvol=@arch initrd=/@arch/boot/amd-ucode.img"
submenuentry "Boot using fallback initramfs" {
initrd /@arch/boot/initramfs-linux-lts-fallback.img
}
submenuentry "Boot to terminal" {
add_options "systemd.unit=multi-user.target"
}
}
lux
3
vmlinuz-linux 不是 vmlinuz-linux-lts 贴错内容了,这个错误我发现后已经改掉了
手写是因为要引导多个操作系统,而且 /boot/refind.conf 配置比较麻烦。
根据这里的提示
我添加了,但是似乎并没有什么作用
also_scan_dirs boot,ESP2:EFI/linux/kernels
also_scan_dirs boot,@/boot
also_scan_dirs +,@/kernels
volume 这一项支持这样的语法吗?看文档的说法,这里只支持填写文件系统 LABEL、分区 PARTLABEL、分区 PARTUUID,不支持文件系统 UUID,而且看 wiki 的例子不需要像内核参数那样写 UUID= 这个前缀,直接写值即可。
查看分区 PARTUUID 可以用 lsblk -o+PARTUUID 命令。
(不论如何,我个人是更倾向于使用自动探测而不是手写 menuentry)
lux
5
目前而言,自动探测并没有探测到要启动的系统。
我改下 partuuid试试,之前一直在用uuid一直是正常的,事实证明,partuuid 和 uuid 结果相同的
menuentry "Arch" {
icon /EFI/refind/icons/os_arch.png
volume "UUID=8f4d6769-418e-4bd5-8b9a-2554903c7af5"
loader /@arch/boot/vmlinuz-linux-lts
initrd /@arch/boot/initramfs-linux-lts.img
options "root= PARTUUID=f3931f49-426e-4569-b03e-a56ec31fb498 rw add_efi_memmap rootflags=subvol=@arch initrd=/@arch/boot/amd-ucode.img"
submenuentry "Boot using fallback initramfs" {
initrd /@arch/boot/initramfs-linux-lts-fallback.img
}
submenuentry "Boot to terminal" {
add_options "systemd.unit=multi-user.target"
}
}
lux
7
还是不行,怎么感觉refind 读不到子卷里的 /boot目录,但是我在driver目录里已经复制了btrfs的驱动了。
menuentry "Arch" {
icon /EFI/refind/icons/os_arch.png
volume label ## 经测试此处一定要填写卷标,否则无法启动。
loader /@arch/boot/vmlinuz-linux-lts
initrd /@arch/boot/initramfs-linux-lts.img
options "root= PARTUUID=f3931f49-426e-4569-b03e-a56ec31fb498 rw add_efi_memmap rootflags=subvol=@arch initrd=/@arch/boot/amd-ucode.img"
submenuentry "Boot using fallback initramfs" {
initrd /@arch/boot/initramfs-linux-lts-fallback.img
}
submenuentry "Boot to terminal" {
add_options "systemd.unit=multi-user.target"
}
}
哦,我才发现你上面改错位置了,我说的就是 volume 那一行,不是 options 里的内核命令行参数,这是不相干的两回事。volume 是告诉 refind 在哪里寻找内核和 initramfs,内核命令行参数是在内核启动后给 initramfs 寻找 root 分区使用的。
写成 volume f3931f49-426e-4569-b03e-a56ec31fb498 的话大概是可以的
你好,我也遇到类似情况,我有点看不懂你这路径里的@arch是什么意思,我是直接将vmlinuz和initramfs文件放到esp分区后,这样可以自动识别的
zhwlyfx
11
我是ext4分区,尝试了多次,我发现vmlinuz和initramfs文件放在非esp分区是无法启动的,不过看你的情况能启动,说明内核不用放在esp分区也可以,很纳闷。