arch安装(lvm+btrfs+zfs)(理论)
简介
最大限度的使用各个技术的优点
-
arch
- 比较简单的,可以自定义的系统
-
lvm
- 动态管理卷和磁盘分区
-
btrfs
- linux内核自带的,功能强大的文件系统,同时兼容性好
-
zfs
- 最强大的文件系统,自带了三个级别的数据去重
参考教程
lvm教程+在lvm上面安装arch的教程+在zfs上面安装arch的教程:
准备工作
硬盘分区计划
gpt+legacy+efi
-
分区一
- 1MB大小未格式化空间,用于安装GRUB
-
分区二(Fat32)
- efi分区
-
分区三(物理卷 (PV))
-
变成lvm卷组(VG)
-
(下列都是逻辑卷(LV))
-
arch(BTRFS)
GRUB不支持zfs的全部特性,所以需要一个单独的分区存放boot,而BTRFS还可以满足快照的要求- @boot
- @root
- @snapshots
使用snapper进行快照管理,自动快照
-
home(ZFS)
- home
打开压缩与去重
- home
-
(swap)
-
snapshots(lvm的快照)
-
-
连接到网络
确保网络接口已启用
1 | ip link |
输出如下
1 | ... |
当 UP
在 <BROADCAST,MULTICAST,UP,LOWER_UP>
中时,表示已启动,跟后面的 state DOWN
没有关系
提示:可以用ip link set *interface* up|down
来启用或关闭网络接口
配置网络连接
有线网络
1 | systemctl start dhcpcd.service |
用 ping
检查网络连接
1 | ping -c4 8.8.8.8 |
更新系统时间
1 | timedatectl set-ntp true |
确保时间正确
1 | timedatectl status |
给iso换源
禁用reflector,并不好用
1 | pacman -R reflector |
将以下内容编辑到/etc/pacman.d/mirrorlist
的顶端
1 | Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch |
给iso添加zfs
安装代理用的软件
安装软件
1 | pacman -S proxychains |
配置代理线路(推荐使用v2raya的端口分享),修改此文件尾部
1 | vim /etc/proxychains.conf |
脚本添加zfs
一个脚本,用于在正在运行的 archiso 系统上轻松安装和加载 ZFS 模块。它应该适用于任何archiso版本。
1 | curl -s https://eoli3n.github.io/archzfs/init | bash |
手动添加zfs
添加archzfs仓库
将以下内容添加到/etc/pacman.conf
的末尾
1 | [archzfs] |
仓库和软件包都已签名,因此您必须将密钥添加到 pacman 的可信密钥列表中
1 | curl -L https://archzfs.com/archzfs.gpg | pacman-key -a - |
更新pacman数据库
1 | pacman -Sy |
给iso安装zfs模块与zfs工具
1 | pacman -S archzfs-dkms zfs-utils |
启用zfs模块
1 | modprobe zfs |
硬盘分区与文件系统创建
创建legacy需要的启动分区
使用BIOS引导GPT的分区情况(BIOS/GPT)下,必须使用BIOS 启动分区。GRUB将core.img
嵌入到这个分区。
注意:
-
此额外分区只由 GRUB 在 BIOS/GPT 分区方式中使用。对于 BIOS/MBR 分区方式,GRUB会把
core.img
放到MBR后间隙(post-MBR gap)中去,而在GPT中并不能保证在第一个分区之前有可以这样使用的空间。 -
UEFI系统也不需要这额外分区,因为它不需要嵌入启动扇区。UEFI系统需要有EFI 系统分区。
安装 GRUB 前,在一个没有文件系统的磁盘上,创建一个1兆字节(使用fdisk或gdisk和参数+1M
)的分区,将分区类型设置为 GUID 21686148-6449-6E6F-744E-656564454649
。
-
对于fdisk,选择分区类型
BIOS boot
。 -
对于gdisk,选择分区类型代码
ef02
。 -
对于parted, 在新创建的分区上设置/激活
bios_grub
标记。
这个分区可以处于磁盘的前 2TB 空间中的任意位置,但需要在安装 GRUB 之前创建好。分区建立好后,按下面的命令安装启动管理器。
第一个分区之前的空间也可以用作 BIOS 启动分区,但是这会违反 GPT 对齐规范。因为这个分区不会经常访问,所以性能的影响很小,只不过有些分区工具会发出警告。可以在fdisk或gdisk中创建一个从 34 扇区开始,一直到 2047扇区的分区,然后按照上述方式设置类型。为了让其它分区对齐,可以最后再创建此分区。
在LVM上安装Arch Linux的简介
你应该在安装指南 中的分区 和创建文件系统 这一步中创建LVM卷。不要直接格式化一个分区作为你的根文件系统(/),而应将其创建在一个逻辑卷(LV)中。
快速导览:
-
创建物理卷(PV)所在的分区。
-
创建物理卷(PV)。如果你只有一个硬盘,那么你最好只创建一个分区一个物理卷;如果你有多个硬盘,你可以创建多个分区,在每个分区上分别创建一个物理卷。
-
创建卷组(VG),并把所有物理卷加进卷组。
-
在卷组(VG)上创建逻辑卷(LV)。
-
继续安装指南 中的格式化分区步骤。
-
当你做到安装指南中的“Initramfs”步骤时,把
lvm2
加入到mkinitcpio.conf
文件中(请参考下文)。
警告: 若你使用不支持LVM的引导程序,/boot
不能置于LVM中。你必须创建一个独立的/boot
分区并直接格式化它。已知支持LVM的引导程序只有GRUB。
创建lvm部分,自己写的教程(gpt+legacy)(无swap)(EFI未启用)
安装lvm所需的软件
1 | pacman -S lvm2 |
创建lvm
创建物理卷(PV)
可通过以下命令列出可被用作物理卷的设备:
1 | lvmdiskscan |
在列出的设备上创建物理卷:
1 | pvcreate /dev/sda3 |
创建卷组(VG)
创建完成物理卷(PV)之后,下一步就是在该物理卷创建卷组(VG)了。 首先必须先在其中一个物理卷(PV)创建一个卷组:
1 | vgcreate Arch /dev/sda3 |
创建逻辑卷(LV)
创建完卷组(VG)之后,就可以开始创建逻辑卷(LV)了。输入下面命令以指定新逻辑卷的名字、大小及其所在的卷组:
1 | lvcreate -L <卷大小> <卷组名> -n <卷名> |
该逻辑卷创建完后,你就可以通过/dev/mapper/Volgroup00-lvolhome
或/dev/VolGroup00/lvolhome
来访问它。与卷组命名类似,你可以按你的需要将逻辑卷命名。
如果你想让要创建的逻辑卷拥有卷组(VG)的所有未使用空间,请使用以下命令:
1 | lvcreate -L +100%FREE <volume_group> -n <logical_volume> |
注意:为了使上述命令能正常运行,你可能需要加载device-mapper
内核模块(请使用命令 modprobe dm-mod
)。
建立文件系统与挂载逻辑卷
现在你的逻辑卷应该已经在/dev/mapper/
和/dev/<i>YourVolumeGroupName</i>
中了。如果你无法在以上位置找到它,请使用以下命令来加载模块、并扫描与激活卷组:
1 | modprobe dm-mod |
现在你可以在逻辑卷上创建文件系统并像普通分区一样挂载它了(如果你正在安装Arch linux,需要更详细的信息,请参考挂载分区 ):
警告: 挂载点请选择你所新建的逻辑卷(例如:/dev/mapper/Volgroup00-lvolhome
),不要使用逻辑卷所在的实际分区设备(即不要使用:/dev/sda2
)。
btrfs部分
建立btrfs文件系统并挂载
1 | mkfs.btrfs /dev/mapper/Arch-arch |
建立子卷
1 | cd /mnt |
重新挂载子卷
1 | cd / |
zfs部分
创建zfs池
1 | mkdir /mnt/home |
创建zfs数据集
1 | zfs create -o dedup=on -o mountpoint=/home homepool/home |
挂载zfs数据集
1 | zfs mount homepool/home /mnt/home |
安装系统
安装基本系统
1 | pacstrap /mnt base base-devel linux-zen linux-firmware dkms zfs-dkms nano neovim networkmanager btrfs-progs |
配置系统
生成fstab
1 | genfstab -U /mnt > /mnt/etc/fstab |
记得nano /mnt/etc/fstab
,检查lvm,zfs部分是否正确
给新的系统添加archzfs仓库
将以下内容添加到/etc/pacman.conf
的末尾
1 | [archzfs] |
仓库和软件包都已签名,因此您必须将密钥添加到 pacman 的可信密钥列表中
1 | curl -L https://archzfs.com/archzfs.gpg | pacman-key -a - |
chroot
1 | arch-chroot /mnt |
时区
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
本地化
移除 /etc/locale.gen
对应行前面的注释符号(#)即可,建议选择带 UTF-8 的项
1 | /etc/locale.gen |
1 | locale-gen |
警告: 不推荐在此设置任何中文 locale,会导致 TTY 乱码。
网络
1 | echo archlinux > /etc/hostname |
1 | /etc/hosts |
1 | systemctl enable NetworkManager |
Initramfs
lvm与zfs的配置
1 | /etc/mkinitcpio.conf |
为了使 btrfs check
能够在挂载系统上使用
1 | /etc/mkinitcpio.conf |
1 | mkinitcpio -p linux-zen |
zfs自动导入挂载服务
1 | systemctl enable zfs-import-cache zfs-import.target zfs-mount zfs-zed zfs.target |
限制zfs的ARC(这个位置我限制的是2GB,你可以根据自己的内存适当的改大或改小)
1 | echo "options zfs zfs_arc_max=2147483648" >> /etc/modprobe.d/zfs.conf |
设置root密码
1 | passwd |
安装引导程序
如果你使用的是 intel
或 AMD
的cpu,安装 microcode
1 | pacman -S intel-ucode |
或者
1 | pacman -S amd-ucode |
如果你安装到移动u盘上,两个都要安装
安装 grub
1 | pacman -S grub efibootmgr os-prober ntfs-3g |
1 | /etc/default/grub |
1 | grub-install --target=i386-pc /dev/sda |
os-prober
是为windows和linux双系统准备的
ntfs-3g
是为访问ntfs文件系统准备的
为lvm配置内核参数
编辑 /etc/default/grub
并将root=/dev/mapper/Arch-arch
添加至GRUB_CMDLINE_LINUX_DEFAULT
行:
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" |
然后重新生成 grub.cfg
文件:
1 | grub-mkconfig -o /boot/grub/grub.cfg |
导出池,卸载文件系统
退出 chroot
环境,输入 exit
或者按 Ctrl+d
zfs
1 | zfs umount -a |
其他的
1 | umount -R /mnt |
关机,移除安装介质,然后重启
- 标题: arch安装(lvm+btrfs+zfs)(理论)
- 作者: E= γ mc²
- 创建于 : 2023-11-04 22:38:14
- 更新于 : 2024-11-10 06:47:08
- 链接: https://redefine.ohevan.com/2023/11/04/arch安装-lvm-btrfs-zfs-理论/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。