我使用 Ubuntu 16.04.3 LTS 已经有一段时间了,最近又按顺序添加了 Linux Mint 和 openSUSE。在安装 openSUSE 之前,启动分区是 /dev/sda1。
问题:我希望所有发行版都没有启动画面。 我读了这篇文章。 我在 Ubuntu 上通过编辑 /etc/default/grub 文件并在首次安装时进行更新来实现此目的。我在 openSUSE 和 Mint 上使用 Grub Customizer 删除了启动画面,但是 openSUSE 是我安装的新发行版中唯一一个实现此结果的发行版。然后我直接编辑了 Mint 的 grub 文件,但它仍然显示启动画面。我不确定如何继续。此外,如果我决定删除或卸载 openSUSE 或 MINT,我该怎么做?
dos HDD
/dev/sda1 ext3 Primary GRUB
/dev/sda2 Extended Ubuntu
/dev/sda5 linux-swap
/dev/sda6 ext4 /
/dev/sda7 ext4 home
/dev/sda8 ext3 mintboot
/dev/sda9 ext4 mintroot
/dev/sda10 ext4 minthome
/dev/sda3 btrfs openSUSE flagged boot
/dev/sda4 xfs openSUSE
openSUSE /etc/default/grub 输出:我怀疑最后滚动的位和潜在的 openSUSE grub.cfg 编辑,只是不确定到底是什么 Oo
# If you change this file, run 'grub2-mkconfig -o /boot/grub2/grub.cfg' afterwards to update
# /boot/grub2/grub.cfg.
# Uncomment to set your own custom distributor. If you leave it unset or empty, the default
# policy is to determine the value from /etc/os-release
GRUB_DISTRIBUTOR=
GRUB_DEFAULT=saved
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_CMDLINE_LINUX_DEFAULT='resume=/dev/disk/by-uuid/0b074c09-c211-407b-ad9d-f7c0c2b3bee7 splash=""'
GRUB_CMDLINE_LINUX=""
# Uncomment to automatically save last booted menu entry in GRUB2 environment
# variable `saved_entry'
# GRUB_SAVEDEFAULT="true"
#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="gfxterm"
# 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="auto"
# 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
SUSE_BTRFS_SNAPSHOT_BOOTING="true"
GRUB_DISABLE_OS_PROBER="false"
GRUB_ENABLE_CRYPTODISK="n"
答案1
广义上讲,有两种方法可以在多个 Linux 发行版之间设置多重启动配置:
- 一发行版的引导加载程序直接引导全部您的发行版,而其他引导加载程序则完全不参与其中。(很有可能 OpenSUSE 的 GRUB 在您的情况下起着控制作用,因为它是您最后安装的。)因此,您需要编辑控制发行版的 GRUB 来更改其他发行版的内核选项。
- 每个发行版都提供自己的引导加载程序,用于引导自己的内核并链式加载到其他发行版的引导加载程序。在这种配置下,每个发行版控制自己的内核选项,但要引导除引导管理器在引导链中排在第一位的操作系统以外的任何系统,您必须通过多个引导管理器进行引导 - 例如,OpenSUSE 的 GRUB 提供了一个菜单,其中包含用于引导其自身内核的选项以及用于引导其他发行版的 GRUB 实例的选项。要引导(例如)Ubuntu,您需要通过 OpenSUSE 的 GRUB,然后是 Ubuntu 的 GRUB。
这两种情况并不互相排斥;您可能会看到(例如)一个 OpenSUSE GRUB 菜单,其中有启动 OpenSUSE 和 Ubuntu 内核的选项,以及启动 Ubuntu 的 GRUB 的选项。
请注意,引导经理提供操作系统选项菜单,而启动加载器将操作系统内核加载到内存中并开始运行。GRUB 可同时执行这两项任务,因此 Linux 世界中的人们经常交替使用这两个术语,但尽管在许多配置中单个 GRUB 实例可能同时充当这两个角色,但这种区别对于您的情况来说很重要。
理清所有这些可能是一个真正的挑战,特别是在基于 BIOS 的计算机上(根据您的分区摘要判断,您的计算机似乎就是基于 BIOS 的计算机,尽管我对此并不 100% 肯定)。一些经验丰富的多引导程序会留出不受任何操作系统控制的引导管理器来引导每个操作系统的专用引导加载程序,但我不知道有任何现代参考资料介绍如何在基于 BIOS 的系统上执行此操作。这样的配置将引导管理器和引导加载程序的功能分开,这为使用更专业的程序提供了可能性,并可以简化配置任务。
还要注意,如果您从发行版 A 的引导加载程序启动发行版 B,则在更新发行版 A 中的 GRUB 配置之前,您将无法启动发行版 B 的新内核。(这是安装纯粹作为引导管理器使用的工具的原因之一,在每个发行版的引导加载程序之间进行选择;然后每个发行版都可以自行更新其自己的引导加载程序配置,您无需手动更新。)
至于卸载操作系统,主要担心的是卸载控制第一个引导管理器的操作系统。如果该引导管理器是 GRUB 2,则卸载控制操作系统的根目录 ( /
) 或/boot
分区将删除 GRUB 配置文件,这将使 GRUB 几乎无用。此时,您需要使用应急磁盘(重新)安装 GRUB,以便另一个发行版接管作为主引导管理器。
编辑:
GRUB 2 配置是一场噩梦。在运行(启动)时,GRUB 会读取一个配置文件,该文件通常位于/boot/grub/grub.cfg
,相对于托管操作系统的文件系统。此文件通常由脚本构建,这些脚本在首次安装 GRUB 时、安装新内核时或手动安装时运行。 (grub-mkconfig -o /boot/grub/grub.cfg
是通用命令;但在 Ubuntu 中,update-grub
也可以使用。)脚本又依赖于多个配置文件,一其中是/etc/default/grub
您引用的文件。请注意,此文件确实不是告诉您 GRUB 在启动时将显示哪些操作系统;具体细节因系统而异。此文件做允许您调整某些全局默认值,例如超时值。请注意,编辑这些默认值将不是立即生效;您的更改仅在您运行脚本重写文件后才会生效grub.cfg
(或者系统自行执行此操作后 - 例如,内核更新后)。
GRUB 的配置脚本还依赖于 中的一堆文件来/etc/grub.d
帮助它识别特定的操作系统和工具。通常,您不会自己编辑这些文件;但是,40_custom
如果默认的操作系统/内核检测脚本不能正常工作,您可以编辑一个名为 IIRC 的文件来提供自定义条目。就像对 的更改一样/etc/default/grub
,您对这些文件所做的任何更改都不会生效,除非您重新生成/boot/grub/grub.cfg
。如果您想quiet splash
从生成的选项中删除通过 OpenSUSE 的脚本对于 Ubuntu,您可能需要编辑 中的一个文件/etc/grub.d/
,但恐怕我不知道您确切要查找的位置。或者,您可以手动编辑/boot/grub/grub.cfg
,但每当您创建新文件时,您在此处所做的任何更改都将被覆盖,grub.cfg
无论是故意的还是因为主机操作系统安装了新内核。
如前所述,另一种方法是设置主引导管理器不直接启动 Ubuntu 的内核,而是链式加载到 Ubuntu 的 GRUB,然后管理其自己的 GRUB 配置。
注意三个全部您的发行版都有自己的 GRUB 配置文件 -/boot/grub/grub.cfg
以及所有支持文件;但是,只有一个 GRUB 控制启动过程。如前所述,其他的要么是 100% 不相关的,要么只有当第一个 GRUB 配置为链式加载到辅助 GRUB 时才会被调用。
FWIW,GRUB 定制器是一个 GUI 工具,用于帮助编辑各种 GRUB 配置文件。但是,该链接指向 Ubuntu 的 Launchpad PPA。我不知道 GRUB Customizer 是否适用于 OpenSUSE。如果没有,并且您想使用 GRUB Customizer,则应重新配置系统,以便 Ubuntu 的 GRUB 成为主要 GRUB,将 OpenSUSE 的 GRUB 降为次要状态。如果您可以找到为 OpenSUSE 构建的 GRUB Customizer(或自行构建或或许通过将 Ubuntu Debian 软件包转换为 RPM 形式,您可以在 OpenSUSE 中运行它来调整当前配置。不过,考虑到 GRUB 配置的复杂性,我不建议偏离经过良好测试的主机发行版版本。