在服务器上实现双系统启动(如CentOS和Ubuntu)与在普通PC上类似,但需更谨慎操作。以下是详细步骤和注意事项:
一、准备工作
-
备份数据
- 确保所有重要数据已备份(可通过外部硬盘、云存储或网络备份)。
- 备份现有系统的引导配置(如
/etc/fstab、/boot/grub/grub.cfg)。
-
准备安装介质
- 下载 CentOS 和 Ubuntu 的 ISO 文件,制作启动U盘(使用
dd或 Rufus 工具)。
- 下载 CentOS 和 Ubuntu 的 ISO 文件,制作启动U盘(使用
-
规划磁盘分区
- 方案建议(以 2TB 硬盘为例):
/dev/sda1:EFI 系统分区(ESP,建议 512MB-1GB,FAT32)。/dev/sda2:CentOS/根分区(例如 100GB,ext4/xfs)。/dev/sda3:CentOS/home分区(可选,根据需求分配)。/dev/sda4:Ubuntu/根分区(例如 100GB,ext4)。/dev/sda5:Ubuntu/home分区(可选)。/dev/sda6:共享数据分区(可选,NTFS/exFAT 以便双系统共享)。/dev/sda7:Swap 分区(建议内存的 1-2倍,两个系统可共用)。
- 方案建议(以 2TB 硬盘为例):
-
检查引导模式
- 服务器通常为 UEFI(较新)或 Legacy BIOS,需提前确认:
ls /sys/firmware/efi # 若目录存在则为 UEFI
- 服务器通常为 UEFI(较新)或 Legacy BIOS,需提前确认:
二、安装步骤
1. 先安装 CentOS
- 启动 CentOS 安装介质,进入图形或命令行安装界面。
- 在分区时选择 手动分区(Custom Partitioning):
- 创建 EFI 分区(若尚未存在,类型为
EFI System)。 - 创建 CentOS 的根分区、
/home等。 - 注意:将 CentOS 的引导加载器安装到 EFI 分区(例如
/dev/sda1),而非整个磁盘。
- 创建 EFI 分区(若尚未存在,类型为
- 完成安装并重启,确保 CentOS 可正常启动。
2. 再安装 Ubuntu
- 启动 Ubuntu 安装介质,选择 试用模式(Try Ubuntu)或直接安装。
- 分区时同样选择 手动分区:
- 不要格式化 EFI 分区(保留 CentOS 的引导文件)。
- 为 Ubuntu 分配根分区、
/home等。 - 关键步骤:将 Ubuntu 的引导加载器(GRUB)安装到 同一 EFI 分区(如
/dev/sda1),不要覆盖整个磁盘。
- 安装完成后重启,此时应直接进入 Ubuntu(因为 Ubuntu 的 GRUB 可能覆盖引导菜单)。
三、配置 GRUB 双系统菜单
-
进入 Ubuntu 系统,更新 GRUB 以检测 CentOS:
sudo update-grub- 若成功,GRUB 会自动添加 CentOS 启动项。
-
若未自动检测到 CentOS,手动配置:
- 在 Ubuntu 中编辑
/etc/grub.d/40_custom,添加 CentOS 启动项:menuentry "CentOS" { insmod part_gpt insmod ext2 set root=(hd0,gpt2) # 根据实际分区调整 linux /boot/vmlinuz-* root=/dev/sda2 ro # 对应 CentOS 根分区 initrd /boot/initramfs-*.img } - 重新生成 GRUB 配置:
sudo grub-mkconfig -o /boot/grub/grub.cfg
- 在 Ubuntu 中编辑
-
若 CentOS 的 GRUB 被覆盖,可通过 CentOS 安装介质修复:
- 进入 CentOS 救援模式,重新安装 GRUB:
chroot /mnt/sysimage grub2-install /dev/sda grub2-mkconfig -o /boot/grub2/grub.cfg
- 进入 CentOS 救援模式,重新安装 GRUB:
四、服务器特殊注意事项
-
远程管理
- 确保至少一个系统配置好 SSH,以便远程访问。建议先安装带 SSH 服务的系统。
- 使用 IPMI/iDRAC/iLO 等带外管理工具,避免安装过程中失去连接。
-
分区方案优化
- 服务器建议使用 LVM,便于后续调整分区大小。
- 示例 LVM 分区结构:
/dev/sda1: EFI 分区 /dev/sda2: LVM 物理卷 ├── centos-root(CentOS 根分区) ├── ubuntu-root(Ubuntu 根分区) └── shared-data(共享数据卷)
-
引导隔离
- 更稳定的方案:为每个系统安装独立引导加载器,使用 UEFI 启动菜单切换(启动时按 F12 选择系统)。
-
内核兼容性
- 确保两个系统的内核版本支持服务器硬件(如 RAID 卡、网卡驱动)。
五、故障处理
-
GRUB 无法引导某个系统
- 使用
efibootmgr检查 UEFI 启动项:sudo efibootmgr -v - 手动添加启动项(以 CentOS 为例):
sudo efibootmgr -c -d /dev/sda -p 1 -L "CentOS" -l "EFIcentosshimx64.efi"
- 使用
-
共享数据分区
- 若需在双系统间共享数据,建议使用 exFAT 或 NTFS 格式(需安装
ntfs-3g或exfat-fuse)。
- 若需在双系统间共享数据,建议使用 exFAT 或 NTFS 格式(需安装
-
系统时间冲突
- Windows/Linux 双系统会有时间冲突,但 Linux 之间通常无此问题。若遇到,可设置 UTC 时间:
timedatectl set-local-rtc 0
- Windows/Linux 双系统会有时间冲突,但 Linux 之间通常无此问题。若遇到,可设置 UTC 时间:
六、替代方案
-
使用虚拟机(更推荐用于服务器)
- 在 CentOS 上安装 KVM,将 Ubuntu 作为虚拟机运行,避免物理分区复杂性问题。
-
容器化部署
- 直接安装一个系统(如 CentOS),通过 Docker/Podman 运行 Ubuntu 环境,无需双系统。
总结建议
- 优先使用虚拟机或容器,避免物理双系统对服务器稳定性的影响。
- 若必须双系统,务必提前规划分区,并先安装较旧系统(如 CentOS),再安装较新系统(如 Ubuntu),因为新系统的 GRUB 通常能更好识别旧系统。
- 服务器操作需谨慎,建议在测试环境中验证后再部署到生产环境。
CLOUD技术笔记