gentoo + systemd 安装过程记录
写在前面
我为什么要用gentoo
不是因为什么苦难哲学,安装Gentoo并不困难,只是需要时间而已
从最开始接触到Linux,就选择了Gentoo,一开始是因为编译时满屏的代码滚动,有一种莫名其妙的快感~
人都是有一种习惯的
最开始认为Gentoo从源码编译安装,会提高性能,这个好像是个误区,实际上并不能,就算有一点提升,也感觉不出来
最好的办法是配一台性能强劲的电脑 😃
用Gentoo最主要的原因是有限的选择权
比如我不喜欢systemd,我可以用openrc
通过USE控制可以一定程度上进行定制(这是一项长期的工作,不是一次安装就可以解决的)
可能让我用Gentoo的根本原因就是这个吧,能满足一点点控制欲~
新买了一块1T的SSD硬盘,很久没安装过gentoo了,在这里记录一下安装过程
一.前期准备工作
用的是SystemRescue + Rufus制作LiveUSB
备用ISOArcolinuxB cutefish ,其实是我想用用cutefish桌面 😃
注意选择GPT格式,然后刻录,ISO模式或者DD模式都可以,建议用ISO模式
SystemRescue以前是基于gentoo的发行版,不过现在改为基于Arch,不过不影响安装gentoo,理论上来说gentoo可以在任何现有Linux系统上安装
- 为什么使用SystemRescue
1、有图形界面,可以在安装的时候从gentoo handbook 或者其他教程中复制命令
2、基于Arch Linux ,可以使用genfstab生成fstab文件
3、arch-chroot 命令可以自动挂载 proc sys dev 这些,不用手动输入了 😃
4、可以方便的回滚终端,唯一的遗憾就是不能输入中文
制作好liveusb后用U盘重启
输入:startx 进入图形界面,用浏览器打开gentoo handbook
打开终端,开始安装
有线连接一般情况下网络已经自动配置好了
无线的话参考gentoo handbook吧…我没有无线网卡
用U盘重新启动
ls /sys/firmware/efi/efivars #测试是否是UEFI模式启动,如果没有这个目录,那么本篇内容就不适合你的机器
ping -c 3 www.baidu.com #测试网络
二.硬盘分区
分区方案仅供参考,个人情况不一样,都有自己的考虑,以自己实际需求为准
lsblk #查看硬盘编号,确定在哪块硬盘安装Gentoo,我这里是sdd
sgdisk --zap-all /dev/sdd # 清空硬盘,如果硬盘上有其他系统或重要文件,谨慎操作
cfdisk -z /dev/sdd
# 选择gpt
# 因为我另一块硬盘上有WIN10的EFI分区(/dev/sdb1),所以不用再分一个EFI分区,直接整块硬盘分一个区
# cfdisk 操作比较简单
# new ---> 新建分区
# type ---> linux-root(x86-64)
# write ---> 写入硬盘
# quit ---> 退出
分区 | 大小 | 文件系统 | 挂载点 | 补充说明 |
---|---|---|---|---|
/dev/sdb1 | 300M | fat32 | /boot/efi | 和win10共用esp分区 |
/dev/sdd1 | all | btrfs | none | 建立子卷挂载 |
三.格式化
mkfs.btrfs -f -n 4k -L BTRFS /dev/sdd1
# 如果用ext4或者xfs
# 使用相应的命令 mkfs.ext4 或者 mkfs.xfs
- 参数说明
参数 | 全名 | 说明 |
---|---|---|
-f | –force | 强制格式化为btrfs |
-n | –nodesize | 指定blocksize 大小,默认为16KiB(16384) ,必须为扇区大小的整数倍和2的幂,且不能超过64KiB(65536) |
-L | –label | 指定文件系统的标签,LABEL名随便取.不能超过256字节…不过没人会弄那么长的标签吧… |
-O | –features | 在格式化时可以启用的功能, 命令 mkfs.btrfs -O list-all 可以列出所有功能列表,默认开启:skinny-metadata,extref no-holes |
四.挂载分区
创建子卷
# 挂载刚才格式化好的btrfs分区
mount /dev/sdd1 /mnt
# 创建子卷
# su : subvolume
# cr : create
btrfs su cr /mnt/@
btrfs su cr /mnt/@root
btrfs su cr /mnt/@boot
btrfs su cr /mnt/@home
btrfs su cr /mnt/@distfiles
btrfs su cr /mnt/@swap
查看一下刚创建的子卷
# su : subvolume
# li : list
btrfs su li /mnt
ID 256 gen 6 top level 5 path @
ID 257 gen 7 top level 5 path @root
ID 258 gen 8 top level 5 path @boot
ID 259 gen 9 top level 5 path @home
ID 260 gen 10 top level 5 path @distfiles
ID 261 gen 11 top level 5 path @swap
设置默认子卷
#将@子卷设置为默认子卷,挂载时不必使用subvolid=256参数
#但是在需要挂载父卷进行操作的时候需要加上subvolid=5挂载参数
#如果设置了默认子卷,要操作父卷的话, mount /dev/sdd1 /mnt -o subvolid=5
btrfs su set-default 256 /mnt
# 检查一下
btrfs su get-default /mnt
ID 256 gen 6 top level 5 path @
#卸载父卷
umount /mnt
挂载子卷
# 挂载root
# 由于不是使用的gentoo官方livecd,所以需要建立一个目录,习惯了用/mnt/gentoo
mkdir -v /mnt/gentoo
# 将默认子卷挂载为根目录
# 重要提示:如果没设置默认子卷,需要加上subvolid=256进行挂载
mount -t btrfs -o defaults,autodefrag,compress=zstd,discard=async,space_cache=v2 /dev/sdd1 /mnt/gentoo
# autodefrag : 自动文件碎片整理
# compress=zstd : 使用zstd压缩,需要内核中开启相应选项
# 默认为gzip(compress=on),可选(compress=lzo),不支持lz4
# zstd默认压缩级别是3,可以用compress=zstd:X 更改(0<= X <=15)
# discard=async : 丢弃释放的文件块,对SSD有用. async: 异步模式(内核版本>5.6)
# space_cache=v2 : 控制可用空间缓存的选项。
# 挂载子卷
mkdir -pv /mnt/gentoo/{
boot,root,home,var/cache/distfiles,.swap}
mount -t btrfs -o subvolid=257 /dev/sdd1 /mnt/gentoo/root
mount -t btrfs -o subvolid=258 /dev/sdd1 /mnt/gentoo/boot
mount -t btrfs -o subvolid=259 /dev/sdd1 /mnt/gentoo/home
mount -t btrfs -o subvolid=260 /dev/sdd1 /mnt/gentoo/var/cache/distfiles
mount -t btrfs -o subvolid=261 /dev/sdd1 /mnt/gentoo/.swap
# 因为btrfs不支持子卷单独挂载选项,所以不用单独指定挂载选项
# 挂载EFI分区
# 我这里挂载的是WIN