标签: boot-loader

重启后 GRUB 在命令行中启动

我在我的笔记本电脑上安装了 Linux Mint 以及预装的 Windows 10。 当我打开电脑时,大部分时间都会出现正常的 GRUB 菜单:

GRUB 菜单

但是在启动 Linux 或 Windows 然后重新启动后,我 GRUB 以命令行模式启动,如下面的屏幕截图所示:

GRUB 命令行

可能我可以键入一个命令以从该提示符启动,但我不知道。有效的是使用 Ctrl+Alt+Del 重新启动,然后反复按 F12 直到出现正常的 GRUB 菜单。使用这种技术,它总是加载菜单。不按 F12 重新启动总是在命令行模式下重新启动。

我认为 BIOS 启用了 EFI,并且我在 /dev/sda 中安装了 GRUB 引导加载程序。

为什么会发生这种情况,我如何确保 GRUB 始终加载菜单?

编辑

正如评论中所建议的,我尝试清除grub-efi软件包并重新安装它。这并没有解决问题,但现在当它在命令提示符模式下启动时,GRUB 显示以下消息:

error: no such device: 6fxxxxx-xxxx-xxxx-xxxx-xxxxxee.
Entering rescue mode...
grub rescue>
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我检查了blkid命令,这是我的 linux 分区的标识符。也许这些额外的信息可以帮助弄清楚发生了什么?

dual-boot boot-loader grub2 uefi

71
推荐指数
6
解决办法
45万
查看次数

/boot 分区的真正用途是什么?

我正在阅读有关 Linux 分区和文件系统的相对较旧的文本(LPIC 1 Certification Bible)。它说:

某些版本的 Linux 引导加载程序无法访问磁盘上前 1024 个柱面之外的内核。通过将 /boot 分区放在驱动器的开头,您可以确保在启动时访问内核时不会出现问题。这个问题最常出现在双引导 Linux 以及第一个分区上的另一个操作系统的情况下。

为什么引导加载程序“无法访问磁盘上前 1024 个柱面之外的内核”?

另外,“将 /boot 分区放在驱动器的开头”是什么意思?

fhs partition boot-loader

43
推荐指数
8
解决办法
2万
查看次数

为什么大多数发行版链接 UEFI 和 grub?

大多数发行版会在 UEFI 系统上安装额外的引导加载程序。UEFI 本身是一个引导加载程序,它提供了一个菜单来选择不同的操作系统或单个内核。此外,UEFI 设置可以使用用户空间工具轻松更改,例如efibootmgr.

内核从 3.3 开始支持 EFI_STUB,这意味着内核可以直接从 UEFI 加载。发行版决定使用额外的引导加载程序的原因是什么?大多数关于 Linux/UEFI 的教程主要关注如何设置额外的引导加载程序(rEFInd、grub2、ELILO 等),而不是使用 EFI_STUB 引导 Linux。

发行版中唯一缺少的是支持。由于大多数发行版链接了第二个引导加载程序,因此内核不会添加到 UEFI 引导菜单,也不会复制到 EFI 系统分区。

三个脚本足以完成所有魔术。一种将 initramfs 复制到 ESP 的方法。第二个将内核复制到 ESP 并在 UEFI 启动菜单中创建一个新条目。第三个脚本从 ESP 中删除旧内核和 initramfs,并删除 UEFI 启动菜单项。这允许完全自动化的内核/initramfs 更新/清除,而无需用户交互。一年多以来,我一直在使用这种方法,并且效果很好。

为什么大多数发行版使用 grub 而不是 EFI_STUB?

链接:

编辑:我不是在谈论完全删除 grub 支持,而是为那些出于各种原因想要使用它的人提供选择。发行版可以grub-efi为那些想要链接 UEFI 和 grub 的人提供一个包,以及一个efistub-boot包含我上面提到的脚本的包。

boot boot-loader grub2 uefi

37
推荐指数
1
解决办法
8167
查看次数

安装发行版时的“可引导标志”选项是什么?

今天的发行版是否需要“可引导标志”?如果没有,那为什么它仍然在安装程序中?究竟是什么?

boot boot-loader bootable system-installation

34
推荐指数
1
解决办法
9万
查看次数

在 U 盘上安装 Grub 2

MultiBootISOs是一种工具,可让您在 USB 闪存驱动器上安装 Grub。我真的很喜欢它,因为它让我可以从 ISO 文件启动,并让我在我的 USB 上放置一堆 ISO 并选择要启动的一个。

问题是,这是一个Windows工具,我不知道如何通过命令行来做。我也想知道怎么安装Grub(2)这样的,Grub Legacy好像比较容易...

编辑:我不是要工具(绝对不是 Windows 工具)。我想知道我必须执行哪些命令才能产生相同的效果。我现在脑子里有 Ubuntu,但如果有一种通用的方法可以在 USB 中启动任何 ISO,那会更好。

dual-boot usb boot-loader iso grub2

30
推荐指数
2
解决办法
6万
查看次数

从“grub 救援>”崩溃中恢复

最初发布到 AskUbuntu.com ...

AskUbuntu 采用了关闭有关 EOL(生命周期结束)版本问题的策略。还有一个声音队伍来删除它们。为了防止可能丢失这个热门问题(迄今为止有 342335 次浏览),我在此处放置了一个修订版。--- 文档打捞者

“经典”系统...

  • Puppy Linux 5.2.8 (Lucid) 基于 Ubuntu 10.04 (Lucid Lynx)
  • GRUB 2引导加载程序

GRUB 2将许多*.mod文件(内核模块)放在/boot/grub. 删除这些文件(认为它们是放错位置的声音文件)导致重新启动失败并提示grub rescue>.

在这种情况下如何恢复?

ubuntu boot-loader grub2 busybox

29
推荐指数
2
解决办法
35万
查看次数

内核如何知道它是从休眠状态恢复,而不是启动?

当Linux系统休眠并从休眠状态恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?

起初,我认为GRUB(或其他引导加载程序)通过内核参数告诉内核。但只要我检查/proc/cmdline,内核参数就和平常一样了。是否有任何机制让内核知道它正在恢复?

boot-loader power-management hibernate linux-kernel

27
推荐指数
1
解决办法
3469
查看次数

安装 CentOS 7 后 Windows 启动选项丢失,我该如何找回?

我最近在一台运行 Windows 7 的机器上安装了 CentOS 7。我做了一个双引导安装,并在一个分区中安装了 CentOS。但是当我启动我的机器时,它只给了我两个 CentOS 选项。它没有给我选择启动 Windows 7 的选项。如何将 Windows 7 添加回启动选项?

注意:我正在阅读这篇题为:CenTOS 7 dual boot with windows 的帖子,但我的/grub文件夹中似乎只有一个splash.xpm.gz文件,没有其他文件。另外,我是 Linux 新手,需要一步一步地学习。

编辑#1

我在命令行上得到以下结果:

[root@localhost home]# sudo update-grub
sudo: update-grub: command not found
[root@localhost home]# sudo grub-mkconfig
sudo: grub-mkconfig: command not found
Run Code Online (Sandbox Code Playgroud)

另外,我目前正在研究这些命令可能不适用于 CentOS 的可能性。例如,在这个标题为“ RHEL/Fedora/CentOS 系统的 update-grub 等效? ”的U&L 问答中,以及标题为“在 Windows 之后安装 Centos 7 并且无法启动到 CentOS ”的问答中,似乎暗示我应该重新安装grub2。但是我该怎么做呢?我刚刚在学习Linux。

编辑#2

以下命令确实有效。这是输出:

[root@localhost home]# sudo grub2-mkconfig 2>/dev/null
#
# DO NOT EDIT …
Run Code Online (Sandbox Code Playgroud)

dual-boot boot-loader centos grub2

23
推荐指数
3
解决办法
8万
查看次数

Arch Linux grub 安装错误“airootfs”

我正在关注官方安装教程。一切都很顺利,直到引导加载程序部分。

我遇到了错误

/usr/bin/grub-probe: error: failed to get canonical path of 'airootfs'.
Run Code Online (Sandbox Code Playgroud)

执行命令时与此问题相同:

grub-mkconfig -o /boot/grub/grub.cfg
Run Code Online (Sandbox Code Playgroud)

我正在 VirtualBox 上安装 arch,并一步一步地遵循官方的 wiki 教程GRUB部分。

我可以成功启动到 grub,但我只能看到一个 grub shell。作为推论,我认为自从生成 grub 配置文件的步骤以来它已经出轨了。希望我的信息有帮助。


BTW 其实我在上一步中也遇到过这个错误——安装grub

grub-install --target=i386-pc /dev/sda
Run Code Online (Sandbox Code Playgroud)

我添加了根目录参数,它继续运行而没有出现错误。

grub-install --root-directory=/mnt /dev/sda
Run Code Online (Sandbox Code Playgroud)

我这样做是因为我在 /mnt 上安装了我的主要 Linux 分区 /dev/sda3 但没有任何根或引导目录参数供我在 grub-mkconfig 中使用。

这是 fdisk 实用程序显示的我的分区表: 我的分区表

多谢。问候。

boot arch-linux boot-loader grub2

23
推荐指数
1
解决办法
7万
查看次数

Linux/xBSD 在 GRUB 之前是如何引导的?

根据维基百科,GRUB 于 1995 年发布。那时 Linux 和 xBSD 已经存在了好几年。我知道早期的 Unix 版本在 70 年代和 80 年代与硬件相关联,但 Linux 和 xBSD 可以免费分发和安装。这就引出了一个问题,那时您将如何引导 Linux?发行版是否带有自己的引导加载程序实现?

boot-loader history

22
推荐指数
4
解决办法
7329
查看次数