news 2026/10/17 12:02:56

Ubuntu双系统根分区空间不足?详解扩容原理与实操步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu双系统根分区空间不足?详解扩容原理与实操步骤

你装双系统的时候是不是也这样:Windows 分了两百多G,Ubuntu 这边只给了根目录一百G,结果编译几次代码、装两三个大型开发环境,/分区就直接撑满。弹窗提示空间不足的时候,第一反应是买块新硬盘,再一查发现其实整块 SSD 还剩一大半没利用。这种局面的解法就是给 Ubuntu 扩容。我帮人调过不少双系统机器,先说一个反直觉的事实:Ubuntu 扩容从来不是直接在系统里拖拖拽拽就能完成,因为根分区后面往往还压着交换分区或其他分区,空间不连续,系统运行中又没法动正在挂载的分区。这篇就把扩容的原理、准备工作、完整步骤和那些没人提醒你的坑一次性讲清楚。

1. 扩容方案的底层思路:为什么不能直接拖拽分区

1.1 根分区为什么“卡死”了

先理解磁盘分区的核心规则:一个分区如果想要变大,它后面必须有相邻的未分配空间。注意两个关键词,一个是“相邻”,一个是“后面”。举个书架的例子,你要把一本书换成更厚的,那它右边那一列必须有空位,而且空位必须紧挨着它;空位隔了几本书,或者空位在它左边,都换不了。

双系统装机时,典型的布局是这样的:最前面是 EFI 引导分区(ESP),然后是 Windows 的系统盘,接着是 Ubuntu 的根分区,最后面压着一个 swap 交换分区。你如果想在 Windows 里把 C 盘缩出一块空间,那块空间会出现在 C 盘和后面的恢复分区或 Ubuntu 根分区之间,它并不会乖乖跑到 Ubuntu 根分区的正后方。也就是说,这块空间虽然存在,但位置不对,根分区没法用上。

很多新手在这里就会卡住:打开 GParted 一看,明明有很多未分配空间,但右键根分区只有 unmount 选项,没有 resize 选项,或者 resize 之后确认按钮是灰色的。原因很简单,未分配空间不在目标分区的尾部,分区工具不会帮你“隔空取物”。

1.2 为什么必须在 Live 环境操作

扩展根分区这个动作,本质上要同时修改分区表和文件系统。Linux 的文件系统不支持像某些工具那样在挂载状态下随便调整大小,尤其是要缩小或移动分区,必须保证目标分区处于卸载状态。根分区是你系统运行时必然挂载的,swap 分区也通常处于启用状态,所以常规系统里根本没法操作自己正在使用的根分区。

解决方案就是用一个 Ubuntu Live USB 启动系统。Live 环境整个运行在内存里,原系统内的磁盘分区都不会自动挂载,这时候你想卸载、想移动、想调整哪个分区都行。这也是为什么我见到有人尝试用已经安装好的 Ubuntu 去调整其他分区,成功率很低,报错大多都是“分区正忙”。记住:扩容必须进 Live 环境,这是第一个大前提。

1.3 GPT 和 MBR 对扩容的影响

动手之前还要确认自己的分区表方案。2012 年之后的电脑基本都是 UEFI 引导 + GPT 分区表,这种方案下所有分区都是“主分区”,没有数量限制,扩容时自由度很高。而旧的 BIOS + MBR 方案还存在主分区、扩展分区、逻辑分区的概念,如果 Ubuntu 根分区恰好是一个逻辑分区,它外面还套着一层扩展分区,你扩展的时候不光要扩大逻辑分区,还得先扩大外层扩展分区的边界,操作步骤一下就多了。

怎么快速判断?在终端执行sudo parted -l,看到输出里写着“Partition Table: gpt”就是 GPT,写着“msdos”就是 MBR。现在新装的机器基本都不用担心这个,但如果你是从老笔记本上拆下来的硬盘装双系统,最好先心里有数。

2. 动手前必须做完的准备工作

2.1 关掉 Windows 那边的“锁”

这是整个扩容流程里最容易被忽略、也最容易翻车的一步。Windows 对 NTFS 分区有几种“锁定”机制,不处理干净,GParted 要么拒绝操作,要么扩容之后 Windows 直接进恢复模式。

第一件事是关闭“快速启动”。这个功能听起来只是加速开机,实际上它会让 Windows 关机时把 NTFS 分区标记为“休眠未完成”状态,Linux 读写这种分区时会提示脏数据。去控制面板里打开电源选项,找到“选择电源按钮的功能”,点击“更改当前不可用的设置”,然后取消勾选“启用快速启动”。

第二件事是关闭休眠。管理员身份运行命令提示符,执行powercfg /h off,然后把电脑正常关机一次。这里说的正常关机是指真正关机,不是点一下关机键让它又快速启动。如果不关闭休眠和快速启动,GParted 大概率会在缩放 NTFS 分区时弹出一个“Unable to read the contents of the file system”的报错,折腾半天什么也改不了。

第三件事是关于 BitLocker 加密。如果你的 Windows 系统盘开启了 BitLocker 加密,GParted 读到的只是一串密文,改动后 Windows 会要求你提供恢复密钥,没有密钥就彻底进不去系统。最稳妥的做法是在 Windows 设置里搜索 BitLocker,选择“暂停保护”,等扩容完成后下次登录系统时再重新启用。如果你已经存好了恢复密钥,也可以不暂停,靠密钥恢复,但没必要冒险。个人建议:宁可在 Windows 里多花两分钟暂停保护,也不要拿系统的可启动性赌运气。

2.2 做一份可靠的备份

分区扩容是有风险的操作,主要风险点是断电、误操作和分区表损坏。备份不是让你把整个磁盘 dd 一遍,那个太耗时,也不现实。真正有用的备份是两份:一份是重要数据,一份是分区表信息。

数据备份用 rsync 就行。把 /home 目录同步到移动硬盘:

sudo rsync -aAXv --info=progress2 /home/ /media/$USER/MyBackup/home/

-a是归档模式,-A保留 ACL,-X保留扩展属性,-v显示过程。如果你还有别的重要目录,比如 /srv 或者自定义的 /opt 下的服务目录,也一并加进去。备份的数据量取决于你 /home 里有多少东西,几十 GB 的话十分钟内能跑完。

分区表备份更简单,一条命令:

sudo sgdisk --backup=/media/$USER/MyBackup/partition-table.img /dev/nvme0n1

这里的/dev/nvme0n1是你实际磁盘设备名,可能有人是/dev/sda。备份完把文件放在 U 盘或者移动硬盘里,万一分区表被弄坏,可以用sgdisk --load-backup恢复,这比用 TestDisk 一点点找分区快得多。

2.3 制作 Ubuntu Live USB 并准备工具

Ubuntu Live USB 是这次操作的主战场。具体做法:下载一个 Ubuntu 22.04 或 24.04 的 LTS 桌面版镜像,用 Rufus 或者 balenaEtcher 写入一个至少 8GB 的 U 盘。Rufus 里要注意选择“写入为 UEFI 模式”而不是“写入为 BIOS 模式”,否则有些机器 U 盘启动后会进不了引导菜单。

制作好之后插在目标机器上,开机按 F12、F2 或 Esc 进入启动菜单,选择从 U 盘启动,选“Try Ubuntu”。进入桌面之后,GParted 已经预装好了,线路已经足够,但如果你的 Live 镜像版本较旧,可以在终端里顺手执行一下:

sudo apt update && sudo apt install -y gparted

如果你还要处理 LVM 或者 Btrfs,建议把 lvm2 和 btrfs-progs 也装上:

sudo apt install -y lvm2 btrfs-progs

这一步做不做都不影响前面的分区调整,但后面处理文件系统时会省去很多麻烦。

3. 核心操作流程:从缩小 Windows 到扩展根分区

3.1 先看懂你当前的分区布局

正式开始之前,先用lsblk -f和sudo parted -l把当前布局记录下来。我拿一个典型的双系统机器举例:

lsblk -f

输出大概长这样:

NAME FSTYPE SIZE MOUNTPOINT nvme0n1 ├─nvme0n1p1 vfat 512M /boot/efi ├─nvme0n1p2 ntfs 150G /media/.../Windows ├─nvme0n1p3 ext4 100G / └─nvme0n1p4 swap 8G [SWAP]

这个布局非常典型:ESP 在最前,Windows 系统盘在第二,Ubuntu 根分区在第三,swap 在最后。如果根分区后面不是 swap 而是未分配空间,那恭喜你,直接右键根分区就能扩展,简单得多。但大部分时候你面对的是一整块被分区填满的磁盘,所以才需要后面的操作。

有些机器 Windows 的 C 盘后面还跟着一个恢复分区,布局会变成这样:

nvme0n1p1 vfat 512M /boot/efi nvme0n1p2 ntfs 150G Windows nvme0n1p3 ntfs 800M 恢复分区 nvme0n1p4 ext4 100G / nvme0n1p5 swap 8G [SWAP]

恢复分区通常 500M 到 1G 左右,是 Windows 升级更新时自动生成的一段系统恢复环境。它夹在 C 盘和其他分区之间,会导致你缩完 C 盘后,未分配空间不在你想要的位置。遇到这种情况,最干净的方案是在 Windows 磁盘管理里直接删除这个恢复分区,因为恢复分区本质上只是 Windows 的应急工具箱,系统盘还在,普通用户几乎不会用到它;如果实在不放心,备份好关键数据后删除完全没问题。后面我的实操记录里就是用这个方案处理的。

3.2 第一步:缩小 Windows 系统盘

在 GParted 里右键 Windows 系统盘(也就是那个 NTFS 分区,通常容量最大),选择“Resize/Move”。这里有两种方式调整大小:直接修改“New Size”数值,或者把“Free space following”改成你想要释放的空间大小。如果你打算给 Ubuntu 额外腾出 100GB,就在“Free space following”里填 102400 MiB,实际数据量按 100GB 算就行。

你会发现这个窗口里还有“Align to MiB”的选项,保持默认的“MiB to cylinder”对齐方式,不要乱改。分区对齐出错会影响 SSD 性能,GParted 默认对齐已经很稳妥,不需要你手动干预。

点击“Resize/Move”之后,GParted 并没有立刻执行,而是把这个操作加入等待队列。你还要继续做后续的调整,等所有步骤都规划好后再统一点击“Apply All Operations”。这样做的意义是,你可以在真正动手之前把所有操作在视图里预览一遍,避免过程中途发现顺序不对。

这里有一个很关键的判断:如果 C 盘后面有恢复分区夹着,直接缩 C 盘,释放出来的空间仍然在恢复分区前面。后面要怎么办?要么删除恢复分区,要么先把恢复分区右移到空白区域的末尾。删除恢复分区需要你在 Windows 里用 diskpart 操作,或者直接在 GParted 里右键删除(分区表不会被锁的话可行)。右移恢复分区的操作跟移动普通分区一样,右键 Resize/Move,把分区拖到右边留出空白,但这会增加一个移动操作,风险随之升高。我的建议是删除恢复分区,一步到位。

3.3 第二步:处理挡路的 swap 交换分区

缩完 Windows 分区后,磁盘上会多出一块未分配空间,但如果你按照我前面说的典型布局,这块空间大概率出现在 Windows 分区和 swap 分区之间,或者出现在 Windows 分区后面。无论哪种情况,只要根分区后面还压着 swap,你就得先把 swap 挪走。

swap 的处理有两种思路,我推荐第二种。

方法A:移动 swap 分区到新的空白区域。右键 swap 分区,选择 Resize/Move,目标是把 swap 整体移动到磁盘末尾或者某个合适位置,让根分区后面直接出现连续未分配空间。这种方法的优点是保留 swap 分区的 UUID,系统重启后仍然能识别同一个 swap,不需要改 fstab。缺点是移动分区要复制整个 swap 的内容,虽然 swap 通常只有 4G 到 16G,速度不慢,但多一步操作就多一分风险。

方法B:直接删除 swap,在根分区扩展完后再重新创建。swap 分区的本质只是辅助存储,内容在重启后全部清空,删掉重建完全不影响系统。操作顺序是:右键 swap 分区选择 Delete,确认后空白空间就和原来的根分区相邻了;接下来先扩展根分区,最后在剩余空白空间右键新建一个大小一致的 swap 分区。这样做 swap 的 UUID 一定会变,所以需要额外修改 fstab,但整体流程反而清晰很多。后面 3.6 节会专门讲这一步,别漏掉。

3.4 第三步:扩展根分区

现在根分区后面应该是黑压压的一片未分配空间。右键根分区,选择“Resize/Move”,把“New Size”直接拉到允许的最大值,或者把“Free space following”改为 0,就是让它吃下所有空白空间。点击 Resize/Move,GParted 会把扩展分区和扩展文件系统的操作一并排在队列里。

如果你用的是 ext4 文件系统,GParted 会自动调用 resize2fs 来扩展文件系统,整个过程是自动的。如果 GParted 没自动扩展文件系统,或者你担心命令细节,在 Live 终端里也可以手动执行:

sudo e2fsck -f /dev/nvme0n1p4 sudo resize2fs /dev/nvme0n1p4

这里/dev/nvme0n1p4换成你的实际根分区设备名。e2fsck -f是强制检查文件系统,检查通过后再执行 resize2fs。很多老教程会提醒你先检查再扩容,我实际测试下来,只要分区没有异常,直接在 GParted 里操作就行,但遇到 resize2fs 报错时,先手动 e2fsck 再扩容往往能解决问题。

在点击左上角的“Apply All Operations”之前,建议再扫一眼操作列表,确认顺序是:先缩小 Windows → 再删除或移动 swap → 最后扩展根分区 → 新建 swap(如果需要)。顺序不对会造成不必要的分区移动,比如如果你先把根分区扩展到最大,那后面新建 swap 的空间就会被吞掉。一切确认无误,点击 Apply,中间弹出的所有警告都仔细读一下,特别是“这可能需要几分钟”之类的提示,耐住性子等。

3.5 特殊情况:LVM、Btrfs和加密卷怎么处理

如果你当初安装 Ubuntu 时选择了“使用 LVM”或者“加密整个系统”,那么根分区不是一个普通的 ext4 分区,而是一个逻辑卷。用 lsblk 会看到类似这样的结构:

nvme0n1p4 ext4 200G / # 实际看到的是 /dev/mapper/ubuntu--vg-ubuntu--lv

这种情况下 GParted 虽然能看到物理卷所在的分区,但直接对分区做 resize 不够的,必须先把逻辑卷激活,再扩展物理卷、逻辑卷和文件系统。在 Live 终端里操作:

sudo vgscan sudo vgchange -ay

然后确认物理卷所在的设备名,例如/dev/nvme0n1p5,执行:

sudo pvresize /dev/nvme0n1p5 sudo lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

pvresize扩展物理卷大小,lvextend把逻辑卷扩展到整个卷组的自由空间,resize2fs最后扩展文件系统。每一步都要确认成功再往下走,逻辑卷本身的灵活性要比裸分区好很多。加密卷的核心操作也是这个流程,只是你要先在 Live 环境用 LUKS 工具解锁,具体步骤会多几分钟,但思想完全一致。

如果你用的是 Btrfs 文件系统,事情反而更简单。Btrfs 在线扩容是原生支持的,只要底层分区扩展了,你进入系统后执行:

sudo btrfs filesystem resize max /

它会自动把文件系统撑到整个分区大小,不需要卸载操作。GParted 里扩展完分区,剩下的事情一条命令搞定。

3.6 更新 swap 的 UUID 和引导配置

如果你用了“删除 swap 再重建”的方法,新 swap 分区的 UUID 跟原来的不一样,Windows 无所谓,但 Ubuntu 开机时会去找旧的 UUID,找不到就报错或者跳过 swap。所以必须进入系统更新配置。

重启进入 Ubuntu 后,先用blkid查看新 swap 分区的 UUID:

sudo blkid /dev/nvme0n1p5

输出里的UUID="xxxx-xxxx"就是新的 UUID。编辑/etc/fstab:

sudo nano /etc/fstab

找到原来 swap 那一行,把 UUID 改成新的。除了 fstab,还要检查/etc/initramfs-tools/conf.d/resume这个文件,它存的是休眠恢复时使用的 swap 分区 UUID,如果你用到了休眠功能,必须同步更新,否则休眠后一睡不醒。改完之后执行:

sudo update-initramfs -u

把新的配置写进启动镜像。这一步做完,swap 问题才算彻底了结。

4. 实操记录:一次带恢复分区的典型扩容过程

为了让前面这些步骤更具体,我记录一次真实的扩容过程。某台双系统机器配置为:512GB SSD,Windows 11 和 Ubuntu 22.04 双系统,用户希望把根分区从 200GB 扩展到 250GB 左右,Windows 系统盘从 200GB 缩到 150GB。

分区布局:

设备文件系统原始大小说明
nvme0n1p1vfat512MEFI 系统分区
nvme0n1p2ntfs800MWindows 恢复分区
nvme0n1p3ntfs200GWindows 系统盘 C:
nvme0n1p4ext4200GUbuntu 根分区 /
nvme0n1p5swap8G交换分区

算下来总容量接近 450G,加上扇区对齐和隐藏分区,跟 512G 标称容量是吻合的。用户长期出差,不需要恢复分区,确认后决定删掉它。

实际操作顺序:

第一步,在 Windows 里关闭快速启动和休眠,执行powercfg /h off,关闭 BitLocker 保护。关机,开机按 F12 进启动菜单,选 U 盘启动进 Ubuntu Live。

第二步,启动 GParted,右键 nvme0n1p2(恢复分区),选择 Delete。这个操作之后,原来恢复分区的空间被标记为未分配。

第三步,右键 nvme0n1p3(Windows 系统盘),选择 Resize/Move,把 “Free space following” 设为 51200 MiB,也就是释放约 50GB。点击 Resize/Move。此时磁盘上出现了两块未分配空间:一块是原恢复分区(约 800MB),一块是缩 C 盘释放的约 50GB,它们连在一起了吗?并不连,中间还隔着 Windows 系统盘。这是因为恢复分区在 C 盘之前,删除它产生的空间在 C 盘左侧,缩 C 盘产生的空间在 C 盘右侧。想让两块未分配空间合并,必须把 C 盘整体向右移动,把左边的空间补到右边来。

这里有个细节:我一开始以为删除恢复分区之后,就可以直接把 C 盘缩出的空间和恢复分区空间合并到一块。但分区调整是按它们实际位置走的,C 盘左边的未分配空间永远不会跟 C 盘右边的未分配空间相邻。于是又右键 C 盘,选择 Resize/Move,在窗口里把分区整体向右拖动,让它紧贴磁盘右边界,这样左边 800MB 的空间就释放到 C 盘右边,与之前的 50GB 未分配空间合并了。总共多出约 50.8GB 连续未分配空间。

看到这里你应该明白,处理恢复分区不删也没太大问题,只要把 C 盘先缩再右移就能把空间“搬运”到右侧,但操作次数变多,风险自然上升。能删就删,省心。

第四步,右键 nvme0n1p5(swap),选择 Delete。删除后,根分区后面就直接面对一整块约 58GB 的未分配空间。

第五步,右键 nvme0n1p4(根分区),选择 Resize/Move,把 New Size 拉到最大。点击 Resize/Move,然后点击 Apply All Operations。GParted 开始执行,先是移动分区位置、再扩展 ext4 文件系统。整个过程大概花了七八分钟,主要时间都花在文件系统扩展上。

第六步,在磁盘尾部剩余空间右键,选择 New,文件系统选 linux-swap,大小保持 8GB,创建新 swap 分区。这一步系统自动分配了新的 UUID。点击 Apply 完成。

第七步,重启回 Ubuntu。执行sudo blkid找到新 swap 的 UUID,改 fstab 和 resume 配置,执行sudo update-initramfs -u,然后df -h确认根分区已经变成约 258GB。

整场操作真正花在“点鼠标”上的时间不到二十分钟,大头全在等待文件系统读写和备份。过程中没有出任何问题,但前半部分那些“分区为什么移到右边”的分析是真正值钱的避坑经验,拿出来分享给你。

5. 如果不想动根分区:另一种更稳妥的扩容思路

5.1 把释放出来的空间做成独立 /home 分区

不是每个人都必须走“扩展根分区”这条路。如果你的根分区确实还有空间,只是 /home 数据太大撑满了,那么把释放出来的空间做成一个独立的 /home 分区是更稳妥的选择。这个方案完全不需要动 swap,也不需要中途删除或重建交换分区,风险小很多。

具体做法:缩完 Windows 拿到未分配空间后,在 GParted 里右键未分配空间,选择新建,格式化为 ext4,大小可以给到所有可用空间,并留一个挂载点标记为/home。但如果你是在 Live 环境里创建分区,GParted 不会自动挂载它,所以更常见的流程是先创建分区、格式化,然后回到系统里手动迁移数据。

在 Ubuntu 系统里执行:

sudo mkdir /mnt/newhome sudo mount /dev/nvme0n1p6 /mnt/newhome sudo rsync -aAXv --info=progress2 /home/ /mnt/newhome/

rsync 同步完成之后,再用blkid查新分区的 UUID,在/etc/fstab里加一行:

UUID=xxxx-xxxx /home ext4 defaults 0 2

然后重启。重启后系统会自动把新分区挂载到 /home,旧 /home 里的数据还在原来分区里,可以留作备份。等确认新 /home 一切正常,再回 Live 里格式化旧的 home 分区,把空间腾出来。

这个方案的另外一个好处是:以后如果再想调整 / 或者 /home 的大小,两个分区之间井水不犯河水,操作弹性更大。

5.2 什么时候选哪种方案

用一张表总结:

对比维度扩展根分区独立 /home 分区
操作难度较复杂,需要处理 swap 和分区移动简单,只缩 Windows + 新建分区
风险等级中高风险,分区移动多低风险,不碰现有分区结构
根分区空间根分区直接变大根分区空间不变
/home 数据不需要迁移需要 rsync 迁移一次
适用场景根分区经常满、装软件和编译环境多根分区够用,只是 home 数据爆炸

如果你装 Ubuntu 主要是为了做开发、跑编译、装一堆开发环境,那根分区空间不足是硬伤,早晚要扩展到根分区,方案一更对症。如果你只是拿 Ubuntu 当日常上网和写文档的机器,软件没装多少,空间都被下载文件和照片占满,那方案二又快又稳。

5.3 虚拟机和其他扩展场景的延伸

双系统扩容的方法论稍微延伸一下,还能解决很多类似问题。虚拟机里跑 Ubuntu,磁盘空间不够的时候,先在宿主机里把虚拟磁盘镜像加大,然后在客户机里执行:

sudo growpart /dev/sda 1 sudo resize2fs /dev/sda1

growpart 负责扩展分区,resize2fs 负责扩展文件系统,跟咱们前面在 Live 环境里做的事情本质上一样。如果你用的是 LVM,流程就是 pvresize 加 lvextend 加 resize2fs 三步曲。了解底层的“先扩展分区,再扩展文件系统”这个顺序,比死记命令有用得多。

6. 常见问题与排查方案实录

6.1 操作前的排查速查表

问题现象根本原因解决办法
Live USB 无法启动Secure Boot 阻止了未签名引导进 BIOS 暂时关闭 Secure Boot
GParted 无法缩放 NTFS 分区Windows 快速启动/休眠锁定分区关闭快速启动,执行 powercfg /h off
扩容后 Windows 要求恢复密钥BitLocker 未暂停保护提前暂停保护,或准备恢复密钥
扩容后卡在 initramfs 界面swap UUID 变化导致 fstab 指向错误Live chroot 修改 fstab,update-initramfs
缩 C 盘时提示空间不足NTFS 文件用了碎片或坏块先在 Windows 里清理文件,再重试
resize2fs 报错文件系统有异常先执行 e2fsck -f 再 resize2fs
GParted 提示分区正忙目标分区仍被挂载右键 unmount,或在 Live 环境操作

6.2 几个容易忽略的细节

分区操作过程中千万不要断电,这是最低要求。我见过有人在笔记本电量告警的情况下点 Apply,结果分区表还没写完就黑屏了,最后只能靠分区表备份抢救回来。操作之前一定要接电源。

移动 C 盘分区会让 Windows 认为磁盘发生变化,启动时可能出现较长的“正在准备”画面,这属于正常现象,耐心等它进去就行。如果卡太久,再用 Windows 安装盘修复引导。

GParted 的预览功能值得多说一句。所有操作排进队列后,底部状态栏会显示每个操作的细节,包括源分区、目标分区、大小变化。你可以在 Apply 之前逐条检查:有没有误删分区?根分区的扩展是否跟在 swap 删除之后?未分配空间位置是否正确?多花一分钟检查,能少掉好多麻烦。

在 Live 环境下,update-grub和update-initramfs不能直接对已卸载的系统执行,需要先挂载根分区和 EFI 分区,再 chroot 进去。很多人做完分区扩展直接重启,发现 Ubuntu 无法引导,就是因为引导配置没有更新。完整操作如下:

sudo mount /dev/nvme0n1p4 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi for d in /dev /dev/pts /proc /sys /run; do sudo mount --bind $d /mnt$d; done sudo chroot /mnt update-grub update-initramfs -u exit

如果你只是扩展了根分区,没有动 swap,Update 引导这步通常可以省略,但既然都已经 chroot 进去了,顺手跑一遍没坏处。

另外,分区扩容后第一次启动 Ubuntu,文件系统自适应和缓存重建会占用一些时间,开机稍微慢一点是正常的。如果机器开机后显示了The disk drive for / is not ready yet or not present之类的信息,大概率是 fstab 配置出了问题,而不是分区扩展失败。

最后提醒一个很基本但很多人中招的点:做任何分区修改之前,先确认 U 盘已经卸载,别让 Live 系统的自动挂载功能干扰你。用lsblk看一眼当前挂载点,把移动硬盘和 U 盘都卸载干净再开始。

我个人在实际操作中的体会是,双系统扩容真正难的从来不是命令,而是对整个分区排布的理解。你把每个分区的前后关系、每个操作的影响范围都理清楚了,剩下的就是照着 GParted 的界面点击而已。还有一个我自己一直在用的习惯:每次扩容前都会用 sgdisk 把分区表备份到 U 盘,顺手将 /home 里带中文文件名的目录单独复制一份,这两个动作在几次意外中断里帮过大忙。如果你打算折腾,先把这两件事做了再动手,稳。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 12:01:56

OpenClaw离线助理免费联网搜索实战:破解模型一本正经胡说

老有人问我:你那台跑在本地、不带任何云依赖的助理,怎么一碰到“今天天气怎么样”“那个软件现在什么版本”就答非所问?更有一次,它认认真真给我编了一个不存在的发布会日期,还配了一段压根搜不到的项目名。离线模型知…

作者头像 李华
网站建设 2026/10/17 12:00:51

artcraft项目实战:分层渲染与参数化生成打造手工感创作工具

1. 从“artcraft”这个名字说起:一个被低估的创作工具定位 第一次看到“artcraft”这个词,我脑子里蹦出来的不是某个具体软件,而是一种工作方式——把“art”(艺术感、审美判断)和“craft”(手艺、工程化落…

作者头像 李华
网站建设 2026/10/17 12:00:43

OFD电子签章实战:文档解析、国密签名与验签全链路Demo

简介:一份面向开发者的OFD电子签章实现Demo及配套使用说明,聚焦开放固定版式文档下的签章原理与编码落地。资源围绕数字证书申请、文档哈希计算、签章生成与插入、接收方验证等完整环节展开,配有可对照阅读的使用说明,适合需要集成…

作者头像 李华
网站建设 2026/10/17 12:00:06

Office2016自定义安装器v3.0实战:组件选择、部署配置与避坑指南

简介:Office2016自定义安装器v3.0免费版是一款面向办公软件用户的安装辅助工具,主要解决Office2016默认安装无法自选磁盘目录、体积庞大易占满C盘导致系统变慢的痛点。它适合希望将Office装到非系统盘、或需要清理旧版Office残留组件的普通用户与运维人员…

作者头像 李华
网站建设 2026/10/17 11:59:54

化工ERP落地实战:从模拟报价到按质计价的U8+方案拆解

简介:这份PDF文档聚焦化工行业数字化转型,面向化工企业信息化负责人、ERP实施顾问及流程制造领域的管理人员,系统梳理了行业在销售接单、生产计划、大宗物料、设备维护与成本核算等环节的关键痛点,并给出以ERP为核心、融合智能制造…

作者头像 李华
网站建设 2026/10/17 11:58:22

AI PR门禁:大模型驱动的代码审查与GitHub Actions自动化实践

1. 先拆清楚:AI PR 门禁到底在门禁什么很多同学第一次听到“AI PR 门禁”这个词,第一反应是:是不是机器人来审核代码?其实不是那么玄乎。它做的事情,本质上是把原来靠人肉 review 才能完成的那一部分“低水平重复劳动”…

作者头像 李华