timeshift之Fedora43设置,已在VM虚拟机验证,待真机验证。

  • 找到根分区设备名称

运行以下命令查看你的根分区是哪个设备(例如 /dev/nvme0n1p2 或 /dev/mapper/...):

bash 复制代码
mount | grep " / "

真机显示

bash 复制代码
mount | grep " / "
/dev/nvme1n1p1 on / type btrfs (rw,relatime,seclabel,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/)

记下输出中的第一列(设备名),假设它是 <DEVICE>。

  • 创建临时挂载点并挂载顶层 (ID 5)
    将 <DEVICE> 替换为你刚才记下的设备名(例如 /dev/nvme0n1p2):

创建临时目录

bash 复制代码
sudo mkdir -p /mnt/btrfs_top

挂载顶层 (subvolid=5)

请将下面的 替换为实际的设备路径!

bash 复制代码
sudo mount -o subvolid=5 <DEVICE> /mnt/btrfs_top

真机显示

bash 复制代码
sudo mount -o subvolid=5 /dev/nvme1n1p1 /mnt/btrfs_top
user@fedora:/mnt$ ll btrfs_top/
总计 16
dr-xr-xr-x. 1 root root    0 2025年 7月30日 afs
lrwxrwxrwx. 1 root root    7 2025年 7月30日 bin -> usr/bin
dr-xr-xr-x. 1 root root  630  3月17日 09:10 boot
drwx------. 1 root root   12 10月23日 12:09 builddir
drwxr-xr-x. 1 root root    0  3月17日 07:29 dev
drwxr-xr-x. 1 root root 4862  3月17日 09:10 etc
drwxr-xr-x. 1 root root   24  3月16日 23:42 home
lrwxrwxrwx. 1 root root    7 2025年 7月30日 lib -> usr/lib
lrwxrwxrwx. 1 root root    9 2025年 7月30日 lib64 -> usr/lib64
drwxr-xr-x. 1 root root    0 2025年 7月30日 media
drwxr-xr-x. 1 root root   18  3月17日 18:35 mnt
drwxr-xr-x. 1 root root    0 2025年 7月30日 opt
drwxr-xr-x. 1 root root    0  3月17日 07:29 proc
dr-xr-x---. 1 root root  154  3月17日 08:55 root
drwxr-xr-x. 1 root root    0  3月17日 07:29 run
lrwxrwxrwx. 1 root root    8 2025年 7月30日 sbin -> usr/sbin
drwxr-xr-x. 1 root root    0 2025年 7月30日 srv
drwxr-xr-x. 1 root root    0  3月17日 07:29 sys
drwxrwxrwt. 1 root root    0  3月17日 07:29 tmp
drwxr-xr-x. 1 root root  168  3月16日 23:46 usr
drwxr-xr-x. 1 root root  200  3月17日 08:53 var

(如果你不确定设备名,可以运行 lsblk 查看,通常是最大的那个分区)

  • 验证并重命名
    挂载成功后,你在 /mnt/btrfs_top 下应该能看到 root, home 等目录。现在执行重命名:

列出内容确认 (你应该看到 root 和 home)

bash 复制代码
ls /mnt/btrfs_top

将 root 重命名为 @

bash 复制代码
sudo mv /mnt/btrfs_top/root /mnt/btrfs_top/@

再次确认 (现在应该看到 @ 和 home,没有 root 了)

bash 复制代码
ls /mnt/btrfs_top

真机显示

bash 复制代码
sudo mv btrfs_top/root/ btrfs_top/@
user@fedora:/mnt$ ll btrfs_top/
总计 16
dr-xr-x---. 1 root root  154  3月17日 08:55 @
dr-xr-xr-x. 1 root root    0 2025年 7月30日 afs
lrwxrwxrwx. 1 root root    7 2025年 7月30日 bin -> usr/bin
dr-xr-xr-x. 1 root root  630  3月17日 09:10 boot
drwx------. 1 root root   12 10月23日 12:09 builddir
drwxr-xr-x. 1 root root    0  3月17日 07:29 dev
drwxr-xr-x. 1 root root 4862  3月17日 09:10 etc
drwxr-xr-x. 1 root root   24  3月16日 23:42 home
lrwxrwxrwx. 1 root root    7 2025年 7月30日 lib -> usr/lib
lrwxrwxrwx. 1 root root    9 2025年 7月30日 lib64 -> usr/lib64
drwxr-xr-x. 1 root root    0 2025年 7月30日 media
drwxr-xr-x. 1 root root   18  3月17日 18:35 mnt
drwxr-xr-x. 1 root root    0 2025年 7月30日 opt
drwxr-xr-x. 1 root root    0  3月17日 07:29 proc
drwxr-xr-x. 1 root root    0  3月17日 07:29 run
lrwxrwxrwx. 1 root root    8 2025年 7月30日 sbin -> usr/sbin
drwxr-xr-x. 1 root root    0 2025年 7月30日 srv
drwxr-xr-x. 1 root root    0  3月17日 07:29 sys
drwxrwxrwt. 1 root root    0  3月17日 07:29 tmp
drwxr-xr-x. 1 root root  168  3月16日 23:46 usr
drwxr-xr-x. 1 root root  200  3月17日 08:53 var
  • 清理临时挂载
bash 复制代码
sudo umount /mnt/btrfs_top
sudo rmdir /mnt/btrfs_top

🔧 关键后续:修改 /etc/fstab

重命名完成后,系统还不知道要启动 @ 子卷。你必须修改配置文件,否则重启后会找不到根目录!

打开 fstab 文件:

bash 复制代码
sudo nano /etc/fstab

真机显示

bash 复制代码
sudo vi /etc/fstab
# /etc/fstab
# Created by anaconda on Mon Mar 16 23:32:49 2026
#
# Accessible filesystems, by reference, are maintained under '/dev/disk/'.
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info.
#
# After editing this file, run 'systemctl daemon-reload' to update systemd
# units generated from this file.
#
UUID=8e8acc8c-d8c7-4902-b167-b55cfe90e066 / btrfs subvolid=5,subvol=@ 0 0
UUID=1C35-7F60 /boot/efi vfat umask=0077,shortname=winnt 0 2

找到挂载点为 / 的那一行。

它现在看起来应该是这样的:

bash 复制代码
UUID=xxxx-xxxx...  /  btrfs  subvol=root,compress=zstd:1  0 0

(注意 subvol=root 部分)

修改它:

将 subvol=root 改为 subvol=@。

修改后:

bash 复制代码
UUID=xxxx-xxxx...  /  btrfs  subvol=@,compress=zstd:1  0 0

保存退出:

Ctrl + O -> Enter (保存)

Ctrl + X (退出)

更新 GRUB (保险起见):

bash 复制代码
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

真机显示

bash 复制代码
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found Windows Boot Manager on /dev/nvme0n1p1@/efi/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings ...
done

🚀 最后一步:重启验证

bash 复制代码
sudo reboot

重启登录后,运行以下命令确认成功:

bash 复制代码
mount | grep " / "

输出中应该包含 subvol=@

相关推荐
吴名氏.13 分钟前
Java转AI Agent教程(第五周)Prompt工程
java·人工智能·prompt·ai agent
8Qi814 分钟前
DDD架构演进
java·分布式·mvc·ddd
云和恩墨20 分钟前
数据库监控简史:从会回答到能交付——AI-DBA如何成为真正的数字同事
数据库·人工智能·dba
paopaokaka_luck23 分钟前
灾害应急物资管理系统(AI应急助手、Echarts可视化数据看板、捐赠入库联动、 物资全流程管理、库存变动追溯、灾情资讯与互动反馈、物资发放公示)
java·前端·javascript·spring boot·mysql·tomcat·echarts
SL_staff31 分钟前
HR系统对接钉钉考勤总失败?根源在于缺乏业务语义级逻辑中枢
java·开源·全栈
程序边界31 分钟前
一台数据集成软件的拆解笔记(下):一致性、容错、跑批与迁移,KFS 真正难的地方在这
java·前端·笔记
揣一尾游鱼yu1 小时前
内部类和Object笔记
java·开发语言·object·内部类
这个DBA有点耶1 小时前
为什么删掉索引后,查询瞬间变快了?探讨MySQL的随机I/O与顺序I/O博弈
数据库·mysql·代码规范
你怎么知道我是队长1 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
kingx32 小时前
BugKu 渗透测试 4 实战:文件上传打点,5 Flag 全通
数据库·渗透测试·web·内网渗透