Welcome back.

l10n

现在选择时区,在目录/usr/share/zoneinfo/中查阅,选择之后创建符号链接ln -sf ../usr/share/zoneinfo/Asia/Shanghai /etc/localtime。这里选择上海。

然后生成区域设置,完整的列表在/usr/share/i18n/SUPPORTED,编辑/etc/locale.gen,添加项或者删除前边注释符号,我直接使用en_US.UTF-8 UTF-8,运行locale-gen,生成指定的地区。

选择区域设置,eselect locale list显示可用项,eselect locale set <number>设置项。

之后重新加载环境,env-update && source /etc/profile

配置Linux内核

安装固件,emerge --ask sys-kernel/linux-firmware

安装微码,AMD CPU 的微码更新在 sys-kernel/linux-firmware 软件包内分发。Intel CPU 的微码可以在 sys-firmware/intel-microcode 包中找到,并且需要单独安装。

选择启动引导,GRUB吧,为了安装时自动运行grub-mkconfig,启用grub flag。echo "sys-kernel/installkernel grub" > /etc/portage/package.use/installkernel

初始化好像要initramfs,在installkernel添加一个flag,echo “dracut” >> /etc/portage/package.use/installkernel

安装软件emerge --ask sys-kernel/installkernel

安全启动好像很麻烦,不会跳过。

内核使用全自动Distribution内核安装,要想签名从源码构建的内核,要在make.conf中添加一个USE flag:modules-sign,以及以下几行:

MODULES_SIGN_KEY="/path/to/kernel_key.pem"
MODULES_SIGN_CERT="/path/to/kernel_key.pem" # 仅当MODULES_SIGN_KEY不包含证书时才需要。
MODULES_SIGN_HASH="sha512" # 默认为sha512。

使用openSSL生成密钥openssl req -new -noenc -utf8 -sha256 -x509 -outform PEM -out kernel_key.pem -keyout kernel_key.pem,这里生成的密钥包含了密钥和附带的证书。

修改权限chmod 400 kernel_key.pem

这里再在make.conf中添加几行好像就可以安全启动了,USE flag要再加一个secureboot

SECUREBOOT_SIGN_KEY="/path/to/kernel_key.pem"
SECUREBOOT_SIGN_CERT="/path/to/kernel_key.pem"

然后从源码构建内核emerge --ask sys-kernel/gentoo-kernel

这玩意编译了得三个小时吧,纯逆天。

然后可以清理一下emerge --depclean

之后要安装一个分布式内核?在make.conf里添加一个USE flagdist-kernel

然后可以重新构建模块emerge --ask @module-rebuild

然后安装内核源emerge --ask sys-kernel/gentoo-sources

创建符号链接。

eselect kernel list
eselect kernel set <number>

这里输出有两个,选择linux-x.x.x-gentoo。然后可以查看符号链接ls -l /usr/src/linux

关于文件系统

编辑/etc/fstab

Gentoo安装手册让手动编辑,但是Arch Linux教程中可以使用genfstab来自动生成。

要先退出chroot环境,然后genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab

生成之后检查一下,Gentoo建议在根分区的选项加一个noatime,说是启动更快。

好东西就要来了

网络配置

主机名设置echo name > /etc/hostname

安装dhcpcd,emerge --ask net-misc/dhcpcd

如果启动服务使用systemctl enable dhcpcd

如果报错不用担心,一会会解决。

主机文件,暂时就一个主机不需要配置。

passwd设置root密码。

为系统的各种组件的首次启动设置为新的systemd环境做好准备。

systemd-machine-id-setup
systemd-firstboot --prompt
systemctl preset-all --preset-mode=enable-only

安装工具

这里可以看自己需求选择,参考官网

建议安装网络工具,开机没法联网就很麻烦。

配置启动引导程序

使用GRUB,emerge --ask --verbose sys-boot/grub,注意查看编译选项中有对应平台标志,比如efi-64 pc,如果没有可以添加到make.conf

对于UEFI系统grub-install --efi-directory=/efi

这里又有安全启动,好复杂不弄了。

配置GRUB,grub-mkconfig -o /boot/grub/grub.cfg,确保能够检测到Linux image。

这里会出现问题,双系统只能检测到Linux,需要emerge --ask sys-boot/os-prober然后重新运行上一条命令。

并且还会出现依赖错误,编译os-prober需要grub的编译选项中有mount,可以在/etc/portage/package.use/中添加一个,然后emerge --ask --verbose --oneshot --newuse sys-boot/grub重新编译grub。

最后退出chroot环境,umount -R /mnt/gentooreboot

很好啊,开机黑屏。根本连TUI都出不来。

气死了总共编译了得12个小时吧,一开机还是一片漆黑,我都有点心疼我电脑了,Gentoo快去死吧,下次用Arch。