:维护更新中...

使用btrfs安装Arch

August 7, 2020

最近因为Arch(又)滚炸了和想尝试btrfs,所以就有了这篇文章

介绍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

QQ截图20200807122818.png

挂载subvolume和EFI分区

# subvolume
umount /mnt
mount -o noatime,nodiratime,[email protected] /dev/nvme0n1p3 /mnt
mkdir /mnt/home
mount -o noatime,nodiratime,[email protected] /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必须安装不然后果如下图

QQ截图20200807124253.png

配置基本项目

这里可以参考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 你的主机名

initramfs

配置

nano /etc/mkinitcpio.conf
添加 btrfs 到 MODULES=(...)行
找到 HOOKS=(...)行,更换fsck为btrfs
最终你看到的/etc/mkinitcpio.conf文件格式为

...
MODULES=(btrfs)
...
HOOKS=(base udev autodetect modconf block filesystems keyboard btrfs)

如下图
QQ截图20200807124136.png
QQ截图20200807124213.png

生成

mkinitcpio -p linux

QQ截图20200807124419.png

如果出错就是snapper没有安装QQ截图20200807124253.png

最后工作

也可以参考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

snapshot

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
QQ图片20200807142448.png

参考

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)

打赏

标签:Linux

最后编辑于:2020/09/20 00:19

2 条咸鱼在这里躺着

  1. sihuan
    2020-09-09 17:45

    用 -p 参数就可以创建多层目录啦。
    比如 mkdir -p /mnt/boot/efi

    1. ReallySnow
      2020-09-16 13:30
      @sihuan

      学到了