标签: grub2

如何在 Arch Linux 中更新 GRUB

在 Ubuntu 中,我们使用这个命令来更新 GRUB:

# update-grub
Run Code Online (Sandbox Code Playgroud)

但是如何在 Arch Linux 中更新 GRUB 2.00版?

arch-linux grub2

76
推荐指数
1
解决办法
20万
查看次数

重启后 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万
查看次数

如何知道我是否使用 UEFI 启动?

我一直在搜索,但没有找到一种明显的方法来了解 GRUB 是在系统引导中使用 UEFI,还是 BIOS 兼容模式,或完整的 BIOS。我只找到了Windows 方法。GRUB 或内核引导日志中是否有显示我使用的是 UEFI、EFI 或 BIOS 的内容?

boot grub2 uefi

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

为什么 Linux 允许 'init=/bin/bash'?

我最近发现,如果我在启动前编辑 GRUB 并添加,rw init=/bin/bash我最终会得到一个 root shell。

处于一种我想了解一切的状态,我想知道为什么会发生这种情况。我的意思是这是一个错误吗?它是一个功能吗?是否可以帮助管理员解决问题,因为它仅在您可以物理访问计算机时才有效?

它是由 GRUB 提供还是由实际内核提供?

linux boot grub2

58
推荐指数
5
解决办法
8万
查看次数

在我重新启动之前,如何告诉 GRUB 我要重新启动到 Windows?

我设置了双引导 Linux/windows 系统,并且经常从一个切换到另一个。我在想是否可以在其中一个菜单中添加一个菜单项以直接重新启动到 Windows,而无需在 GRUB 提示符处停止。

我在论坛上看到这个问题,这正是我想要的,但它是在处理 lilo,这不是我的情况。

我想到了一个解决方案,可以修改 GRUB 菜单中的默认条目,然后重新启动,但是有一些缺点,我想知道是否有更干净的替代方案。

(另外,我对从 Windows 直接启动到 Linux 的解决方案感兴趣,但这可能更难,不属于这里。无论如何,只要我有一种方式,另一种方式可以设置为默认值。

UPDATE似乎有人问过类似的问题,如果这些是建议的答复,我还不如编辑/boot/grub/grubenv作为grub-rebootgrub-set-defaultgrub-editenv做。)

提前感谢您的任何提示。

更新

这是我的 GRUB 版本: (GRUB) 1.99-12ubuntu5-1linuxmint1

我试过运行grubonce,没有找到命令。在存储库中搜索它什么也没给我。我在 Linux Mint 上,所以可能是这样......

看到man grub-reboot,它似乎像我想要的那样grubonce做。它也随处可用(至少对我来说是这样,我认为它是 grub 包的一部分)。我看到了两个相关的命令:grub-editenvgrub-set-default

我发现在运行之后,运行sudo grub-set-default 4grub-editenv list你会得到类似的东西:

saved_entry=4
Run Code Online (Sandbox Code Playgroud)

当运行时grub-reboot 4,你会得到类似的东西:

prev_saved_entry=0
saved_entry=4
Run Code Online (Sandbox Code Playgroud)

这意味着两者都做同样的事情(一个是临时的,一个不是)。

令人惊讶的是,当我尝试:

sudo grub-reboot 4
sudo reboot now
Run Code Online (Sandbox Code Playgroud)

它不起作用,好像我什么也没做,它只是像往常一样向我显示菜单,并选择了第一个条目,说它将在 …

dual-boot grub2 reboot

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

可以自定义 GRUB 字体大小吗?

我想减小 GRUB 引导加载程序的字体大小。有可能吗?

fonts grub2 framebuffer

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

“警告:文件系统‘ext2’不支持嵌入。” 但我的系统也没有嵌入,为什么 grub 尝试?

我正在阅读自己在 Debian 上发布 Jessie 的信息,因此我对任何可能导致问题的消息(即警告)格外谨慎(应该说是偏执)。我的系统是安装了 Debian testing/unstable 的台式机,在 ext4 分区上同时安装/boot/,但我grub-pc在 Debian 中升级软件包时看到此消息:

Installing for i386-pc platform.
Installation finished. No error reported.
Installing for i386-pc platform.
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
Generating grub configuration file ...
Run Code Online (Sandbox Code Playgroud)

为什么 grub 说我的系统是嵌入式的?这是什么原因?我试图检查 grub-install 二进制文件,但我无法理解它。

grub2

41
推荐指数
3
解决办法
10万
查看次数

为什么大多数发行版链接 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
查看次数

GRUB2 可以和 Windows 共享 EFI 系统分区吗?

我有一个现有的 Windows 7 GPT 安装,它已经有一个 EFI 系统分区。

我现在正在尝试在单独的硬盘上安装 Linux,该硬盘也是 GPT 格式。我没有找到任何可以在没有 EFI 系统分区的情况下启动 grub 的工作方法,所以我的问题是:

grub2 是否可以使用与 Windows 相同的 EFI 系统分区?我如何告诉 grub2 使用它?

澄清我的设置:

gpt /dev/sda:
    1 EFI System partition created by windows (100MB)
    2 "Microsoft reserved partition" (200MB)
    3 Windows root (rest of disk)

gpt /dev/sdb:
    # After answering my own question: this partition is not needed
    1 boot partition containing grub, kernels etc.(32MB)
    2 crypto LVM partition (rest of disk)
Run Code Online (Sandbox Code Playgroud)

我希望 grub2 使用现有的/dev/sda1EFI 分区。

PS:我的主板支持 EFI。

dual-boot windows grub2 gpt uefi

33
推荐指数
1
解决办法
5万
查看次数

Debian/Grub2:将根分区移动到新驱动器?

有人对如何将根分区移动到新驱动器并设置 grub2 以在该驱动器上启动有任何建议吗?我似乎没有运气指导 grub-mkconfig 我想要做什么(例如 chroot'int 进入我的新根目录只会混淆所有脚本)。

背景我在无头低功耗 NAS 上运行 Debian Squeeze。我目前的设置是/sda0/bootsde0(CF卡):我需要独立/boot,因为sd[a-d]需要做延迟自旋向上。现在我找到了一个旧的 2.5" IDE 磁盘用作/包括/boot允许我旋转所有大磁盘。

我试过的基本上我去了

mount -o rw /dev/sdf5 /mnt/newroot
cp -ax / /mnt/newroot
cp -ax /boot /mnt/newroot/boot
Run Code Online (Sandbox Code Playgroud)

然后我试过了

chroot /mnt/newroot
update-grub
Run Code Online (Sandbox Code Playgroud)

但这失败了 grub 询问是否安装了 root。然后我做了一个半心半意的尝试,在设置上/mnt/newroot/grub/grub.cfg找到内核映像sdf5,然后是一个grub-install --root-directory=/mnt/newroot /dev/sdf. 但是,当我尝试从sdf.

我的备份计划是重新安装,所以有一个额外的问题(这个问题没有复选标记):我需要做什么才能让我的 lvm2 和 mdadm 配置通过?它是否全部存储在文件系统中(并且会被自动发现),还是我需要自己处理?

解决方案(感谢 Maciej Piechotka):正如 Maciej 指出的,我需要一个适当的 chroot 才能使所有 grub …

debian grub2

32
推荐指数
1
解决办法
6万
查看次数

标签 统计

grub2 ×10

uefi ×4

boot ×3

dual-boot ×3

boot-loader ×2

arch-linux ×1

debian ×1

fonts ×1

framebuffer ×1

gpt ×1

linux ×1

reboot ×1

windows ×1