努力
加油

单台物理服务器如何分区安装Windows和Ubuntu系统?

单台物理机双系统(Windows + Ubuntu)是运维、开发测试甚至个人极客非常经典的需求。作为在云计算和服务器领域摸爬滚打多年的人,我见过太多因为分区不当导致数据丢失或引导崩溃的案例。

这里的核心逻辑只有一条:先装 Windows,后装 Linux。这是由两者的引导机制决定的,后面我会详细解释为什么。

以下是基于生产环境稳定性和数据安全性的实操指南,分为规划、安装、修复三个核心阶段。

一、 核心原则与前置准备

  1. 顺序铁律:必须先在 BIOS/UEFI 中设置为 UEFI 模式(现在绝大多数新硬件默认如此),然后先安装 Windows,最后安装 Ubuntu。
    • 原因:Windows 安装程序会强制覆盖 EFI 分区,并接管 GRUB 引导管理器。如果先装 Ubuntu,Windows 安装完后会把 GRUB 冲掉,导致你无法直接启动 Ubuntu,需要手动修复引导。
  2. 磁盘类型:强烈建议使用 NVMe SSD。机械硬盘的双系统体验极差,且容易因读写冲突导致卡顿。
  3. 数据备份:操作前,务必将重要数据备份到外部存储或云端。分区操作本质上是“删减”原有空间,一旦失误,数据恢复成本极高。
  4. 关闭快速启动:在 Windows 中,进入“控制面板” -> “电源选项” -> “选择电源按钮的功能” -> “更改当前不可用的设置”,取消勾选“启用快速启动”。
    • 原因:快速启动会让 Windows 休眠而非彻底关机,这会导致 Linux 挂载 NTFS 分区时只能以只读方式访问,甚至损坏文件系统。

二、 分区策略规划(关键步骤)

假设你有一块 1TB 的 NVMe SSD,建议采用以下分区结构。注意,现代 UEFI 主板通常有一个小的 FAT32 EFI 分区,不要动它,让两个系统共用。

分区 大小 格式 用途 说明
ESP (EFI System Partition) 512MB – 1GB FAT32 引导文件 Windows 安装时会自动创建,Ubuntu 安装时会复用此分区,写入自己的引导文件。切勿格式化或删除。
Windows 系统盘 (C:) 100GB – 200GB NTFS Windows OS 留给 Windows 系统和常用软件。建议至少 100GB,否则后期更新和缓存会爆满。
Windows 数据盘 (D:) 剩余空间的大部分 NTFS 数据存储 存放文档、视频、代码仓库等。这个分区对两个系统都友好,Linux 可以通过 ntfs-3g 轻松读写。
Ubuntu Root (/) 50GB – 100GB ext4 Linux 系统 根目录,存放 Linux 系统文件。
Ubuntu Home (/home) 剩余空间 ext4 用户数据 存放 Linux 下的个人文件、配置、Docker 容器数据等。独立出来方便重装 Linux 时保留数据。
Swap (交换空间) 8GB – 16GB swap 虚拟内存 如果内存 >= 16GB,可设 8GB;如果内存较小,建议设为物理内存的 1.5-2 倍。或者直接使用 Swap File(文件交换),更灵活。

重点提示:

  • 不要使用 LVM:对于新手或单一物理机的双系统,标准分区比 LVM 更直观,出错概率更低。
  • 预留空间:在安装 Windows 时,不要一次性把整个磁盘分完。建议在安装 Windows 后,从 C 盘或 D 盘中压缩卷出未分配空间,用于后续安装 Ubuntu。

三、 安装步骤详解

第一阶段:安装 Windows

  1. 制作 Windows 安装 U 盘(官方媒体创建工具)。
  2. 插入 U 盘,重启电脑,进入 BIOS 设置 U 盘启动。
  3. 进入安装界面后,选择“自定义:仅安装 Windows”。
  4. 关键操作:
    • 你会看到磁盘 0 的几个分区。
    • 删除所有分区,直到只剩下一个“未分配的空间”。
    • 点击“下一步”,Windows 会自动创建必要的引导分区(ESP)和主分区。
    • 注意:此时不要尝试手动划分 Ubuntu 的空间,让 Windows 占它该占的份额即可。如果 Windows 自动划分了过多空间,可以在 Windows 内部使用“磁盘管理”工具进行“压缩卷”,释放出足够的未分配空间给 Linux。

第二阶段:安装 Ubuntu

  1. 制作 Ubuntu Live USB(推荐使用 Rufus 或 Etcher,写入模式选 DD 模式兼容性更好)。
  2. 插入 U 盘,重启,进入 BIOS 设置 U 盘启动。
  3. 进入 Ubuntu 安装界面,选择“Try or Install Ubuntu”。
  4. 连接网络(可选,但建议连接以便下载更新)。
  5. 选择“Install Ubuntu”。
  6. 键盘布局:按默认或偏好设置。
  7. 安装类型:选择“Something else”(高级选项/其他选项)。不要选“Erase disk and install Ubuntu”,否则会清空 Windows!
  8. 手动分区:
    • 找到你的 NVMe 磁盘(通常是 /dev/nvme0n1)。
    • ESP 分区:找到之前 Windows 创建的 FAT32 分区(约 100-500MB),标记为“EFI System Partition”,不格式化,挂载点留空。
    • 新建 Ext4 分区:在未分配空间中,创建一个 50-100GB 的 ext4 分区,挂载点 /,用于系统。
    • 新建 Ext4 分区:再创建一个较大的 ext4 分区,挂载点 /home,用于用户数据。
    • 新建 Swap 分区:创建 8-16GB 的 swap 区域,用途选择“swap”。
    • 设备引导加载器:确保下拉菜单中选择的是 ESP 分区所在的磁盘(如 /dev/nvme0n1),而不是某个具体分区。GRUB 会自动识别现有的 Windows 引导项并追加进去。
  9. 点击“现在安装”,确认分区表变更。
  10. 设置用户名、密码、时区等,等待安装完成。

四、 引导修复与优化(避坑指南)

虽然按照上述步骤操作,大多数情况下 GRUB 能正确识别 Windows Boot Manager,但偶尔会出现问题。

情况 1:开机只有 Ubuntu,没有 Windows 选项

这是因为 GRUB 配置文件没包含 Windows 条目。

  • 解决方法:
    1. 进入 Ubuntu 系统。
    2. 打开终端,安装 os-prober(新版 Ubuntu 可能默认禁用,需手动启用):
      sudo apt update
      sudo apt install os-prober
    3. 修改 GRUB 配置允许检测其他系统:
      sudo nano /etc/default/grub

      添加一行:GRUB_DISABLE_OS_PROBER=false

    4. 更新 GRUB:
      sudo update-grub
    5. 重启,应该就能看到 Windows Boot Manager 了。

情况 2:Windows 更新后,Ubuntu 进不去

Windows 大版本更新有时会重置 EFI 分区权限或覆盖引导记录。

  • 解决方法:
    1. 使用 Ubuntu Live USB 启动。
    2. 安装 boot-repair 工具:
      sudo add-apt-repository ppa:yannubuntu/boot-repair
      sudo apt update
      sudo apt install boot-repair
      boot-repair
    3. 点击“Recommended repair”(推荐修复),按照提示操作即可。

五、 跨系统共享数据的最佳实践

很多用户希望 Windows 下也能访问 Ubuntu 的文件,或者反过来。

  1. Windows 访问 Ubuntu 文件:

    • 原生不支持。Windows 内核无法直接读取 ext4 文件系统。
    • 解决方案:
      • 方案 A(推荐):使用 WSL2。在 Windows 上安装 WSL2,可以直接通过 \wsl$ 路径访问 Linux 文件系统,性能极佳,无缝集成。
      • 方案 B:使用第三方驱动(如 Paragon ExtFS for Windows),但存在稳定性风险,不推荐用于生产环境。
      • 方案 C:在 Ubuntu 中搭建 Samba/NFS 服务,Windows 通过网络访问。适合大文件传输。
  2. Ubuntu 访问 Windows 文件:

    • 原生支持。Linux 内核自带 ntfs-3g 驱动。
    • 操作方法:
      1. 安装必要包:sudo apt install ntfs-3g
      2. 查看 Windows 分区 UUID:lsblk -f 或 sudo blkid
      3. 创建挂载点:sudo mkdir /mnt/windows_data
      4. 编辑 fstab 实现开机自动挂载:
        sudo nano /etc/fstab

        添加行:UUID=你的Windows分区UUID /mnt/windows_data ntfs-3g defaults,uid=1000,gid=1000,windows_names 0 0

        • uid/gid 替换为你的 Ubuntu 用户 ID(用 id 命令查看)。
        • windows_names 参数确保文件名兼容 Windows 规则。
    • 注意:务必确保 Windows 已关闭“快速启动”,否则 Linux 挂载 NTFS 分区时会报错或只读。

六、 总结与建议

  • 对于开发者:强烈建议直接在 Windows 上使用 WSL2 运行 Ubuntu 环境,而不是双系统。WSL2 提供了接近原生的 Linux 内核体验,资源占用更少,切换更便捷,且避免了分区管理的麻烦。只有在需要完整图形界面、GPU 直通或特定内核模块调试时,才考虑真正的双系统。
  • 对于运维/测试:如果必须双系统,请严格遵守“先 Win 后 Liunx”、“关闭快速启动”、“独立 Home 分区”这三条原则。
  • 关于云服务器:如果你是在阿里云、腾讯云等厂商的 ECS/CVM 上操作,请注意:云服务器的系统盘通常是整块映射的镜像,不支持本地双系统。云环境下的多系统需求,应通过虚拟机(KVM/QEMU)或容器(Docker/K8s)来实现,这才是云原生思维。

希望这份指南能帮你顺利搞定双系统。如果有具体的报错信息,欢迎继续提问。