本机情况

当前主机包含三种操作系统,Kylin+Windows10+Ubuntu 24.04。其中每个分区磁盘都享有共同路径前缀:/dev/nvme0n1p*。其中*从1至7分别表示7个分区磁盘:
- p1的目录是boot/efi,是作为启动盘存在。
- p2内部存储着efi、grub目录、config-5.4.1-110-generic、initrd.img、initrd.img.old、initrd.img-5.4.18-110-generic、System.map-5.4.18-110-generic、vmlinuz、vmlinuz、vmlinuz.old、vmlinuz-5.4.18-110-generic。
- p3内部有bin、boot、cdrom、data、dev、etc、home、lib、lib32、lib64、libx32、media、mnt、opt、proc、root、run、sbin、sbuild-nonexistent、srv、sys、tmp、usr、var,其中bin目录下存在com.kylin.PhoneControl.py文件。
- p4内部仅存在3个文件夹home、root、usershare,其中home文件夹下有kylin文件夹,/home/kylin/路径下有以下子文件夹,公共的、模板、视频、图片、文档、下载、音乐、桌面。
- p5内部为windows C盘的内容。
- p6新家卷内部为windows D盘内容。
综上所示,p3/p4为银河麒麟(Kylin)系统的根分区与/home目录挂载磁盘。p5/p6为windows C/D盘。而当前ubuntu的根分区为p7。
同时,本贴记录时间已在挂载成功之后,故指令执行结果并未截图,如若存在步骤缺失,欢迎在评论区截图讨论。
解决方案
总体思路
保留 Kylin 与 Windows 的前提下,从可用磁盘空间约197 GB Windows 的 D 盘p6,划出一块空间,建立新的 ext4 分区专供 Ubuntu 数据(挂载为/home或 /mnt/data)。
设计目的
- 不变动正在使用的 Ubuntu 根分区(p7);
- 不破坏 Kylin(p3
/p4); - 用 D 盘的巨大空闲腾出 80–200 GB 给 Ubuntu,解除长期根分区压力。
具体步骤
Step1:做个只读确认
不改动系统,只确认现状:
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,FSUSE%,UUID,LABEL
cat /etc/fstab
Step2:收缩Windows 里的 D 盘
-
以管理员权限打开“磁盘管理”(diskmgmt.msc)
-
右键 “新加卷 (D:)” → “压缩卷…”
-
输入你想给 Ubuntu 的大小(建议 100–150 GB),执行。
-
完成后会得到一段 未分配空间(紧邻p6的右侧)。
Step3:在 Ubuntu 里创建新分区
- 安装并打开 GParted(或“磁盘”工具):
sudo apt-get install -y gparted
sudo gparted
- 选中那块 未分配空间 → 右键“新建”
-
分区类型:主分区(GPT 下都是分区条目即可)
-
文件系统:ext4
-
对齐到 MiB(默认即可)
-
选中应用
-
-
记下新分区设备名(通常会是 /dev/nvme0n1p8)和它的 UUID:
sudo blkid /dev/nvme0n1p8
注意:UUID非常重要!请务必纸笔记录需要挂载/home目录磁盘的UUID,如若输入错误,后续在GRUP界面进行补救时,可以通过记录的UUID进行修复。
Step4:将整个/home目录迁到新分区
- 挂载并复制
sudo mkdir -p /mnt/p8
sudo mount /dev/nvme0n1p8 /mnt/p8
sudo rsync -aHAX --info=progress2 /home/ /mnt/p8/
- 写入fstab
- 注意:此处输入的UUID务必和所需要挂载/home磁盘的UUID一一对应
- 注意:<UUID>与/home之间存在两个空格,/home与ext4之间也存在两个空格,ext4与defaults之间也存在两个空格,remount-ro与0以及0与2之间也存在两个空格
echo 'UUID=<UUID> /home ext4 defaults,noatime,errors=remount-ro 0 2' | \
sudo tee -a /etc/fstab
- 切换挂载点并生效
sudo mv /home /home_old
sudo mkdir /home
sudo mount -a
df -h /home # 应看到 /home 挂在 p8
- 验证无误后清理旧数据
sudo rm -rf /home_old
df -h /
本贴遇见的BUG:
整个流程中,最容易出现BUG的步骤为UUID的的输入。注意!任何一个字符的错误都有可能导致在使用tee指令写入/etc/fstab后,在执行mount指令时,出现目录绑定磁盘的报错。
BUG的解决方案:
临时编辑 GRUB,进 root shell
-
Step1:在 GRUB 主菜单,选中正常的 Ubuntu 启动项,按 e 进入编辑界面。
-
Step2:找到以 linux 开头很长的那一行,把其中的ro quiet splash 替换或在末尾追加:
rw init=/bin/bash
- Step3:按 Ctrl+X 或 F10 启动。几秒后会直接进入
#的 root shell。 - Step4:以可写方式挂载根分区并清理 fstab 中所有 /home 行,只保留正确 UUID(用真实 UUID 替换 <UUID>):
mount -o remount,rw /
cp -a /etc/fstab /etc/fstab.bak.$(date +%F-%H%M)
# 删除 fstab 里所有 /home 挂载行(无论对错,先删干净)
sed -i '\|[[:space:]]/home[[:space:]]|d' /etc/fstab
# 写入唯一正确的一行,带“防卡死”参数
echo 'UUID=<UUID> /home ext4 defaults,noatime,nofail,x-systemd.device-timeout=10 0 2' >> /etc/fstab
# 生效并自检
systemctl daemon-reload
mount -a
mount | grep " on /home "
- 注意:<UUID>与/home之间存在两个空格,/home与ext4之间也存在两个空格,ext4与defaults之间也存在两个空格,devide-timeout=10与0以及0与2之间也存在两个空格
- 注意:grep与左双引号存在一个空格,左双引号与on存在一个空格,on与/home存在一个空格,/home与右双引号之间也存在一个空格。
看到只剩一条 /home,且设备是你新分区(如 /dev/nvme0n1p8)就对了。
- Step6:重启:
exec /sbin/reboot -f
后续检查操作
- Step1:只剩一条 /home 挂载:
grep -nE '[[:space:]]/home[[:space:]]' /etc/fstab
mount | grep ' on /home '
df -h / /home
- Step2:文件系统一致性:
umount /home
fsck -f /dev/nvme0n1p8
mount /home
1000

被折叠的 条评论
为什么被折叠?



