青益云记

心若向阳,无畏伤悲

标题

「 [转]Arch-使用btrfs安装arch 」

青益   |  2020年08月08日 内容来自 REALLYSNOW(初羽) 最近因为Arch(又)滚炸了和想尝试btrfs,所以就有了这篇文章
内容
内容来自 REALLYSNOW(初羽)

最近因为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

挂载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 你的主机名

initramfs

配置

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

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

参考

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|已授权转载

评论