gentoo安装过程记录
最后更新日期:2024年3月4日
正在重写中~基本完成了
gentoo是非常个性的系统,允许最大化的定制,
特别是内核配置文件,每个人的机器配置不同,内核中的选项要根据自己的机器选择
所以目前内容仅供本人安装使用,不作为教程,
春节期间安装了N遍
完全按照这里的步骤安装,目前一切正常,正在Hyprland桌面编译这个内容
可能会有遗漏的部分,大概会是单个软件包的USE设置,记不太清楚了 修改记录:
日期 | 内容 | 备注 |
---|---|---|
2024.2.7 | 修改安装时硬盘号 | |
2024.2.7 | 修改stage3,使用no-multilib openrc | USE也做了相应修改,如果你要安装steam玩游戏,那么不要用no-multilib |
2024.2.7 | 解决启动时swap无法挂载的问题 | |
2024.2.7 | 安装介质改为gentoo gui livecd | |
2024.2.15 | 修改部分安装顺序 | |
2024.2.19 | 修改安装顺序,合并no-multilib和desktop做为本地profile | 合并后会编译大量的包,也可以不合并,后期自己慢慢调整USE flags |
2024.2.25 | 添加Hyprland的安装 | 不完整 |
2024.2.25 | 添加了一张截图 | |
2024.3.4 | 添加部分个人使用的软件 | 另外加了两张截图,基本算是设置完成了 |
安装之前准备工作
先选择好stage3
需要提前考虑好的问题:
systemd or openrc #用gentoo就是为是不想用systemd :) ....
no-multilib or multilib
文件系统的选择:ext4,xfs,btrfs 等等
然后就是安装环境,是纯字符界面还是用图形界面安装
个人推荐用带图形界面的livecd,可以一边安装一边看wiki,可以复制粘贴命令,不用手动输入命令
本次安装:
init : openrc # 既然用gentoo了,就是冲着openrc...
profile : default
filesystem: btrfs
在这里记录一下安装过程, 也许哪天能用上
在此之前安装了一次Funtoo…
git同步实在是太慢了,不适合我使用
这次用的是SystemRescue9.0 + Rufus 3.17制作LiveUSB
SystemRescue以前是基于gentoo的发行版,不过现在改为基于Arch,不过不影响安装gentoo,理论上来说gentoo可以在任何现有Linux系统上安装
为什么使用SystemRescue
1、有图形界面,可以在安装的时候从gentoo handbook 或者其他教程中复制命令
2、基于Arch Linux ,可以使用genfstab生成fstab文件
3、arch-chroot 命令可以自动挂载 proc sys dev 这些,不用手动输入了 😃
4、可以方便的回滚终端,唯一的遗憾就是不能输入中文
在这里(或者任意gentoo镜像)下载gentoo livegui cd,这个livegui的缺点是无法显示中文…至少我没有找到方法
制作liveusb,个人使用ventoy
制作好liveusb后用U盘重启
默认进入KDE图形界面,设置live系统的power选项,关闭休眠
点击桌面上的gentoo handbook
打开终端,开始安装
有线连接一般情况下网络已经自动配置好了
无线的话参考gentoo handbook吧…我没有无线网卡
测试网络
ip route
ping -c 3 1.1.1.1
curl --location gentoo.org --output /dev/null
硬盘分区
# 查找硬盘
ls -la /dev/disk/by-id
# 设置硬盘变量,方便后续操作
disk=/dev/disk/by-id/ata-CT1000MX500SSD1_2138E5D33BCE
# 清空硬盘,如果硬盘上有其他系统或重要文件,谨慎操作
sgdisk --zap-all $disk
# 分区
# 说明:只分一个区,没有分efi分区,因为我用win11 EFI分区
sgdisk -n1:0:0 $disk
分区 | 大小 | 文件系统 | 挂载点 | 补充说明 |
---|---|---|---|---|
/dev/sda1 | 1024M | fat32 | /efi | 和win11/archlinux共用esp分区 |
/dev/sdc1 | all | btrfs | none | 建立子卷挂载 |
格式化
mkfs.btrfs -f -L GENTOO -O block-group-tree $disk-part1
# 如果用ext4或者xfs
# 使用相应的命令 mkfs.ext4 或者 mkfs.xfs
格式化之后用lsblk -f 查检一下,如果不显示LABEL和UUID,就用cfdisk $disk,然后直接退出,再用lsblk -f检查一下,应该就可以显示了
参数说明
参数 | 全名 | 说明 |
---|---|---|
-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,free-space-tree |
- 挂载分区并创建子卷
# 创建一个临时文件夹,用来挂载btrfs分区,创建子卷
#注意不要挂载到/mnt,因为gentoo livegui启动后这里有其他的文件挂载到/mnt/下的文件夹
mkdir /mnt/tmp
mount $disk-part1 /mnt/tmp
#创建子卷
#根据自己需要创建子卷,不必照抄
btrfs su cr /mnt/tmp/@
btrfs su cr /mnt/tmp/@boot
btrfs su cr /mnt/tmp/@home
btrfs su cr /mnt/tmp/@var
btrfs su cr /mnt/tmp/@opt
btrfs su cr /mnt/tmp/@snapshot
btrfs su cr /mnt/tmp/@swap
查看一下刚创建的子卷
btrfs subvol list /mnt/tmp
ID 256 gen 6 top level 5 path @
ID 257 gen 6 top level 5 path @boot
ID 258 gen 6 top level 5 path @home
ID 259 gen 6 top level 5 path @var
ID 260 gen 6 top level 5 path @opt
ID 261 gen 6 top level 5 path @snapshot
ID 262 gen 6 top level 5 path @swap
创建一个32G大小的swapfile,这个根据自己需要创建
btrfs filesystem mkswapfile -s 32g /mnt/tmp/@swap/swapfile
可选:设置默认子卷
# 设置默认子卷
btrfs subvol set-default 256 /mnt/tmp
#将vol_root子卷设置为默认子卷,挂载时不必使用subvol=vol_root参数
#但是在需要挂载父卷进行操作的时候需要加上subvolid=5挂载参数
#本文中如果要操作父卷的话, mount $disk-part1 /mnt/tmp -o subvolid=5
检查是否设置成功
btrfs subvol get-default /mnt/tmp
ID 256 gen 6 top level 5 path @
#卸载父卷
umount /mnt/tmp
挂载子卷
# 挂载root
# 使用的gentoo官方livecd启动后没有/mnt/gentoo目录,所以需要建立一个目录,这个目录名字随意,不过习惯了用/mnt/gentoo
mkdir -v /mnt/gentoo
mount -t btrfs -o noatime,compress-force=zstd:1 $disk-part1 /mnt/gentoo
#设置默认子卷后,不需要指明子卷,直接挂载
# 使用zstd压缩,需要内核中开启相应选项,grub2.04版本支持zstd压缩
# 默认为gzip(compress=on),可选(compress=lzo),不支持lz4
# zstd默认压缩级别是3,可以用compress=zstd:X 更改(0<= X <=15)
关于压缩使用zstd还是lzo,可以看看这里
# 挂载子卷
# subvolid 对应上面 btrfs subvol list /mnt/tmp 列出的子卷ID
mount -t btrfs -o subvol=@boot $disk-part1 /mnt/gentoo/boot --mkdir
mount -t btrfs -o subvol=@home $disk-part1 /mnt/gentoo/home --mkdir
mount -t btrfs -o subvol=@var $disk-part1 /mnt/gentoo/var --mkdir
mount -t btrfs -o subvol