首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装windows后,Fedora不再启动。获取错误:找不到文件'/vmlinuz‘。我该怎么修理靴子?

安装windows后,Fedora不再启动。获取错误:找不到文件'/vmlinuz‘。我该怎么修理靴子?
EN

Unix & Linux用户
提问于 2018-08-24 02:23:11
回答 1查看 2.6K关注 0票数 1

我不得不安装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清单时,我会看到以下内容:

代码语言:javascript
复制
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命令行中看到的内容,我应该相应地编辑清单。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 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 systeminst.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中。如果您在重新安装内核包之后更新了前者,则可以使用以下命令手动触发后一个文件的更新:

代码语言:javascript
复制
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/464543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档