内容来自 REALLYSNOW(初羽)
最近因为Arch(又)滚炸了和想尝试btrfs,所以就有了这篇文章
一种支持写入时复制(COW)的文件系统,运行在Linux操作系统,采用GPL授权。Oracle于2007年对外宣布这项计划,并发布源代码,在2014年8月发布稳定版。目标是取代Linux目前的ext3文件系统,改善ext3的限制,特别是单个文件的大小,总文件系统大小或文件检查和加入ext3未支持的功能,像是可写快照(writable snapshots)、快照的快照(snapshots of snapshots)、内建磁盘阵列(RAID),以及子卷(subvolumes)。Btrfs也宣称专注在“容错、修复及易于管理”。----维基百科
因为物理机已经安装过了,所以我们用虚拟机展示
引导肯定是UEFI了,Bios不想演示...
我们使用parted进行分区
/dev/nvme0n1是我的磁盘,所以我们用parted操作此磁盘
parted /dev/nvme0n1
建立GPT 分区,这一步会擦除磁盘上的数据(注意备份)
mklabel gpt
建立ESP分区
mkpart primary 2048s 300M // 2048s 单位s表示是扇区
建立其他分区
mkpart primary 300M 4096M // 作为swap 分区
mkpart primary 4096M -1 // 主目录 -1 表示剩下所有的磁盘容量
设定ESP分区标志为boot
set 1 boot on
然后我们退出parted,进行格式化
用fdisk -l
查看分区,进行格式化
mkfs.fat -F32 /dev/nvme0n1p1
mkfs.btrfs -L swap /dev/nvme0n1p2
mkfs.btrfs -L System /dev/nvme0n1p3
PS:如果格式化出错请添加-f
挂载
mount /dev/nvme0n1p3 /mnt
创建subvolume
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
@是根目录
我就创建了根目录和home,如果需要还可以添加其他的
查看目录
ls -l /mnt
挂载subvolume和EFI分区
# subvolume
umount /mnt
mount -o noatime,nodiratime,subvol=@ /dev/nvme0n1p3 /mnt
mkdir /mnt/home
mount -o noatime,nodiratime,subvol=@home /dev/nvme0n1p3 /mnt/home
# EFI
mkdir /mnt/boot
mkdir /mnt/boot/efi
mount /dev/nvme0n1p1 /mnt/boot/efi
PS:EFI分区目录一个一个创建,因为我直接mkdir /mnt/boot/efi
报错
因为目前Arch自动排序,所以不用再手动修改源,所以我们直接进行安装
pacstrap -i /mnt base linux linux-firmware base-devel vim nano snapper
snapper必须安装不然后果如下图
这里可以参考ArchWiki安装方法
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen
echo "LANG=en_US.UTF-8" > /etc/locale.conf
pacman -S networkmanager
systemctl enable NetworkManager
hostnamectl set-hostname 你的主机名
nano /etc/mkinitcpio.conf
添加 btrfs 到 MODULES=(...)行
找到 HOOKS=(...)行,更换fsck为btrfs
最终你看到的/etc/mkinitcpio.conf文件格式为
...
MODULES=(btrfs)
...
HOOKS=(base udev autodetect modconf block filesystems keyboard btrfs)
如下图
mkinitcpio -p linux
如果出错就是snapper没装
也可以参考ArchWiki
#用户
passwd
useradd -m -u UID -G wheel -s /bin/bash 登录用户
passwd 登录用户
#Grub
pacman -S grub os-prober efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Arch --recheck
grub-mkconfig -o /boot/grub/grub.cfg
#重启进入下一步配置
exit
umount /mnt/boot/efi
umount /mnt/home
umount /mnt
reboot
请看ArchWiki
btrfs有snapshot功能,snapper可以自动帮你自动做snapshot,因为我们在安装系统已经安装了软件包,所以无需安装
snapper -c root create-config /
snapper -c home create-config /home
# 根据自己的subvolume实际情况创建snapshot策略
snapper list-configs
systemctl enable --now snapper-timeline.timer
systemctl enable --now snapper-cleanup.timer
最后,我不推荐使用rEfind、Clover、OpenCore作为引导器,因为我也不知道它们能否兼容btrfs
https://snowfrs.com/2019/08/10/intall-archlinux-with-btrfs.html
https://my.oschina.net/itlangz/blog/1936094
https://zh.wikipedia.org/wiki/Btrfs
https://wiki.archlinux.org/index.php/Installation_guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
https://wiki.archlinux.org/index.php/EFI_system_partition_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)/
原文地址https://reallysnow.top/index.php/archives/91/
作者 reallysnow|已授权转载