服务器如何实现双系统启动,比如同时安装CentOS和Ubuntu?

在服务器上实现双系统启动(如CentOS和Ubuntu)与在普通PC上类似,但需更谨慎操作。以下是详细步骤和注意事项:


一、准备工作

  1. 备份数据

    • 确保所有重要数据已备份(可通过外部硬盘、云存储或网络备份)。
    • 备份现有系统的引导配置(如 /etc/fstab/boot/grub/grub.cfg)。
  2. 准备安装介质

    • 下载 CentOS 和 Ubuntu 的 ISO 文件,制作启动U盘(使用 dd 或 Rufus 工具)。
  3. 规划磁盘分区

    • 方案建议(以 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倍,两个系统可共用)。
  4. 检查引导模式

    • 服务器通常为 UEFI(较新)或 Legacy BIOS,需提前确认:
      ls /sys/firmware/efi  # 若目录存在则为 UEFI

二、安装步骤

1. 先安装 CentOS

  • 启动 CentOS 安装介质,进入图形或命令行安装界面。
  • 在分区时选择 手动分区(Custom Partitioning):
    • 创建 EFI 分区(若尚未存在,类型为 EFI System)。
    • 创建 CentOS 的根分区、/home 等。
    • 注意:将 CentOS 的引导加载器安装到 EFI 分区(例如 /dev/sda1),而非整个磁盘。
  • 完成安装并重启,确保 CentOS 可正常启动。

2. 再安装 Ubuntu

  • 启动 Ubuntu 安装介质,选择 试用模式(Try Ubuntu)或直接安装。
  • 分区时同样选择 手动分区
    • 不要格式化 EFI 分区(保留 CentOS 的引导文件)。
    • 为 Ubuntu 分配根分区、/home 等。
    • 关键步骤:将 Ubuntu 的引导加载器(GRUB)安装到 同一 EFI 分区(如 /dev/sda1),不要覆盖整个磁盘。
  • 安装完成后重启,此时应直接进入 Ubuntu(因为 Ubuntu 的 GRUB 可能覆盖引导菜单)。

三、配置 GRUB 双系统菜单

  1. 进入 Ubuntu 系统,更新 GRUB 以检测 CentOS:

    sudo update-grub
    • 若成功,GRUB 会自动添加 CentOS 启动项。
  2. 若未自动检测到 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
  3. 若 CentOS 的 GRUB 被覆盖,可通过 CentOS 安装介质修复:

    • 进入 CentOS 救援模式,重新安装 GRUB:
      chroot /mnt/sysimage
      grub2-install /dev/sda
      grub2-mkconfig -o /boot/grub2/grub.cfg

四、服务器特殊注意事项

  1. 远程管理

    • 确保至少一个系统配置好 SSH,以便远程访问。建议先安装带 SSH 服务的系统。
    • 使用 IPMI/iDRAC/iLO 等带外管理工具,避免安装过程中失去连接。
  2. 分区方案优化

    • 服务器建议使用 LVM,便于后续调整分区大小。
    • 示例 LVM 分区结构:
      /dev/sda1: EFI 分区
      /dev/sda2: LVM 物理卷
      ├── centos-root(CentOS 根分区)
      ├── ubuntu-root(Ubuntu 根分区)
      └── shared-data(共享数据卷)
  3. 引导隔离

    • 更稳定的方案:为每个系统安装独立引导加载器,使用 UEFI 启动菜单切换(启动时按 F12 选择系统)。
  4. 内核兼容性

    • 确保两个系统的内核版本支持服务器硬件(如 RAID 卡、网卡驱动)。

五、故障处理

  1. GRUB 无法引导某个系统

    • 使用 efibootmgr 检查 UEFI 启动项:
      sudo efibootmgr -v
    • 手动添加启动项(以 CentOS 为例):
      sudo efibootmgr -c -d /dev/sda -p 1 -L "CentOS" -l "EFIcentosshimx64.efi"
  2. 共享数据分区

    • 若需在双系统间共享数据,建议使用 exFAT 或 NTFS 格式(需安装 ntfs-3gexfat-fuse)。
  3. 系统时间冲突

    • Windows/Linux 双系统会有时间冲突,但 Linux 之间通常无此问题。若遇到,可设置 UTC 时间:
      timedatectl set-local-rtc 0

六、替代方案

  1. 使用虚拟机(更推荐用于服务器)

    • 在 CentOS 上安装 KVM,将 Ubuntu 作为虚拟机运行,避免物理分区复杂性问题。
  2. 容器化部署

    • 直接安装一个系统(如 CentOS),通过 Docker/Podman 运行 Ubuntu 环境,无需双系统。

总结建议

  • 优先使用虚拟机或容器,避免物理双系统对服务器稳定性的影响。
  • 若必须双系统,务必提前规划分区,并先安装较旧系统(如 CentOS),再安装较新系统(如 Ubuntu),因为新系统的 GRUB 通常能更好识别旧系统。
  • 服务器操作需谨慎,建议在测试环境中验证后再部署到生产环境。
云服务器