小怪兽的Gentoo安装手册

本笔记主要是为了方便重装系统,或在Gentoo Handbook网站无法访问时作为备用。

安装介质使用常见linux发行版的live cd均可。为了方便联无线网(命令行会有些麻烦)及在安装时使用浏览器查看handbook等资料,我会推荐使用带桌面环境的lived cd。本篇笔记以ubuntu 24.04.2为例。

从USB启动之后选择try ubuntu,进入到桌面,动动鼠标连接上网络,在设置里面关闭自动锁屏及休眠。

磁盘分区

假设我要安装在/dev/sda,efi分区为300MB,剩下的全部为根分区/,根分区的格式为xfs。

1
2
3
4
5
# parted /dev/sda
(parted) mkpart ESP fat32 1MB 300MB
(parted) set 1 boot on
(parted) mkpart primary xfs 300MB 100%
(parted) quit

格式化分区

1
2
# mkfs.fat -F32 /dev/sda1
# mkfs.xfs /dev/sda2

挂载分区

1
2
# mkdir /mnt/gentoo && mount /dev/sda2 /mnt/gentoo
# mkdir -p /mnt/gentoo/efi && mount /dev/sda1 /mnt/gentoo/efi

下载并安装gentoo安装文件

安装文件需要自行去镜像源里面找最新的,不要直接抄下面的,下面的命令是我写一篇笔记时候最新的链接。

1
2
3
# cd /mnt/gentoo
# wget https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64-desktop-openrc/stage3-amd64-desktop-openrc-20231015T161657Z.tar.xz
# tar xpvf stage3-amd64-*.tar.xz --xattrs-include='*.*' --numeric-owner

设置repo

1
2
# mkdir --parents /mnt/gentoo/etc/portage/repos.conf
# cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

复制DNS信息

1
# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

挂载额外的文件系统

1
2
3
4
# mount --types proc /proc /mnt/gentoo/proc
# mount --rbind /sys /mnt/gentoo/sys && mount --make-rslave /mnt/gentoo/sys
# mount --rbind /dev /mnt/gentoo/dev && mount --make-rslave /mnt/gentoo/dev
# mount --rbind /run /mnt/gentoo/run && mount --make-slave /mnt/gentoo/run

有的发行版/dev/shm/是一个软链接,chroot之后不可用,所以还需要挂载一下。

1
2
3
# test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
# mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm
# chmod 1777 /dev/shm /run/shm

进入chroot环境

1
2
# chroot /mnt/gentoo
# source /etc/profile && export PS1="(chroot) ${PS1}"

镜像源的本土化配置

从本地镜像源里面下载编绎所需的源码

1
# nano -w /etc/portage/repos.conf/gentoo

sync-uri = rsync://rsync.gentoo.org/gentoo-portage前面加个#,并在它下面添加sync-uri = rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage

更新portage树

1
# emerge-webrsync

选择profile

更改profile之后更新可能需要很多时间,所以现在也可以先不选,等基本系统安装完毕之后再进行这个操作。

1
2
# eselect profile list
# eselect profile set x

编辑make.conf

初步编辑/etc/portage/make.conf文档。
可以参照本文最后。

CPU_FLAGS_*参数设置

1
2
# emerge -1 app-portage/cpuid2cpuflags
# echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags

更新系统

如果机器内存较大,在ssd里面编译会减少ssd的寿命,可以将内存挂载在/tmp,然后将编绎目录选为/tmp。

1
2
3
4
# nano /etc/fstab
/etc/fstab

tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0
1
2
# mount -t tmpfs tmpfs /tmp && findmnt --target /tmp
# emerge -auvDN @world

设置时区

1
# echo "Asia/Shanghai" > /etc/timezone && emerge --config sys-libs/timezone-data

更新locale

1
2
3
4
5
6
# nano -w /etc/locale.gen
/etc/locale.gen

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
1
2
# locale-gen && eselect locale set en_US.utf8
# env-update && source /etc/profile && export PS1="(chroot) $PS1"

安装内核和一些工具

1
2
3
# emerge --ask sys-kernel/gentoo-kernel-bin
# sys-apps/pciutils sys-kernel/genkernel sys-kernel/linux-firmware
# emerge --ask app-admin/syslog-ng app-admin/logrotate sys-process/cronie net-misc/dhcpcd

编辑/etc/fstab

blkid命令可查询各分区的uuid,下面是我的fstab文件:

1
2
3
4
5
6
7
# nano -w /etc/fstab

/etc/fstab

UUID="CC7C-4643" /efi vfat defaults,noatime 0 2
UUID="0ba72bcf-5ecf-4f6e-a82b-2a7966a3ead4" / xfs noatime 0 1
tmpfs /tmp tmpfs rw,nosuid,noatime,nodev,size=4G,mode=1777 0 0

设置主机名

1
2
# nano -w /etc/conf.d/hostname
hostname='GentooLinux'

编辑hosts文件

1
2
3
4
5
# nano -w /etc/hosts
/etc/hosts

127.0.0.1 localhost gentoo
::1 localhost gentoo

设置root用户密码

1
# passwd

一些自启动项

下面的命令可能已经过期,列出的服务可能不需要自启动,也可能有遗漏,需要自己去翻阅handbook找到最新的配置。

1
2
# rc-update add syslog-ng default
# rc-update add cronie default

安装grub2

1
2
3
4
# echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
# emerge --ask --update --newuse --verbose sys-boot/grub:2
# grub-install --target=x86_64-efi --efi-directory=/boot/efi
# grub-mkconfig -o /boot/grub/grub.cfg

退出安装环境,重启

1
2
3
# exit
# cd ~ && umount -l /mnt/gentoo/dev{/shm,/pts,} && umount -R /mnt/gentoo
# reboot

make.conf的备份

下面是我电脑的make.conf文件,仅供参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
LC_MESSAGES=C.utf8

MAKEOPTS=-j16
#NINJAOPTS=-j6

ACCEPT_KEYWORDS="~amd64"

PORTAGE_TMPDIR="/tmp"
PORTDIR="/var/db/repos/gentoo"
DISTDIR="/var/cache/distfiles"
PKGDIR="/var/cache/binpkgs"
PORTAGE_LOGDIR=""

GENTOO_MIRRORS="https://distfiles.gentoo.org"

#FETCHCOMMAND="proxychains wget -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" \"\${URI}\""
#RESUMECOMMAND="proxychains wget -c -t 3 -T 60 --passive-ftp -O \"\${DISTDIR}/\${FILE}\" \"\${URI}\""

USE="bluetooth dbus dist-kernel elogind networkmanager policykit pulseaudio udev udisks vaapi vulkan wayland X -systemd"

GRUB_PLATFORMS="efi-64"
VIDEO_CARDS="intel"
INPUT_DEVICES="libinput"

参考文档:Gentoo Handbook