最近到了新工位,有了一台新电脑以及两台显示器。我深知系统备份的重要性,但因为沉没成本,一直没有来得及完全实装
btrfs
的备份恢复功能。因为新系统啥都没有,所以我可以肆无忌惮地折腾。这里记录一下我是如何使用
timeshift 的。
本文不涉及原理,以实用为主。
创建 btrfs 分区
对于一个新硬盘(笔者为 /dev/nvme0n1
):
- 你需要先创建一个 EFI 分区(512M),挂载到
/boot/efi
- 如果 RAM 小于 16G,建议创建一个 swap 分区(8G)。(但笔者的新电脑有
32G 内存,所以没有创建 swap 分区)
- 剩下的空间全部分给 btrfs
对应的命令为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| sudo fdisk /dev/nvme0n1
g
n
<enter>
<enter>
+512M
t 1
y
n
<enter>
<enter>
<enter>
y
w
|
格式化
现在有两个分区,一个 EFI 分区 /dev/nvme0n1p1
,一个 btrfs
分区 /dev/nvme0n1p2
。我们需要格式化这两个分区:
1 2
| sudo mkfs.fat -F32 /dev/nvme0n1p1 sudo mkfs.btrfs -L arch /dev/nvme0n1p2
|
btrfs 创建子卷(重要)
为了使 timeshift 可以正常工作,我们要达成以下效果:
1 2 3 4
| > sudo btrfs subvolume list / [sudo] password for junyu33: ID 256 gen 3073 top level 5 path @ ID 257 gen 3073 top level 5 path @home
|
具体的命令为:
1 2 3 4 5 6 7 8 9
| sudo mount /dev/nvme0n1p2 /mnt sudo btrfs subvolume create /mnt/@ sudo btrfs subvolume create /mnt/@home sudo umount /mnt sudo mount -o subvol=@ /dev/nvme0n1p2 /mnt sudo mkdir /mnt/home sudo mount -o subvol=@home /dev/nvme0n1p2 /mnt/home sudo mkdir -p /mnt/boot/efi sudo mount /dev/nvme0n1p1 /mnt/boot/efi
|
安装系统
我不确定 xubuntu 是否会格式化 btrfs
分区(刚刚测试过,应该是,无法取消),如果是的话,我前面的步骤就白做了。所以我选择了
archlinux。安装过程就不赘述了,可以参考 archlinux
安装指南。
当你做到这一步时:
genfstab -U /mnt >> /mnt/etc/fstab
看一看 fstab
文件的内容,并结合 blkid
的输出,确保 EFI 分区和 btrfs
的子卷(subvol)都被正确挂载,我的类似于:
1 2 3 4 5 6 7 8 9 10 11 12
| # Static information about the filesystems. # See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass> # /dev/nvme0n1p2 LABEL=arch UUID=d6806b41-d69c-4f72-ba9f-a00a197729ab / btrfs rw,relatime,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@ 0 0
# /dev/nvme0n1p2 LABEL=arch UUID=d6806b41-d69c-4f72-ba9f-a00a197729ab /home btrfs rw,relatime,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/@home 0 0
# /dev/nvme0n1p1 UUID=EB74-8512 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
|
此时你的 /mnt
目录应该类似于正常 Linux 的根目录,而不是
@
和 @home
。
然后添加引导:
1 2 3 4
| arch-chroot /mnt pacman -S grub efibootmgr grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB grub-mkconfig -o /boot/grub/grub.cfg
|
然后退出 chroot,重启进入新系统。
安装 timeshift 并配置
1 2 3 4 5 6 7 8 9
| sudo pacman -S cronie sudo systemctl enable cronie
sudo pacman -S timeshift grub-btrfs yay -S timeshift-systemd-timer
sudo systemctl edit --full grub-btrfsd
|
启动 timeshift
配置一下,搞定。