我有一些相当糟糕的经历GRUB2。我可以说(并且已经说过)关于它的设计和开发过程的一些令人讨厌的事情。我特别不喜欢它的更新方式:无论出于何种原因,它必须半自动地更新多个脚本——一个脚本通过链中的另一个间接更新——对于每次内核更新——或者许多其他小的(看似无关的)配置更改。
这与我之前的经历形成鲜明对比LILO——我正在认真考虑恢复——因为我从来没有遇到过任何问题,而且它的配置非常简单。一方面,正如我所记得的,我只需要更新(或者更确切地说,它只更新过)每个内核更新的单个、简单管理的配置文本文件。
那么 LILO 如何在具有当今内核的现代硬件上工作?GRUB 是怎么做的?其他引导加载程序如何?我是否必须满足任何先决条件,还是只是编写配置文件和运行lilo命令,因为我在过去深情地记得它?内核包更新 (Debian/Ubuntu) 是否会像 GRUB2 一样更新 LILO?
MultiBootISOs是一种工具,可让您在 USB 闪存驱动器上安装 Grub。我真的很喜欢它,因为它让我可以从 ISO 文件启动,并让我在我的 USB 上放置一堆 ISO 并选择要启动的一个。
问题是,这是一个Windows工具,我不知道如何通过命令行来做。我也想知道怎么安装Grub(2)这样的,Grub Legacy好像比较容易...
编辑:我不是要工具(绝对不是 Windows 工具)。我想知道我必须执行哪些命令才能产生相同的效果。我现在脑子里有 Ubuntu,但如果有一种通用的方法可以在 USB 中启动任何 ISO,那会更好。
我在 Gentoo Linux 系统上运行 GRUB 2.00。
我手动编译自己的内核,然后/boot使用make install. 我目前有以下内核/boot:
# ls -1 /boot/vmlinuz*
/boot/vmlinuz-3.7.4-gentoo-5
/boot/vmlinuz-3.7.4-gentoo-first
/boot/vmlinuz-3.7.4-gentoo-fourth
/boot/vmlinuz-3.7.4-gentoo-third
Run Code Online (Sandbox Code Playgroud)
运行grub2-mkconfig结果如下:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.7.4-gentoo-third
Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth
Found linux image: /boot/vmlinuz-3.7.4-gentoo-first
Found linux image: /boot/vmlinuz-3.7.4-gentoo-5
done
Run Code Online (Sandbox Code Playgroud)
如果我现在阅读生成的/boot/grub2/grub.cfg文件,我会注意到已创建以下条目:
vmlinuz-3.7.4-gentoo-thirdgrub2-mkconfig命令相同问题是在启动时我想默认加载内核的第五个修订版 ( vmlinuz-3.7.4-gentoo-5),而不是第三个 ( vmlinuz-3.7.4-gentoo-third)。我也不想访问子菜单来选择要加载的正确内核。
我怎样才能改变这种行为?我如何告诉 GRUB 我想默认运行内核的第五个修订版而不是旧的第三个修订版?一般来说,如何更改默认输入行以匹配我想要的内核而不是 GRUB 选择的看似随机的内核?
我还尝试将以下几行放入/etc/default/grub:
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
Run Code Online (Sandbox Code Playgroud)
这并没有按照我想要的方式解决问题。但至少 GRUB 似乎记住了我从中启动的最新内核并自动从子菜单中选择它。只是我不喜欢访问子菜单。
最初发布到 AskUbuntu.com ...
AskUbuntu 采用了关闭有关 EOL(生命周期结束)版本问题的策略。还有一个声音队伍来删除它们。为了防止可能丢失这个热门问题(迄今为止有 342335 次浏览),我在此处放置了一个修订版。--- 文档打捞者
“经典”系统...
GRUB 2将许多*.mod文件(内核模块)放在/boot/grub. 删除这些文件(认为它们是放错位置的声音文件)导致重新启动失败并提示grub rescue>.
在这种情况下如何恢复?
我读了很多关于双引导的书,看起来就像加载 Windows 然后用 GRUB 加载 Linux 一样简单,但是每个人都说 Windows 一有机会就喜欢丢弃 GRUB。我可以采取哪些步骤来防止这种情况发生(除了使用 Windows 的引导加载程序,我想让它尽可能简单)?
我最近在一台运行 Windows 7 的机器上安装了 CentOS 7。我做了一个双引导安装,并在一个分区中安装了 CentOS。但是当我启动我的机器时,它只给了我两个 CentOS 选项。它没有给我选择启动 Windows 7 的选项。如何将 Windows 7 添加回启动选项?
注意:我正在阅读这篇题为:CenTOS 7 dual boot with windows 的帖子,但我的/grub文件夹中似乎只有一个splash.xpm.gz文件,没有其他文件。另外,我是 Linux 新手,需要一步一步地学习。
我在命令行上得到以下结果:
[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。
以下命令确实有效。这是输出:
[root@localhost home]# sudo grub2-mkconfig 2>/dev/null
#
# DO NOT EDIT …Run Code Online (Sandbox Code Playgroud) 我正在关注官方安装教程。一切都很顺利,直到引导加载程序部分。
我遇到了错误
/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 中使用。
多谢。问候。
我在 Debian 下运行一个 web 服务器,我目前安装了 GRUB。
我应该考虑使用 LILO 而不是 GRUB 吗?以及各自的优势是什么?
我在外部机箱中有一个笔记本电脑硬盘驱动器,用作大型笔式驱动器。另外,我在其上安装了 Linux,因此我可以使用我选择的发行版启动任何机器(例如,用于数据恢复或修复 b0rked 系统或仅使用借来的笔记本电脑而不破坏预装的 Windows)。
问题是,根据硬件配置,USB 硬盘驱动器可能在不同路径下可见。对于 grub 配置,我只是使用(hda0,0)它,因为它与启动 grub 的设备相关。我在/etc/fstab. 我还在rootwait内核参数中指定,以便它在尝试挂载设备之前等待 USB 子系统稳定下来。
我应该将什么传递给内核root=?目前,从 pendrive 启动一次,检查调试消息以查看/dev/sdX内核已将哪些设备分配给 USB 驱动器,然后重新启动并编辑 grub 配置。除了Boot from USB hard drive在 BIOS 中启用并将其设置为比内部硬盘驱动器更高的优先级之外,我无法更改 PC 上的任何内容。
有多种 initrd 生成脚本在根设备路径中包含对 UUID 的支持,不幸的是,Gentoo 原生脚本(genkernel)不支持rootwait,我没有运气尝试使用其他脚本。
启动过程是这样的(在 Windows 中非常相似):
root,使用(hd0)它从 BIOS 加载的设备。(hd0,0)再次使用)。rootwait现在是不是很神奇)。root(这是一个内核参数,而不是 grub …我正在尝试从 USB 驱动器重新安装 grub。我运行以下命令:
sudo mount /dev/sda6 /mnt
sudo grub-install --root-directory=/mnt /dev/sda
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
grub-probe: error: failed to get canonical path of /cow.
Run Code Online (Sandbox Code Playgroud)
有人可以解释错误,以及如何解决它?
编辑
我正在尝试修复从包含 linux mint 的 USB 运行的损坏的双引导系统。