我不得不安装Windows 10,因为安装有困难,我拔掉了前两个驱动器(其中有Fedora数据)。所以,只要有一个硬盘插入,我就能成功安装Windows。
现在,我把我所有的硬盘都插上了。我可以让Windows正确地启动,但是Fedora不再启动。
当我从grub中选择Fedora时,这是一个错误:
错误:没有这样的设备:3b9c12dc-6ed0-4e2f-a28b-3e0931cccc2错误: file'/vmlinuz-4.13.9-300.fc27.x86_64‘找不到。错误:您需要先加载内核。
所以,我搜索了一下,发现了这个问题,但老实说,我并没有完全理解答案。无论哪种方式,我都按了grub命令行的c。当我在命令行中输入ls时,我会看到以下内容:
(lvm/fedora_hdd-交换) (lvm/fedora_sdd-root) (lvm/fedora_sdd-home) (hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt2) (hd0,gpt1) (hd1) (hd1,gpt12) (hd1,gpt11) (hd2) (hd3,hd2) (hd3,en19#)(,)(,)
现在,当我输入ls (lvm/fedora_hdd-root)/时,我确实看到了所有必要的linux文件,比如/boot、/etc等等。所以我的文件是安全的,我假设我只需要正确地配置grub?
当我回到grub并键入e来编辑Fedora清单时,我会看到以下内容:
getparams 'Fedora (4.13.9-300.fc27.x86_64) 27 (Workstation Edition)
load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2
set root='hd0,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=achi0,gpt2 3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2
else
search --no-floppy --fs-uuid --set=root 3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2
fi 我认为,根据我在grub命令行中看到的内容,我应该相应地编辑清单。
发布于 2018-08-24 09:05:01
GRUB并不真正关心您的Linux根分区;只有Linux内核关心这个问题。GRUB想要找到的是包含/boot文件系统的分区。由于各种原因,GRUB称它为"GRUB根文件系统“。
错误消息error: file '/vmlinuz-4.13.9-300.fc27.x86_64' not found中的内核路径名没有/boot前缀。这告诉我您的/boot可能是一个单独的文件系统,GRUB用于引导Fedora的配置中的set root='hd0,gpt2'行告诉我,在某个时候,它是某个GPT分区磁盘上的第二个分区。
如果键入ls (lvm/fedora_hdd-root)/boot/,可能会发现它只是一个空目录。它充当实际/boot文件系统的挂载点。
还有文件系统UUID,但是错误消息error: no such device: 3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2表示找不到它。
我的猜测是,在最好的情况下,驱动器检测顺序可能已经改变,而过去的hd0,gpt2现在可能是hd3,gpt2。
在最坏的情况下,您的/boot分区实际上位于安装了Windows 10的磁盘上,并且Windows安装覆盖了该分区。但是/boot分区相对容易替换:您需要使用启动菜单选项Troubleshooting -> Rescue a Fedora system或inst.rescue引导选项,从Fedora安装媒体启动到救援模式。
一旦救援模式启动,它将为您提供一个命令提示符。如果一切顺利,您的Fedora系统应该已经安装在/mnt/sysimage下。因此,首先使用chroot /mnt/sysimage命令,这样就不必在所有路径名前加上/mnt/sysimage的前缀,并且您将能够使用正常的包管理工具。
现在,您可以创建一个新的/boot分区并挂载它,或者--因为GRUB显然可以读取LVM逻辑卷--只需将/boot文件系统中的内容重新安装到根文件系统的/boot目录中即可。
由于显然您使用的是基于UEFI的系统(因为您的所有分区都是GPT类型),这意味着如果/boot/efi不存在(充当EFI系统分区的挂载点),只需创建一个空目录,运行mount /boot/efi,验证/etc/default/grub中的设置是否与当前配置匹配,并使用rpm --reinstall重新安装最新的内核包。
内核包包含/vmlinuz-*文件,包安装过程将自动为它创建一个适当的initramfs文件。一旦完成,必须在/boot中的所有基本文件现在应该被恢复。内核包重新安装过程甚至应该为您更新实际的GRUB配置文件。
请注意,GRUB有两个配置文件:/etc/default/grub中的简化配置文件和自动生成的实际配置文件,该配置文件位于UEFI系统上的/boot/efi/EFI/fedora/grub.cfg中。如果您在重新安装内核包之后更新了前者,则可以使用以下命令手动触发后一个文件的更新:
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfghttps://unix.stackexchange.com/questions/464543
复制相似问题