grepWin源代码 grub2源码

多个Ubuntu系统boot menu整理

机器的配置比较高,作服务器用,为便于开发测试,安装了多个操作系统,包括3个Ubuntu系统+1个windows系统。Ubuntu的grub默认会自动生成BootMenu,只有个操作系统的时候,菜单管理项少,没有太大问题。但当操作系统多,而且经过不断升级,一个系统还会有多个内核,bootmenu会把每个核心都添加到bootmenu中,菜单会有几十项,要找到正确的启动项都会出现困难。

本文将grub的Bootmenu的整理过程涉及的内容记录下来,备忘。


我们把最后安装的Ubuntu系统,简称主控系统。以前安装的其他系统,称为被控系统

grub检测生成BootMenu,可以分为两个部分:

一、主控系统的启动项配置

  • 一台计算机安装多个ubuntu系统,最终的bootmenu,是由最后安装的系统控制。
  • 开机的bootmenu,是依据/boot/grub/grub.cfg进行显示,此文件是执行update-grub时,系统根据 /etc/grub.d/下文件 和 /etc/default/grub文件生成。不建议手工修改/boot/grub/grub.cfg。
  • /etc/default/grub是bootmenu的默认公共设置项,可以添加
GRUB_DISABLE_OS_PROBER=false

让主控系统grub可以自动检测到被控系统,添加到bootmenu中。

二、被控系统配置

  • 主控系统,每检测到一个被控系统/boot,就会添加一个linux一级菜单项,此被控系统的二级菜单的是此/boot下的对应核心文件数(把最高版本作为默认项)。
  • 每个Ubuntu系统,安装升级后,其/boot中会有多个内核版本(vmlinuz-*文件),能正常启动的,才是有用的内核文件,不必要的版本,可以删除。

上面的图二中有项,就是那个被控系统中有多个版本的核心文件。

dpkg --list | grep linux-image

可以用上面的命令,列出本机安装的核心。ii开头的,是实际存在的。

ii:表示软件包已正确安装并且系统希望它保持安装状态。

rc:表示软件包已被卸载,但其配置文件仍然保留在系统中。

uname -r

可以知道,当前系统实际使用的核心版本。未使用的版本,可以卸载,也可以保留。看是否影响boot menu使用。

  • 核心文件卸载方法
  • 例如要卸载linux-image-版核心

    sudo apt remove linux-image--generic



    被控系统中,把多余的核心卸载后,可以到在主控系统中运行update-grub。从而更新Boot Menu,去除多余核心对boot menu的影响。

    开机显示boot menu时,在光标菜单项上,按字幕e,可以查看此菜单项的启动内容。

    原文链接:,转发请注明来源!