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

相关推荐
1104.北光c°2 小时前
滑动窗口HotKey探测机制:让你的缓存TTL更智能
java·开发语言·笔记·程序人生·算法·滑动窗口·hotkey
haixingtianxinghai3 小时前
Redis的定期删除和惰性删除
数据库·redis·缓存
资深web全栈开发3 小时前
PostgreSQL Schema 最佳实践:架构师的命名与组织艺术
数据库·postgresql
sdm0704274 小时前
yum和开发工具vim/gcc
linux·服务器·centos
zhaoyufei1334 小时前
RK3568-11.0 设置WiFi p2p静态IP
服务器·tcp/ip·p2p
麦聪聊数据4 小时前
利用实时数据管道与 SQL2API 重构企业自动化审计架构
数据库·sql·低代码
麦聪聊数据4 小时前
重构开放生态:利用 QuickAPI 跨越遗留系统与敏捷交付的工程实践
数据库·sql·低代码·restful
云原生指北5 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
百结2148 小时前
Mysql数据库操作
数据库·mysql·oracle