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=@

相关推荐
七夜zippoe4 分钟前
Java技术未来展望:GraalVM、Quarkus、Helidon等新趋势探讨
java·开发语言·python·quarkus·graaivm·helidon
枫叶落雨2226 分钟前
ClassPathXmlApplicationContext
java·开发语言
草莓熊Lotso6 分钟前
【Linux 线程进阶】进程 vs 线程资源划分 + 线程控制全详解
java·linux·运维·服务器·数据库·c++·mysql
ZKNOW甄知科技12 分钟前
数智同行:甄知科技2026年Q1季度回顾
运维·服务器·人工智能·科技·程序人生·安全·自动化
-SGlow-12 分钟前
Linux相关概念和易错知识点(52)(基于System V的信号量和消息队列)
linux·运维·服务器
gelald13 分钟前
Spring Boot - 自动配置原理
java·spring boot·后端
江畔何人初13 分钟前
TCP的三次握手与四次挥手
linux·服务器·网络·网络协议·tcp/ip
hssfscv14 分钟前
软件设计师下午题六——Java的各种设计模式
java·算法·设计模式
supericeice17 分钟前
创邻科技 Galaxybase Graph Intelligence 图智能平台:一站式可视化图数据存储、图计算与图挖掘平台
数据库·科技
洒家肉山大魔王18 分钟前
PKI/CA X.509证书的基础应用与解读
服务器·https·密码学·数字证书