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

相关推荐
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm
这个DBA有点耶1 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
vipxieliang1 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot