
双系统分区调整:从 Windows D 盘分配 50GB 给 Arch Linux
[!CAUTION] 🚨 Caution
操作前务必备份所有重要数据! 分区调整涉及磁盘底层数据结构,存在数据丢失风险。请将 Windows 和 Linux 中的重要文件备份到外部存储设备或云端。
操作概览
整个流程分为 4 个阶段:
flowchart LR
A["阶段1\n准备工作"] --> B["阶段2\nWindows 缩小 D 盘"]
B --> C["阶段3\nGParted 扩展 Linux 分区"]
C --> D["阶段4\n验证与引导修复"]
| 阶段 | 操作环境 | 所需工具 | 预计耗时 |
|---|---|---|---|
| 准备工作 | Windows | 系统设置 | 10 分钟 |
| 缩小 D 盘 | Windows | 磁盘管理 | 5 分钟 |
| 扩展 Linux 分区 | GParted Live USB | GParted | 30-120 分钟 |
| 验证修复 | Arch Linux | 终端 | 10-30 分钟 |
阶段 0:了解你的磁盘布局
在操作前,先搞清楚你当前的磁盘分区布局。典型的双系统布局可能如下:
┌──────┬──────────┬───────────┬────────────┬───────────────┐
│ EFI │ Windows │ Windows │ Arch Linux │ (可能还有 │
│ 分区 │ C 盘 │ D 盘 │ 分区 │ 其他分区) │
│~300M │ ~500G │ ~400G │ ~80G │ │
└──────┴──────────┴───────────┴────────────┴───────────────┘
[!IMPORTANT] ❗ Important
关键概念: 分区只能向「物理相邻」的未分配空间扩展。如果缩小 D 盘后产生的未分配空间和 Arch Linux 分区之间不相邻(中间隔着其他分区),你需要额外移动分区,这会增加复杂度和耗时。
先在 Windows 中查看当前分区布局
- 按
Win + R,输入diskmgmt.msc,回车 - 截图或记录 整个磁盘的分区顺序、大小和类型
- 特别注意 D 盘和 Arch Linux 分区之间是否有其他分区
阶段 1:准备工作(在 Windows 中完成)
1.1 关闭 Windows 快速启动
快速启动会导致 NTFS 文件系统处于不干净状态,Linux 工具可能无法正确识别或操作分区。
- 打开 控制面板 → 电源选项
- 点击左侧 「选择电源按钮的功能」
- 点击 「更改当前不可用的设置」
- 取消勾选 「启用快速启动(推荐)」
- 点击 「保存修改」
1.2 关闭休眠功能(推荐)
休眠文件 hiberfil.sys 可能阻止分区缩小。以管理员身份打开 PowerShell:
powercfg /h off
1.3 关闭 BitLocker(如果已启用)
如果 D 盘启用了 BitLocker 加密,请先在 Windows 中解密:
- 打开 设置 → 隐私与安全 → 设备加密 (或搜索 BitLocker)
- 找到 D 盘,选择 「关闭 BitLocker」
- 等待解密完成
1.4 准备 GParted Live USB(或 Arch Linux 安装 U 盘)
你需要一个能启动 GParted 的 Live USB。有两种选择:
方案 A:使用 GParted Live(推荐)
- 从 gparted.org/download.php 下载 GParted Live ISO
- 使用 Rufus 或 Ventoy 将 ISO 写入 U 盘
方案 B:使用 Arch Linux 安装 U 盘
- 如果你还保留着当初安装 Arch 时的安装 U 盘,可以直接使用
- Arch Live 环境中可以安装 GParted:
pacman -Sy gparted
阶段 2:在 Windows 中缩小 D 盘
2.1 打开磁盘管理
- 按
Win + R,输入diskmgmt.msc,回车 - 或者右键点击 开始按钮 → 选择 「磁盘管理」
2.2 缩小 D 盘
- 找到 D 盘 对应的分区
- 右键 D 盘分区 → 选择 「压缩卷…」
- 等待系统计算可用空间
- 在 「输入压缩空间量(MB)」 中输入:
51200(50GB = 50 × 1024 = 51200 MB) - 点击 「压缩」
[!NOTE] ✏️ Note
如果系统显示可压缩的空间小于 51200 MB,可能是由于不可移动的系统文件。尝试以下方法:
- 清空回收站
- 禁用系统还原点:右键「此电脑」→ 属性 → 系统保护 → 选择 D 盘 → 配置 → 禁用
- 重启后再试
- 如果以上都不行,可以在后续用 GParted 来缩小
2.3 确认结果
操作完成后,你应该能在磁盘管理中看到 D 盘后面出现了 约 50GB 的「未分配」空间(显示为黑色条)。
[!WARNING] ⚠️ Warning
不要 在 Windows 磁盘管理中对这块未分配空间做任何操作(不要新建卷),直接保持未分配状态。
阶段 3:使用 GParted 扩展 Arch Linux 分区
这是最关键的一步,需要根据你的具体分区布局来操作。
3.1 从 Live USB 启动
- 插入准备好的 GParted Live USB 或 Arch 安装 U 盘
- 重启电脑
- 在启动时按对应按键进入 BIOS/UEFI 引导菜单(通常是
F2、F12、Delete或Esc) - 选择从 USB 设备 启动
- 进入 GParted Live 环境(选择默认选项即可)
3.2 打开 GParted 并识别分区
- GParted 会自动启动(如果没有,从菜单中打开)
- 在右上角的 下拉菜单 中选择你的硬盘(如
/dev/sda或/dev/nvme0n1) - 你会看到所有分区的图形化表示
此时,请确认以下关键信息:
- 未分配空间(Unallocated)的位置
- Arch Linux 根分区的位置(通常是 ext4 或 btrfs 文件系统)
- 两者之间是否有其他分区
3.3 根据布局选择操作方案
情况 A:未分配空间与 Linux 分区相邻 ✅ 最简单
如果缩小 D 盘后的未分配空间刚好紧挨着 Arch Linux 分区(D 盘在 Linux 分区的左边),操作非常简单:
缩小前: [ D 盘 400G ][ Arch Linux 80G ]
缩小后: [ D 盘 350G ][ 未分配 50G ][ Arch Linux 80G ]
但这种情况下未分配空间在 Linux 分区的左边,你需要:
- 右键点击 Arch Linux 分区 → 选择 「Resize/Move」
- 将分区的左边界向左拖动,占满未分配空间
- 或者在 「Free space preceding」 中输入
0 - 点击 「Resize/Move」
如果未分配空间在 Linux 分区的右边:
- 右键点击 Arch Linux 分区 → 选择 「Resize/Move」
- 将分区的右边界向右拖动,占满未分配空间
- 点击 「Resize/Move」
情况 B:未分配空间与 Linux 分区之间有其他分区 ⚠️ 需要移动分区
缩小后: [ D 盘 350G ][ 未分配 50G ][ 恢复分区 ][ Arch Linux 80G ]
你需要先将中间的分区移动,使未分配空间与 Linux 分区相邻:
- 右键点击中间的分区(如恢复分区) → 选择 「Resize/Move」
- 将其向左拖动,使其占据未分配空间的左侧位置
- 点击 「Resize/Move」
- 现在未分配空间应该移到了 Linux 分区旁边
- 然后按 情况 A 的方式扩展 Linux 分区
[!WARNING] ⚠️ Warning
移动分区是高风险操作,尤其是移动 Windows 相关分区。移动过程非常耗时(可能数小时),期间绝对不能断电或中断。笔记本电脑请确保接通电源。
情况 C:使用新分区 + LVM 或挂载点(替代方案)
如果移动分区风险太大,可以考虑:
- 在未分配空间上创建一个新的 Linux 分区(ext4)
- 将其挂载到 Arch Linux 的某个目录(如
/home/extra)
这样不需要移动任何分区,是最安全的方案,但缺点是空间不是直接加到根分区上。
3.4 应用所有更改
- 确认所有待执行的操作(窗口底部会列出)
- 点击工具栏上的 绑色勾号 ✓(Apply All Operations)
- 在确认对话框中点击 「Apply」
- 耐心等待 操作完成,不要中断!
[!CAUTION] 🚨 Caution
此过程不可逆!一旦开始,严禁断电、拔出 U 盘或强制关机。如果涉及分区移动,可能需要 1-3 小时。
3.5 完成后关机
操作完成后,关闭 GParted,拔出 U 盘,正常关机。
阶段 4:验证与引导修复
4.1 尝试正常启动
- 先尝试启动 Arch Linux
- 再尝试启动 Windows
4.2 验证 Arch Linux 分区大小
启动进入 Arch Linux 后,打开终端运行:
# 查看分区大小
df -h
# 查看详细分区信息
lsblk
# 查看文件系统信息
sudo fdisk -l
确认根分区 / 的大小已经从 ~80G 增长到 ~130G。
4.3 如果 Arch Linux 无法启动(修复 GRUB)
如果移动了分区导致 GRUB 引导失败:
- 从 Live USB 再次启动
- 挂载 Arch Linux 分区:
# 查看分区设备名
lsblk
# 挂载根分区(替换 /dev/sdXn 为你的实际分区)
mount /dev/sdXn /mnt
# 如果使用 UEFI,挂载 EFI 分区
mount /dev/sdX1 /mnt/boot/efi # 或 /mnt/boot,取决于你的配置
# chroot 进入系统
arch-chroot /mnt
- 重新安装 GRUB:
# UEFI 系统
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
# 重新生成配置
grub-mkconfig -o /boot/grub/grub.cfg
- 如果你使用的是 systemd-boot:
# 检查引导条目
bootctl status
# 确认配置文件中的分区 UUID 是否正确
blkid
cat /boot/loader/entries/*.conf
# 如果 UUID 变了,更新配置文件中的 UUID
- 退出 chroot 并重启:
exit
umount -R /mnt
reboot
4.4 如果 Windows 无法启动
通常缩小 D 盘不会影响 Windows 启动。但如果出问题:
- 使用 Windows 安装 U 盘启动
- 选择 「修复计算机」 → 「疑难解答」 → 「高级选项」 → 「启动修复」
- 或使用命令提示符:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
4.5 更新 fstab(如果分区 UUID 改变)
如果移动了分区,UUID 可能会改变。在 Arch Linux 中检查:
# 查看当前分区 UUID
blkid
# 查看 fstab 中配置的 UUID
cat /etc/fstab
# 如果不匹配,编辑 fstab
sudo nano /etc/fstab
常见问题 FAQ
Q: D 盘无法压缩到 50GB 怎么办?
A: 尝试以下操作后重试:
- 运行磁盘清理工具
- 关闭系统还原
- 禁用休眠 (
powercfg /h off) - 禁用页面文件(虚拟内存),重启后再缩小,缩小完再启用
- 运行磁盘碎片整理
Q: 是否可以在 Arch Linux 中直接操作?
A: 不能。正在运行的系统分区是被挂载的,无法对其进行大小调整。必须使用 Live USB 环境。
Q: btrfs 文件系统可以在线扩展吗?
A: 如果你的 Arch Linux 使用 btrfs,且未分配空间与分区相邻,可以在 GParted 中先扩展分区,然后在 Arch Linux 中运行:
sudo btrfs filesystem resize max /
Q: ext4 文件系统扩展后需要额外操作吗?
A: GParted 会自动调整文件系统大小,通常不需要额外操作。如果文件系统大小没有自动更新:
sudo resize2fs /dev/sdXn
Q: 操作大约需要多少时间?
A:
- 如果只是简单扩展(情况 A):5-10 分钟
- 如果需要移动分区(情况 B):1-3 小时,取决于数据量
推荐操作顺序清单
- 备份所有重要数据(Windows 和 Linux)
- 关闭 Windows 快速启动
- 关闭休眠 (
powercfg /h off) - 准备 GParted Live USB
- 在 Windows 磁盘管理中缩小 D 盘 50GB
- 确认出现 50GB 未分配空间
- 从 GParted Live USB 启动
- 在 GParted 中识别分区布局
- 移动必要的分区(如需要)
- 扩展 Arch Linux 根分区
- 应用更改并等待完成
- 重启并验证 Arch Linux 分区大小
- 重启并验证 Windows 正常启动
- 如有问题,修复引导