news 2026/7/14 2:08:49

CentOS 7.7 + Ubuntu 18.04 双系统引导修复与GRUB2管理实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CentOS 7.7 + Ubuntu 18.04 双系统引导修复与GRUB2管理实战

1. 双系统引导问题的典型场景

最近在给公司服务器部署CentOS 7.7和Ubuntu 18.04双系统时,遇到了一个经典问题:安装完第二个系统后,启动菜单里只能看到一个系统选项。这种情况在混合安装不同Linux发行版时特别常见,尤其是当两个系统使用不同版本的GRUB引导程序时。

我清楚地记得那天晚上,在机房折腾到凌晨两点的经历。按照常规流程先安装了CentOS 7.7,接着安装Ubuntu 18.04,一切看起来都很顺利。但重启后却发现直接进入了CentOS,Ubuntu就像从没安装过一样。这种情况其实是因为Ubuntu的GRUB引导信息没有被正确写入主引导记录(MBR)或EFI系统分区(ESP)。

为什么会这样?主要原因有三个:

  1. 后安装的系统没有正确识别先安装的系统
  2. GRUB配置文件没有自动更新
  3. 两个系统使用不同版本的GRUB(CentOS用GRUB2,Ubuntu也用GRUB2但配置方式有差异)

2. 准备工作与环境确认

在开始修复之前,我们需要确认几个关键信息。首先准备一个Ubuntu 18.04的Live USB,这个将是我们修复引导的主要工具。我推荐使用Rufus或者Etcher来制作启动盘,它们比老牌的UNetbootin更稳定。

关键检查点:

  • 确认BIOS模式是UEFI还是Legacy(这对修复方法有决定性影响)
  • 记录下两个系统的安装位置(比如Ubuntu在/dev/sda2,CentOS在/dev/sda3)
  • 准备好网络连接,因为修复过程中可能需要安装额外软件包

如何检查BIOS模式?在已安装的CentOS中执行:

[ -d /sys/firmware/efi ] && echo "UEFI" || echo "Legacy"

如果是UEFI模式,我们还需要确认EFI系统分区的位置:

lsblk -o NAME,FSTYPE,LABEL,MOUNTPOINT | grep -i efi

3. 修复Ubuntu的GRUB引导

当发现只能进入CentOS时,我们需要先用Ubuntu Live USB启动系统。选择"Try Ubuntu"进入Live环境,然后打开终端开始修复流程。

第一步:挂载Ubuntu根分区假设Ubuntu安装在/dev/nvme0n1p2(根据实际情况调整):

sudo mount /dev/nvme0n1p2 /mnt

如果是UEFI启动,还需要挂载EFI分区(通常是/dev/nvme0n1p1):

sudo mount /dev/nvme0n1p1 /mnt/boot/efi

第二步:安装GRUB到正确位置

sudo grub-install --root-directory=/mnt /dev/nvme0n1

第三步:更新GRUB配置

sudo chroot /mnt update-grub

这个过程中,update-grub应该能自动检测到CentOS的存在。如果没看到CentOS的启动项,可能是os-prober没运行,可以手动执行:

grub-mkconfig -o /boot/grub/grub.cfg

4. 处理CentOS的GRUB2配置

有时候问题会反过来:更新内核后,CentOS的启动项消失了。这是因为CentOS使用GRUB2的方式与Ubuntu略有不同。

进入CentOS系统后(可以通过Live USB临时启动),执行:

sudo mount /dev/nvme0n1p3 /mnt # 假设CentOS在p3 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 挂载EFI分区 sudo chroot /mnt grub2-install /dev/nvme0n1 grub2-mkconfig -o /boot/grub2/grub.cfg

关键区别点:

  • CentOS使用grub2-前缀的命令
  • 配置文件路径是/boot/grub2/grub.cfg
  • 如果使用UEFI,可能需要额外参数:--efi-directory=/boot/efi

5. 统一引导管理的终极方案

经过上述步骤,你可能已经能选择进入两个系统了。但为了长期稳定,我推荐让Ubuntu的GRUB作为主引导管理器,因为它对多系统支持更好。

优化GRUB菜单:编辑/etc/default/grub文件(在Ubuntu中):

sudo nano /etc/default/grub

修改以下参数:

GRUB_TIMEOUT=10 GRUB_TIMEOUT_STYLE=menu GRUB_DISABLE_OS_PROBER=false

然后更新配置:

sudo update-grub

常见问题排查:

  1. 如果启动时出现"error: unknown filesystem":

    • 可能是UUID变化导致,检查/boot/grub/grub.cfg中的UUID与实际分区是否匹配
    • 使用blkid命令查看当前分区UUID
  2. 如果GRUB Rescue模式:

    set prefix=(hd0,gpt2)/boot/grub set root=(hd0,gpt2) insmod normal normal

6. 高级技巧与注意事项

多内核版本管理:当你在CentOS中安装新内核(比如RT内核)后,可能需要手动更新GRUB:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

GRUB自定义主题(可选):如果你厌倦了黑底白字的GRUB界面,可以安装主题:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt update sudo apt install grub-customizer

安全建议:

  1. 定期备份/boot/grub/grub.cfg和/etc/default/grub
  2. 修改GRUB菜单前先做备份
  3. 考虑设置GRUB密码防止未授权修改

7. 实际案例:FlexRAN测试环境搭建

回到最初的需求:搭建FlexRAN测试环境。在成功解决双系统引导问题后,还需要特别注意:

  1. CentOS 7.7需要安装实时内核:
sudo yum install kernel-rt
  1. 更新GRUB后确认RT内核选项出现:
sudo grub2-set-default "CentOS Linux (3.10.0-1127.rt56.1093.el7.x86_64) 7 (Core)" sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  1. 在Ubuntu中确保能正确识别CentOS的RT内核选项:
sudo update-grub

经过这些步骤,现在每次启动时,GRUB菜单会清晰显示Ubuntu 18.04和CentOS 7.7(包括常规内核和RT内核)的所有选项,测试团队可以根据需要自由选择进入哪个环境。整个修复过程最关键的体会是:理解GRUB的工作原理比记住具体命令更重要。当你知道GRUB是如何扫描各分区、如何生成配置文件时,遇到问题就能自己分析解决,而不是盲目尝试各种教程中的命令。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 2:08:47

AI原创角色创作:从提示词工程到一致性管理的完整指南

最近在技术社区看到不少开发者讨论"OC"这个概念,有人以为是Objective-C,有人以为是开源项目,但实际上在创作圈子里,OC指的是"Original Character"(原创角色)。作为一个长期关注AI生成内…

作者头像 李华
网站建设 2026/7/14 2:08:15

C++性能调优利器Tracy:10分钟搭建实时帧分析器

1. 项目概述与核心价值最近在优化一个C项目的渲染管线时,我又一次被卡顿和掉帧问题折磨得不轻。传统的日志打印和计时器打点,在复杂的多线程环境下显得力不从心,你很难看清一帧之内,CPU到底把时间花在了哪里,是哪个线程…

作者头像 李华
网站建设 2026/7/14 2:05:59

Qt QML实现的带拼音索引与动画效果的通讯录界面源码

本文还有配套的精品资源,点击获取 简介:一套开箱即用的Qt/QML联系人管理UI源码,支持添加、删除、编辑、搜索联系人,内置中文姓名转拼音功能(Pinyin.js),自动按首字母分组并生成侧边字母索引栏…

作者头像 李华
网站建设 2026/7/14 2:05:13

Python基础实现问题:对象模型、闭包与拷贝机制深度解析

1. 项目概述:为什么“每日基础实现问题”是Python进阶路上最被低估的绊脚石?你有没有过这种经历:学完Python语法,能写个计算器、爬个网页,甚至调用几个机器学习库跑通demo,可一旦要独立开发一个稍复杂的工具…

作者头像 李华
网站建设 2026/7/14 2:04:53

面向AI时代的程序化建模

现在的 AI 3D 很擅长生成第一版:输入一句话或一张图片,很快得到一个模型。 但游戏生产更关心下一步。车身太窄,能否只改宽度?车顶太高,能否只改高度?材质错了,能否只换材质,不重做几…

作者头像 李华
网站建设 2026/7/14 2:04:30

AI绘画实战:Stable Diffusion精准生成OC角色与帝皇风格融合

最近在AI绘画圈子里,不少开发者都在尝试让AI理解并绘制特定角色(Original Character,简称OC)的创意场景。比如"画一下我的oc穿上帝皇"这样的需求,就涉及到角色设计、风格转换、细节控制等多个技术难点。本文…

作者头像 李华