当前位置: 首页 > news >正文

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是如何扫描各分区、如何生成配置文件时,遇到问题就能自己分析解决,而不是盲目尝试各种教程中的命令。

http://www.jsqmd.com/news/1184302/

相关文章:

  • Java调R语言?Rserve这把双刃剑,一个连接就能让代码飞起来
  • Windows Server 2012 Build 7968 SKU特性解析与安装实践
  • 如何智能管理Windows文件管理器中的顽固图标问题?
  • 遗传算法实战进阶:破解早熟收敛与动态平衡调控
  • 基于Claude Fable 5与OpenRouter构建生产级AI Agent框架Damon
  • Linux 动态链接库(.so)的编译、链接与运行时路径解析实战
  • AI应用推理成本优化:从Fable 30%成本占比到实战解决方案
  • 2026年厦门钨钢螺栓厂家产品及配套服务体验测评 - 热点品牌推荐
  • 2026年采购碳化硅耐磨管 筛选靠谱厂商实用参考指南 - 热点品牌推荐
  • MATLAB版RBF手写数字识别工具包:含特征提取、预训练模型与多张测试图
  • 从瑞利商上下界到谱聚类:一个特征值边界的实践指南
  • AI如何解决毕业论文写作痛点:选题到格式全流程优化
  • Latent Diffusion Model环境配置避坑指南:从零到一搭建你的AI绘画工作站
  • 2026实力之选:成都办公室天花板源头厂家专业解析 - 甄选服务推荐
  • AI SaaS开发必须绕过的8个技术雷区:基于37个已上线项目的故障日志深度反推
  • ROS2客户端库rclpy与rclcpp深度解析:线程、QoS与实时性本质
  • 2012版ISO质量管理系统ASP部署包(含仪器台账、校准提醒与状态标识功能)
  • 微信小游戏云开发实战:从零构建云函数与数据存储
  • 2026年7月最新哈尔滨芝柏官方售后客服服务电话及地址网点大全 - 亨得利官方服务中心
  • 泊松图像编辑 OpenCV 4.8 实战:5种融合模式对比与 Python 代码实现
  • AI原创角色创作:从提示词工程到一致性管理的完整指南
  • 储能 EMS 拓扑架构设计:单机、集群、微网多场景架构对比
  • 相对价格强度RPS指标:原理、实现与实战应用指南
  • JavaWeb健身房管理系统:从零搭建MVC架构实战教程
  • 雅典官方服务项目及价格查询|详细地址与售后服务电话权威信息通告(2026年7月最新) - 亨得利钟表维修中心
  • Windows 98界面定制:仿XP与Win7视觉效果完整实现方案
  • 鸿蒙原生开发手记:徒步迹 - @Provide/@Consume 跨组件通信
  • ROS2 QoS配置实战:可靠性、持久性与生命周期策略详解
  • 2026年 食品包装纸筒/线缆纸筒/纸板桶/全纸桶厂家:环保耐用与承重工艺俱佳的优质供应商 - 甄选服务推荐
  • AI暴露度评估:技术人员如何识别自动化风险与构建抗性技能