news 2026/9/4 5:21:27

多系统引导(Multiboot):Linux 与 Windows 共存

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多系统引导(Multiboot):Linux 与 Windows 共存

多系统引导(Multiboot):Linux 与 Windows 共存

本篇是前面《UEFI 双盘双系统(双Windows、双 Linux、Windows + Linux)》的外篇——具体实操及细节示例。
本文实操示例:Ubuntu 22.04 与 Windows 10 双系统搭建,Ubuntu 24.04 与 Windows 11 双系统搭建同理。

多系统引导(Multiboot)技术允许在一台计算机的存储设备上安装多个操作系统,并通过引导程序(Bootloader)在开机时选择启动目标系统。本文从基础概念到实战操作,详细讲解如何在一台电脑上同时安装并引导 Windows 和 Linux,涵盖规划、安装、配置、故障排除等全流程。

1. 多系统引导原理

计算机开机后,首先运行固件(BIOS/UEFI),固件检测到存储设备后,加载并执行存储在引导扇区(MBR 模式)或 EFI 系统分区(UEFI 模式)中的引导程序。引导程序(如 GRUB、systemd-boot、Windows Boot Manager)负责列出可用的操作系统,并根据用户选择加载对应系统的内核。

2. 准备工作

2.1 硬件要求

  • 存储设备:至少 200 GB 可用空间(Windows 建议 ≥ 64 GB,Linux 建议 ≥ 30 GB,具体根据需求调整)。
  • 内存:至少 4 GB RAM(推荐 8 GB 以上)。
  • USB 闪存盘:容量 ≥ 4 GB(用于制作启动盘)。
  • 固件模式:优先选择 UEFI 模式(现代主板默认,支持 GPT 分区表);老旧设备可能为 BIOS 模式(仅支持 MBR 分区表)。
  • 兼容的计算机:支持 64 位系统(现代 CPU 均满足)。

2.2 软件工具

  • Windows 安装介质:从 微软官网 下载 Windows ISO,使用 Rufus 制作启动盘(注意选择与固件匹配的模式:UEFI 或 BIOS)。

  • Linux 安装介质:推荐 Ubuntu、Fedora 等桌面友好型发行版,从官网下载 ISO 后,使用 Rufus 或dd命令制作启动盘:

    sudoddif=ubuntu.isoof=/dev/sdbbs=4Mstatus=progress
  • 分区工具:Linux live 环境自带的 GParted,或 Windows 下的 DiskGenius(用于提前规划分区)。

  • 备份工具:重要数据提前备份至外部存储(如移动硬盘、云盘),避免分区操作失误导致数据丢失。

2.3 注意事项

  • 禁用 Windows 快速启动:快速启动会锁定系统分区,导致 Linux 无法访问磁盘。
    操作步骤:控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选"启用快速启动" → 保存更改。

  • 关闭 BitLocker(如有):若 Windows 启用了 BitLocker 加密,需先解密(设置 → 更新和安全 → 设备加密 → 关闭加密),否则分区操作可能失败。

  • 禁用休眠:在 Windows 中以管理员身份执行

    powercfg-h off

    禁用休眠功能,避免分区被锁定。

3. 分区规划

多系统安装的前提是合理规划磁盘分区。

3.1 分区表:GPT 与 MBR

特性GPT(GUID 分区表)MBR(主引导记录)
硬盘容量支持> 2 TB≤ 2 TB
最大分区数128 个4 个主分区
配合的固件模式UEFIBIOS
推荐使用场景现代计算机老旧设备

推荐选择 GPT + UEFI,避免 MBR 的容量和分区数量限制。

3.2 分区类型

3.2.1 EFI 系统分区(ESP,UEFI 模式必选)
  • 作用:存储引导程序(如 GRUB、Windows Boot Manager)和启动配置文件。
  • 位置:GPT 分区表的第一个分区,类型为EFI System Partition
  • 大小:建议 512 MB(最小 100 MB),格式为 FAT32。
3.2.2 Windows 分区
  • 系统分区(C 盘):NTFS 格式,用于安装 Windows 系统文件,建议 ≥ 64 GB。
  • 恢复分区:Windows 自动创建,用于系统恢复,无需手动干预。
3.2.3 Linux 分区
  • 根分区(/:EXT4/XFS 格式,存储 Linux 系统文件,建议 ≥ 30 GB(若需安装大量软件,可增至 50 GB)。
  • 交换分区(swap):功能类似 Windows 的虚拟内存,大小建议:
    • 物理内存 ≤ 8 GB:swap = 内存大小 × 1.5;
    • 物理内存 > 8 GB:swap = 8 GB(或根据休眠需求调整,若需休眠,swap 需 ≥ 内存大小)。
  • 家目录分区(/home:EXT4 格式,存储用户数据(文档、下载等),建议分配剩余大部分空间(便于重装系统时保留数据)。

3.3 分区方案示例(500 GB 硬盘,UEFI + GPT)

分区类型大小格式挂载点/作用
EFI 系统分区512 MBFAT32/boot/efi(Linux)
Windows 系统分区150 GBNTFSWindows C 盘
Linux 根分区50 GBEXT4/
Linux 交换分区8 GBswap
Linux 家目录分区剩余EXT4/home

4. 安装步骤

4.1 为 Linux 准备磁盘空间

在安装 Linux 前,需从 Windows 磁盘中划分一块"未分配空间"供 Linux 使用。

通过 Windows 磁盘管理收缩卷
  1. 按下Win + X→ 选择"磁盘管理",或在搜索栏输入diskmgmt.msc并回车。
  2. 右键点击C:卷 → 选择"收缩卷"。
  3. 系统会计算可用收缩空间,在"输入收缩空间量(MB)"中输入需分配给 Linux 的空间(1 GB = 1024 MB,例如 50 GB = 51200 MB)。
  4. 点击"收缩",完成后会出现一块"未分配"空间(黑色分区)。

注意:若收缩空间远小于预期,可能是由于 Windows 分页文件或系统还原点占用空间。可先关闭系统还原、清理磁盘后重试。

若关闭系统还原仍然不能收缩空间,可以借助其他第三方工具。

4.2 制作 Linux 启动盘

使用 Rufus 将 Linux ISO 写入 USB 闪存盘,制作可启动介质。

  1. 插入 USB 闪存盘(注意:数据会被格式化,请提前备份)。
  2. 打开 Rufus,自动识别 USB 设备(确认盘符正确,避免误格式化其他磁盘)。
  3. 配置参数:
    • 设备:选择目标 USB 闪存盘。
    • 引导选择:点击"选择",浏览并选择下载的 Linux ISO 文件。
    • 分区方案
      • 若计算机支持 UEFI(主流新电脑):选择"GPT"分区方案,目标系统类型"UEFI(非 CSM)"。
      • 若仅支持 Legacy BIOS(旧电脑):选择"MBR"分区方案。
    • 文件系统:默认"FAT32"(兼容 UEFI 和 BIOS)。
  4. 点击"开始",等待进度完成(约 5–10 分钟)。

制作完成后,插入 USB 重启电脑并选择从 USB 启动,若能进入 Linux live 环境(试用模式),则启动盘有效。

4.3 配置 BIOS/UEFI 设置

进入 BIOS/UEFI

重启电脑,在厂商 Logo 界面按下对应快捷键:

  • Dell/联想:F2Del
  • HP:F10Esc
  • 华硕:DelF2
  • 苹果:开机时长按Option键(仅 Intel 芯片 Mac)
  • ……
设置调整
  1. 禁用 Secure Boot(安全启动):进入"Boot"或"Security"选项卡,找到"Secure Boot",设置为"Disabled"(部分 Linux 发行版已支持 Secure Boot,但禁用可避免兼容性问题)。
  2. 启用 USB 启动:在"Boot Order"中,将"USB Drive"或"Removable Devices"移至首位。
  3. 设置启动模式
    • 若使用 GPT 分区:确保"Boot Mode"为"UEFI"(非"Legacy"或"CSM")。
    • 若使用 MBR 分区:选择"Legacy BIOS"或"CSM"模式。
  4. 保存并退出:按F10保存设置,电脑会自动重启并从 USB 启动盘引导。

4.4 推荐方案:先安装 Windows,再安装 Linux

Windows 安装程序会默认占用整个磁盘并覆盖引导扇区,因此先安装 Windows,再安装 Linux 可避免引导程序冲突(Linux 引导程序如 GRUB 会自动识别 Windows 并添加启动项)。

步骤 1:安装 Windows
  1. 插入 Windows 启动盘,重启电脑并进入 BIOS/UEFI 设置,设置从 USB 启动,并确保固件模式为 UEFI(禁用 Legacy/CSM 兼容模式)。
  2. 进入 Windows 安装界面,选择"自定义:仅安装 Windows(高级)"。
  3. 分区操作:
    • 若磁盘未分区:点击"新建",输入 EFI 分区大小(512 MB),系统会自动创建 ESP 和恢复分区;剩余空间暂时不分区(留给 Linux)。
    • 若磁盘已分区:删除目标分区(注意备份数据),留出未分配空间。
  4. 选择 Windows 安装分区(NTFS 格式),完成安装并重启。此时 Windows 会独占引导程序(Windows Boot Manager),开机直接进入 Windows。
步骤 2:安装 Linux(以 Ubuntu 为例)
  1. 插入 Linux 启动盘,重启后进入 UEFI 设置,选择从 Linux 启动盘启动。
  2. 进入 Ubuntu live 环境,点击"安装 Ubuntu",选择"不联网安装"(避免更新拖慢速度)。
  3. 选择安装类型:推荐"其他选项"(手动分区,更灵活),而非"与 Windows 共存"(自动分区可能不符合需求)。
  4. 手动分区:
    • 选中未分配空间,点击"+"创建分区:
      • 根分区(/):大小 50 GB,格式 EXT4,挂载点/
      • 交换分区(swap):大小 8 GB,格式 swap。
      • 家目录分区(/home):大小剩余全部,格式 EXT4,挂载点/home
    • EFI 分区:找到 Windows 已创建的 ESP(512 MB,FAT32 格式),选中后设置挂载点为/boot/efi(务必选择正确,否则 Linux 无法引导)。
  5. 引导程序安装位置:在"安装启动引导器的设备"中选择整个磁盘(如/dev/sda,而非某个分区/dev/sda1),确保 GRUB 安装到磁盘的 EFI 分区。
  6. 完成安装并重启,此时 GRUB 会作为默认引导程序,列出 Windows 和 Linux 选项,按 Enter 选择启动系统。

4.5 特殊场景:先安装 Linux,再安装 Windows

若已安装 Linux,再安装 Windows 会导致 Windows 覆盖 ESP 中的 GRUB,开机直接进入 Windows(无 Linux 选项)。需手动修复 GRUB。

修复 GRUB(通过 Linux live 环境)
  1. 插入 Linux 启动盘,进入 live 环境,打开终端。

  2. 识别 Linux 根分区:运行sudo lsblk,找到 Linux 根分区(如/dev/sda5,EXT4 格式)。

  3. 挂载根分区和 ESP:

    sudomount/dev/sda5 /mnt# 挂载根分区sudomount/dev/sda1 /mnt/boot/efi# 挂载 ESP(假设 ESP 为 /dev/sda1)
  4. 切换到 Linux 系统环境(chroot):

    sudomount--bind/dev /mnt/devsudomount--bind/proc /mnt/procsudomount--bind/sys /mnt/syssudochroot/mnt
  5. 重新安装 GRUB 到 ESP:

    # UEFI 模式sudogrub-install--target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu# BIOS 模式sudogrub-install /dev/sda
  6. 更新 GRUB 配置(自动识别 Windows):

    sudoupdate-grub
  7. 退出 chroot 并重启:

    exitsudoumount-R/mntreboot

此时 GRUB 会恢复,开机可选择 Linux 或 Windows。

5. 引导程序配置

5.1 GRUB

GRUB(Grand Unified Bootloader)是 Linux 主流引导程序,自动识别多系统并生成启动菜单。

主要配置文件
  • /etc/default/grub:全局配置(默认启动项、超时时间等)。
  • /boot/grub/grub.cfg:自动生成的启动项列表(不要手动编辑,通过update-grub更新)。
常用配置
  1. 修改默认启动系统:编辑/etc/default/grub,设置GRUB_DEFAULT=0(0 表示第一个菜单项,1 表示第二个,以此类推)。若想直接指定系统名,可设为GRUB_DEFAULT="Windows 10 (on /dev/sda2)"(需与grub.cfg中的菜单名称一致)。
  2. 缩短启动等待时间:设置GRUB_TIMEOUT=5(默认 10 秒,改为 5 秒)。
  3. 应用配置:执行sudo update-grub生成新的grub.cfg,重启生效。

5.2 systemd-boot

systemd-boot 是 systemd 套件自带的引导程序,仅支持 UEFI 模式,配置更简洁。

配置步骤(以 Arch Linux 为例)
  1. 确保 ESP 已挂载:编辑/etc/fstab,添加 ESP 挂载项:

    UUID=XXXX-XXXX /boot/efi vfat defaults 0 2

    UUID 通过blkid /dev/sda1获取。

  2. 添加 Windows 启动项:在 ESP 分区的/loader/entries/目录下创建windows.conf文件:

    title Windows 10 icon /EFI/Microsoft/Boot/bootmgfw.efi efi /EFI/Microsoft/Boot/bootmgfw.efi
  3. 更新配置:无需额外命令,重启后 systemd-boot 会自动加载新条目。

6. 常见问题与故障排除

6.1 GRUB 未显示 Windows 选项

原因:GRUB 未检测到 Windows 分区。

解决

  1. 确认 Windows 分区未损坏:通过 GParted 检查 NTFS 分区状态。

  2. 更新 GRUB:sudo update-grub(GRUB 会自动扫描/etc/grub.d/30_os-prober检测 Windows)。

  3. 若仍无效,手动添加 Windows 条目到/etc/grub.d/40_custom

    menuentry"Windows 10"{insmod part_gpt insmod fat insmod chainsetroot=(hd0,gpt1)# ESP 分区路径(通过 lsblk 确认)chainloader /EFI/Microsoft/Boot/bootmgfw.efi}

    保存后执行sudo update-grub

6.2 Windows 覆盖 GRUB,开机直接进入 Windows

原因:Windows 更新或重装时,会强制将 Windows Boot Manager 设置为默认引导程序。

解决

  • 进入 UEFI 设置,在"启动顺序"中优先选择 GRUB(如"ubuntu")而非"Windows Boot Manager"。
  • 或通过 Linux live 环境修复 GRUB(见 4.5 节)。

6.3 Linux 无法挂载 Windows NTFS 分区

原因:Windows 启用了"快速启动"(Fast Startup),导致 NTFS 分区处于休眠状态(只读)。

解决:在 Windows 中禁用快速启动:控制面板 → 电源选项 → 选择电源按钮的功能 → 更改当前不可用的设置 → 取消勾选"启用快速启动"。

6.4 开机卡在 GRUB 命令行(grub>

原因:GRUB 配置文件损坏或未找到 Linux 根分区。

解决:手动指定根分区并启动:

grub>ls# 列出所有磁盘和分区(如 (hd0,gpt5))grub>setroot=(hd0,gpt5)# 设置根分区(替换为实际 Linux 根分区)grub>linux /boot/vmlinuz-xxxroot=/dev/sda5# 加载内核(vmlinuz 文件名通过 ls /boot 获取)grub>initrd /boot/initrd.img-xxx# 加载 initramfsgrub>boot# 启动系统

进入系统后,重新安装 GRUB:

sudogrub-install /dev/sda&&sudoupdate-grub

6.5 未分配空间无法选择(灰色不可用)

原因:Windows 快速启动或休眠功能未关闭,导致分区被锁定。

解决:重启进入 Windows,以管理员身份执行powercfg -h off禁用休眠,并关闭"快速启动"(见 2.3 节),重启后重试安装。

6.6 Secure Boot 导致 Linux 无法启动

症状:启动时提示"Secure Boot Violation"或黑屏。

解决:进入 BIOS/UEFI,彻底禁用 Secure Boot(见 4.3 节);或为 Linux 内核签名(高级操作,参考 Ubuntu Secure Boot 文档)。

7. 最佳实践

  1. 优先 UEFI + GPT:避免 MBR 分区表限制,支持更大硬盘和更多分区。

  2. 先 Windows 后 Linux:Windows 会覆盖引导程序,Linux 引导程序(GRUB)可自动识别 Windows,减少冲突。

  3. 独立/home分区:Linux 重装时仅格式化根分区,保留/home可避免用户数据丢失。

  4. 禁用 Windows 快速启动:防止 NTFS 分区被锁定,确保 Linux 可读写访问。

  5. 定期备份引导配置

    sudocp/boot/grub/grub.cfg /boot/grub/grub.cfg.bak

    备份 GRUB 配置,故障时快速恢复。

  6. 慎用 Secure Boot:部分 Linux 发行版(如 Ubuntu)支持 Secure Boot,但可能导致第三方驱动(如 NVIDIA)无法加载,建议按需禁用。

  7. 数据安全与备份:使用工具(如 Timeshift 备份 Linux 系统,Windows 备份工具备份数据),建议每月至少一次。

  8. 独立数据分区:可创建一个 NTFS 格式的"共享分区",供 Windows 和 Linux 读写(避免频繁切换系统时复制文件)。

  9. 系统维护:Linux 使用sudo apt update && sudo apt upgrade(Debian/Ubuntu)或sudo dnf update(Fedora)更新;Windows 通过"设置 → 更新和安全"更新。使用df -h(Linux)或"此电脑"(Windows)监控分区占用,避免根分区满导致系统异常。

  10. 替代方案:若多系统引导操作复杂,可尝试虚拟机(如 VirtualBox 或 VMware),在 Windows 中运行 Linux,无需分区,适合临时测试或轻度使用。

8. 实操示例:Ubuntu 22.04 与 Windows 10 双系统搭建

以下为具体操作流程示例,假设用户已完成前置准备:

  1. 磁盘准备:通过 Windows 磁盘管理收缩 C 盘,获得 100 GB 未分配空间。
  2. 制作启动盘:用 Rufus 将 Ubuntu 22.04 ISO 写入 8 GB USB,分区方案选择 GPT(UEFI 模式)。
  3. BIOS 设置:禁用 Secure Boot,设置 USB 为第一启动项,保存重启。
  4. 安装 Ubuntu
    • 选择"其他选项"手动分区:
      • EFI 分区:选择 Windows 现有 EFI 分区(/dev/sda1),挂载点/boot/efi
      • 根分区(/dev/sda5):30 GB,Ext4,挂载点/
      • 交换分区(/dev/sda6):4 GB(内存 4 GB),Linux Swap。
      • 家目录(/dev/sda7):剩余 66 GB,Ext4,挂载点/home
    • 引导器安装位置选择/dev/sda(整个磁盘)。
  5. 完成安装:重启后 GRUB 菜单显示"Ubuntu"和"Windows Boot Manager",选择对应系统即可启动。

参考资料

  • Ubuntu 官方多系统安装指南
  • Arch Linux 多系统引导 Wiki
  • GPT 与 MBR 分区表对比
  • Ubuntu 官方安装文档
  • Rufus 官方指南
  • 引导修复工具 Boot-Repair
  • Ubuntu Secure Boot 文档
  • 多系统引导实战指南:在一台电脑上同时运行 Linux 与 Windows — 2025 年 11 月 18 日
    https://geek-blogs.com/blog/multiboot-linux-windows/
  • Windows 10 与 Linux 多系统引导(Multiboot)完全指南 — 2025 年 12 月 8 日
    https://geek-blogs.com/blog/windows-10-multiboot-linux/
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 5:21:17

第十三讲:点亮LED

大家好,接下来的一段时间我将开始学习野火的Linux系统课程并将学习到的干货逐步更新到我的CSDN博客中。没时间刷课的同学可以把我的博客喂给AI突击一下连接好电源线USB1./sys/class讲解/sys是sysfs 虚拟文件系统(内存里,重启消失)…

作者头像 李华
网站建设 2026/9/4 5:20:46

SpringBoot校园二手交易平台:从架构设计到毕业实践全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 5:20:35

深入C标准库源码:从黑盒调用到白盒实现的系统编程精要

简介:本资源是经典著作《标准C库》(P.J. Plauger著,1992年Prentice Hall出版)配套的完整源代码实现,面向C语言中高级学习者、嵌入式开发者及标准库原理研究者,用于深入理解C标准库各模块的设计逻辑与底层实…

作者头像 李华
网站建设 2026/9/4 5:20:10

MTK平台Bootloader解锁与刷机实战:从原理到救砖全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 5:20:09

Unity3D 版本号后缀详解

刚用 Unity 的时候,在 Unity Hub 里看到一长串版本号,什么 2021.3.16f1、2022.3.10f1c1、6000.0.0b15,完全不知道后面的字母代表什么。后来用得多了才慢慢搞清楚,这里把我理解的记下来,省得以后忘。 一、版本号的结构 …

作者头像 李华
网站建设 2026/9/4 5:18:13

从零构建Notion项目管理中枢:数据库、视图与工作流实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华