我在 MBR 驱动器上安装了带有 Grub2 的 Gentoo x64。今天我安装了 FreeBSD x64 9.2。现在我在 Gentoo 并尝试将 FreeBSD 添加到grub2菜单列表中。
grub2-install /dev/sda
os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg
Run Code Online (Sandbox Code Playgroud)
我在 Gentoo 上执行了上述操作,但没有找到 FreeBSD。FreeBSD 嵌套分区已打开sda1并包含freebsd-ufs和freebsd-swap分区。
我如何将 FreeBSD 添加到grub2?
我有一台预装了 Windows 8.1 的华硕 ROG 笔记本电脑,我将它升级到了 Windows 10,然后我想将 Bunsenlabs Linux 安装为双启动。笔记本电脑被 UEFI 锁定,我花了一些时间才弄清楚如何让它从 USB 启动。我最终通过旧版启动安装Bunsenlabs,在据说成功安装整个系统之后,重新启动后,在选择硬盘驱动器作为引导选项时,它仍然加载了Windows加载程序。然后我使用引导修复盘安装了 UEFI 版本的 Grub。现在我可以正确启动一切(我将启动返回到uefi),但我无法关闭窗口,选择关闭时它只会将我退出我的帐户。我必须通过 ACPI 关闭它......这不会是一个问题,因为 Windows 甚至没有将它检测为强制关闭(或者至少它没有)
网上有无数的 grub2/EFI 线程,但我发现很难找到上述问题的答案。我们被告知在 grub2 中的配置文件是 /boot/grub/grub.cfg。但是当出现引导问题时,grub2 可能会在没有任何错误消息的命令提示符(又名紧急 shell)中结束。因此,在能够解决任何问题之前,最好先了解 grub2 如何准确地尝试定位其配置文件。
有许多软件包的名称中包含 grub,并且是 GRUB(Grand Unified Boot Loader)的一部分。安装在我的系统上的是 -
我先看了看是符号链接文件还是普通文件——
[$] ll -h /etc/default/grub
-rw-r--r-- 1 root root 1.2K 2017-01-22 14:16 /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
我看了一下,但找不到任何可以告诉我此文件来自何处的信息?
[$] dpkg -S /etc/default/grub
dpkg-query: no path found matching pattern /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
或者
[$] dpkg-query -W /etc/default/grub
dpkg-query: no packages found matching /etc/default/grub
Run Code Online (Sandbox Code Playgroud) 我已将 GRUB2 安装到加密的引导分区,详情请见此处。我选择的散列算法luksFormat是sha512,默认值iter-time(2 秒)。
如果从命令行(从archiso或从正在运行的系统)解锁,这个加密分区需要 2 秒多一点的时间,但 GRUB 平均需要 10.5 秒来解锁它。对于我的场景,这比可接受的要慢。
我发现其他人在这里和这里有同样的问题。在第二个链接中,用户frostschutz发布了一些关于可能导致这种情况的提示,我认为其中 2 条非常有效:
1) 早期 GRUB 解锁期间 CPU 可能处于省电模式
2) GRUB 可能正在使用比系统慢得多的散列实现。他做了一个基准测试,可以在这里找到。
由于加密启动分区似乎变得越来越普遍,而且这个问题还没有令人满意的答案,我想我会问这个问题。除了减少迭代次数(这会大大降低离线攻击场景中的安全性)之外,还可以做些什么来应对 GRUB 引导加载程序的(慢得多)解密时间?
我想至少查明确切原因。有没有办法在引导加载程序屏幕中检查(并可能改变)CPU 时钟?我知道 GRUB 有一个外壳;我打开它并尝试过cat /proc/cpuinfo但它失败了“/proc not found”或类似的东西。我也试过cpuid,虽然它没有失败,但它也不返回任何内容。
作为附加信息,我得到了这些时间:
/boot) Enter。/)。同样,这是按 后计时的Enter。看起来目前大多数操作系统安装程序坚持将 /boot 放在非 RAID 分区(或“看起来像”非 RAID 分区的那种 RAID1 分区),即使是支持 RAID5 和 GRUB2 的安装程序。
我猜这个限制是 Grub1 遗留下来的历史遗迹。我的理解是 Grub1 对 RAID 一无所知,因此无法启动任何类型的 RAID 阵列——除了“看起来像”非 RAID 阵列的 RAID 阵列。
这是 Grub2 或操作系统安装程序的限制吗?
我听说有传言说 Grub2“能够在 RAID-0、RAID-1 或 RAID-5、元数据 0.90、1.0、1.1 或 1.2 上支持 /boot”。
Grub2 真的支持将 /boot 放在具有 1.2 元数据的软件 RAID1 分区上吗?
Grub2 真的支持将 /boot 放在软件 RAID5 分区上吗?
一个理想的答案将链接到解释如何将 /boot 分区(在非 RAID 分区上)移动到 RAID5 分区的教程。
“看起来像”一个非 RAID 分区,我的意思是要么
我有一台机器用于双启动 Ubuntu(当前为 16.04)和 Windows 7,使用 Ubuntu 的 GRUB 作为引导加载程序。
现在我按照官方安装说明添加了 Arch Linux 作为第三个操作系统。我没有从 Arch 安装 GRUB,因为我想使用由 Ubuntu 控制的那个。这些说明包含一个命令mkinitcpio -p linux,该命令可能会生成一些我按照描述运行的引导文件。
现在,当我尝试通过其默认条目从 GRUB 启动 Ubuntu 时,出现了这个令人不快的错误(抱歉屏幕照片):
正如输出uname -a所示,它正在尝试启动 Arch 内核,但/dev/sda6它是 Ubuntu 根分区。
我必须导航到Advanced options for Ubuntu并选择其中一个Ubuntu, with Linux 4.4.0-*条目才能加载 Ubuntu,但我找不到可以正确加载 Arch 的条目。
sudo update-grub从 Ubuntu运行(“update-grub是用于运行grub-mkconfig -o /boot/grub/grub.cfg以生成 grub2 配置文件的存根。”)不会更改任何内容。grub-customizer到目前为止,该工具也无法解决此问题。
是什么导致了 GRUB 的这种混乱,我该如何修复它以便每个 Linux 版本都使用正确的内核和正确的分区启动?
看起来我在安装了 Ubuntu 的 /boot 的情况下愚蠢地安装了 Arch,所以它可能将其引导文件放在那里。
我可以擦除所有与 Arch …
我有一个应用程序,我需要在其中启动到 Linux,执行自动化脚本,然后自动启动到 Windows。我可以使用 Kexec 来运行 grub 吗?
另一个用例是启动 Linux 内核以更新处理器微代码,然后kexec启动 GRUB 或 Syslinux 以启动 Windows——因为微代码在完全重启后将无法生存。
我听说过grub4dos(链接(不可用),存档版本),但它似乎已停产,那么有没有办法用 GRUB2 做到这一点?
我基本上需要一个可加载的 GRUB 映像kexec。我试图加载在这个解释中找到的图像,但它们似乎不起作用。感谢您的任何提示。
注意:在 2014 年发现这篇文章,它说这尚未在 kexec 中实现。
我有一个问题,所有的 linux 发行版启动文件、grub 文件和内核文件都是运行它们的主要文件,只有发行版的 iso 映像不同?
我的系统上安装了 Fedora,可以通过更改 grub 条目将其替换为 manjaro 吗?它有多安全?