我安装了 grub2,因为旧版 grub 不再支持我的分区,但我无法让它像旧版 grub 那样显示文本菜单?当我启动我的电脑时,它会向我提供 CLI,我需要在其中手动加载我的配置文件?因此我的配置文件很好,但是我如何使用 grub2 自动启动它?我的操作系统是 openSUSE,我使用 grub2-mkconfig --output=/boot/grub2/grub.conf 来创建我的配置文件。然后我使用 grub2-install /dev/sda2 安装 grub2。我还编辑了 /etc/default/grub 以显示菜单并注释了 hideoutmenu 行。请帮忙,因为这是一个非常烦人的错误?非常感谢!
更新:请阅读我的问题 openSUSE 和 Linux 有点奇怪。我已经尝试过 grub2-mkconfig -o /boot/grub2/grub.conf 。我也用 grub.cfg 尝试过。没有 grub-mkconfig 只有 grub2-mkconfig。也没有 update-grub (或 update2-grub)。这是 openSUSE 中不存在的脚本!!!?!
更新2:也许是显卡问题?我的 grub2-mkconfig 可以识别 Windows 操作系统:http://ubuntuforums.org/showthread.php?t=1485072&page=3
更新 3:当我使用 --force 时,我也收到此错误消息:
/usr/sbin/grub2-bios-setup: Warnung: Dateisystem »ext2« unterstützt keine
Einbettungen.
/usr/sbin/grub2-bios-setup: Warnung: Einbettung ist nicht möglich. GRUB
kann in dieser Konfiguration nur mittels Blocklisten installiert werden.
Blocklisten sind allerdings UNZUVERLÄSSIG und deren Verwendung wird daher
nicht empfohlen..
installation beendet. Keine Fehler aufgetreten.
更新4:
grub2-mkconfig --output=/boot/grub2/grub.cfg
grub.cfg wird erstellt …
Linux-Abbild gefunden: /boot/vmlinuz-3.4.4-1.1-desktop
initrd-Abbild gefunden: /boot/initrd-3.4.4-1.1-desktop
No volume groups found
Windows 7 (loader) auf /dev/sdc1 gefunden
erledigt
更新 5:根据要求,我使用 /dev/sda 而不是 /dev/sda2,它工作得更好,我不需要 --force 命令。
grub2-install --boot-directory=/boot/grub2 /dev/sda
installation beendet. Keine Fehler aufgetreten.
但在这个自述文件中有脚本 update-grub2:https://build.opensuse.org/package/view_file?file=README.openSUSE&package=grub2&project=openSUSE%3AFactory&rev=c3401e0f5ec23451c03caa9b77fa0d99
但我没有啊?
更新6:
# If you change this file, run 'grub2-mkconfig -o /boot/grub2/grub.cfg'
afterwards to update
# /boot/grub2/grub.cfg.
GRUB_DISTRIBUTOR="openSUSE"
GRUB_DEFAULT=2
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash=silent"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=800x600
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to
Linux
GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_LINUX_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
GRUB_BACKGROUND=/boot/grub2/themes/openSUSE/background.png
GRUB_THEME=/boot/grub2/themes/openSUSE/theme.txt
更新 7:我的文件 grub-mkconfig_lib 也在 /usr/share/grub2 中,而不是在 /usr/lib/grub 中:http://forums.opensuse.org/english/get-technical-help-here/pre-release-beta/476722-grub2-broken-12-2-rc1.html?
更新和修复:
- 错误:在我的 grub 配置文件中,将此行 GRUB_HIDDEN_TIMEOUT_QUIET=true 更改为 GRUB_HIDDEN_TIMEOUT_QUIET=false 并注释此行 #GRUB_HIDDEN_TIMEOUT=0。
- 错误:它只能从 /boot 运行,不能从 /boot/grub2 运行,尽管 /boot/grub2 是所有地方的默认路径。奇怪的。也许是因为我使用的是AHCI???
答案1
由于您没有使用默认的 /boot/grub 目录,因此您需要告诉 grub 使用 /boot/grub2:
grub-install --boot-directory=/boot/grub2 /dev/sda2
答案2
您需要使用以下命令创建 grub.cfg 文件:
grub-mkconfig -o /boot/grub/grub.cfg
它使用 /etc/grub.d/ 和 /etc/default/grub 等中的各种 grub conf 文件来创建 grub.cfg 文件。
这拱门维基关于 Grub 的文章彻底解释了这个过程。虽然它是为 Arch 编写的,但我相信您可以轻松地将其适应您的系统。
答案3
我也犯了同样的错误。配置文件是grub.cfg
,不是grub.conf
!
SUSE/OpenSUSE/RHEL/CentOS:
grub2-mkconfig --output=/boot/grub2/grub.cfg
Debian/Ubuntu
grub2-mkconfig --output=/boot/grub/grub.cfg
grub.cfg 的位置?
不同的发行版使用不同的位置grub.cfg
。 Ubuntu 使用/boot/grub/grub.cfg
(文档),RHEL/CentOS 7/boot/grub2/grub.cfg
在 BIOS 系统上使用(文档),SUSE/OpenSUSE 也是如此(文档)。