连接无线网
# wpa_passphrase <wifi> <passwd> > /etc/wpa_supplicant/wpa_supplicant.conf
# wpa_supplicant -i <dev> -c /etc/wpa_supplicant/wpa_supplicant.conf -B
# dhcpd
可选:使用 SSH 连接
# rc-service sshd start
# passwd root
这里注意记得修改 root 密码,因为不知道 livecd 的 root 密码。
准备磁盘
分区
# parted /dev/nvme0n1
# 创建 gpt 分区
(parted) mklabel gpt
# 创建引导分区,注意这里从2048个扇区开始,对齐分区
(parted) mkpart EFI fat32 2048s 512MB
# 创建根分区
(parted) mkpart root ext4 512MB 100%
# 设置分区1 flag boot, esp 命令后面按 tab 可以查看 flag
(parted) set 1
# 打印分区信息
(parted) p
Model: PM981 NVMe Samsung 512GB (nvme)
Disk /dev/nvme0n1: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 512MB 511MB fat32 EFI boot, esp
2 512MB 512GB 512GB ext4 root
格式化分区
# mkfs.fat -F 32 /dev/nvme0n1p1
# mkfs.ext4 /dev/nvme0n1p2
挂载 root 分区
# mount /dev/nvme0n1p2 /mnt/gentoo
安装 stage3
设置日期和时间
格式:月日时分年,如 060504032022 ,表示 2022 年 06 月 05 日 04 时 03 分。
# date 060504032022
下载 stage3
这里使用 links 访问清华开源镜像站下载:
# cd /mnt/gentoo/
# links https://mirrors.tuna.tsinghua.edu.cn/gentoo/releases/amd64/autobuilds/current-stage3-amd64-desktop-openrc/
解压 stage3
# tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
配置 make.conf
# vi /mnt/gentoo/etc/portage/make.conf
修改如下:
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
COMMON_FLAGS="-march=native -O2 -pipe -flto"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
# NOTE: This stage was built with the bindist Use flag enabled
# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C.utf8
GENTOO_MIRRORS="https://mirrors.tuna.tsinghua.edu.cn/gentoo"
MAKEOPTS="-j8"
USE="-kde -systemd -gnome -wayland -ipv6 -qt5 -gtk pulseaudio dbus elogind"
EMERGE_DEFAULT_OPTS="--with-bdeps=y --quiet-build"
PORTAGE_TMPDIR="/tmp"
VIDEO_CARDS="nvidia"
INPUT_DEVICES="libinput synaptics"
GRUB_PLATFORMS="efi-64"
ACCEPT_LICENSE="*"
安装基本系统
拷贝 DNS 信息
# cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
挂载文件系统
# 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 --bind /run /mnt/gentoo/run
# mount --make-slave /mnt/gentoo/run
进入新环境
# chroot /mnt/gentoo /bin/bash
# source /etc/profile
# export PS1="(chroot) ${PS1}"
挂载 EFI 分区
# mkdir -p /boot/EFI
# mount /dev/nvme0n1p1 /boot/EFI/
配置 Portage
更新 ebuild 仓库
# emerge-webrsync
选择配置文件
# eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/17.1 (stable)
[2] default/linux/amd64/17.1/selinux (stable)
[3] default/linux/amd64/17.1/hardened (stable)
[4] default/linux/amd64/17.1/hardened/selinux (stable)
[5] default/linux/amd64/17.1/desktop (stable) *
[6] default/linux/amd64/17.1/desktop/gnome (stable)
[7] default/linux/amd64/17.1/desktop/gnome/systemd (stable)
...
# eselect profile set 5
更新 world
# emerge --ask --verbose --update --deep --newuse @world
预安装一些软件
# emerge -av \
neovim \
wpa_supplicant \
net-misc/dhcp \
app-text/tree \
mlocate \
linux-firmware \
gentoolkit \
net-wireless/iw \
pciutils
时区设置
# echo "Asia/Shanghai" > /etc/timezone
# emerge --config sys-libs/timezone-data
配置语言环境
编辑 /etc/locale.gen
添加如下:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
然后执行:
# locale-gen
设置语言:
# eselect locale list
Available targets for the LANG variable:
[1] C
[2] C.utf8
[3] POSIX
[4] en_US.utf8
[5] zh_CN.gbk
[6] zh_CN.utf8
[7] C.UTF8 *
[ ] (free form)
# eselect locale set 4
# env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
配置内核
可选:下载固件和CPU微代码
# emerge --ask sys-kernel/linux-firmware sys-firmware/intel-microcode
下载内核源码
# emerge --ask sys-kernel/zen-sources
官方手册使用的内核是 gentoo-sources
,更多其它内核的介绍查看 Kernel/Overview
选择内核版本
# eselect kernel list
Available kernel symlink targets:
[1] linux-5.15.41-zen
# eselect kernel set 1
配置内核
# cd /usr/src/linux
# make menuconfig
内核参数配置因人、机器而异,这里不详述。
编译安装
# make -j8
# make install
# make modules_install
可选:构建 initramfs
# emerge --ask sys-kernel/dracut
# dracut --kver=5.15.41-zen
系统配置
配置 fstab
# vim /etc/fstab
/dev/nvme0n1p1 /boot/EFI vfat defaults,noatime 0 2
/dev/nvme0n1p2 / ext4 noatime 0 1
主机和域信息
# vim /etc/conf.d/hostname
hostname="gentoo"
# vim /etc/conf.d/net
dns_domain_lo="localhost"
# vim /etc/host
127.0.0.1 gentoo.localhost gentoo localhost
OpenRC 并行启动
似乎能略微提高启动速度
# vim /etc/rc.conf
rc_parallel="YES"
本地时钟
默认是 UTC
,如果是 windows 和 linux 双系统,设置为 local
,否则会有 8 小时时差
# vim /etc/conf.d/hwclock
clock="local"
安装系统工具
日志系统
# emerge --ask app-admin/sysklogd
# rc-update add sysklogd default
可选:时钟同步
# emerge --ask net-misc/chrony
# rc-update add chronyd default
配置引导加载程序
# emerge --ask sys-boot/grub
# grub-install --target=x86_64-efi --efi-directory=/boot/EFI --removable
# grub-mkconfig -o /boot/grub/grub.cfg
收尾工作
添加用户
# useradd -m -G users,wheel,audio,usb -s /bin/bash king
修改用户和 root 密码
# passwd king
# passwd root
默认密码强度需要数字大小写字母,你可以修改 /etc/security/passwdqc.conf
配置。
wpa_supplicant 无线网配置
添加网络:
# wpa_passphrase 网络名称 密码 >> /etc/wpa_supplicant/wpa_supplicant.conf
编辑 /etc/wpa_supplicant/wpa_supplicant.conf
,添加:
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
update_config=1
编辑 /etc/conf.d/net
,添加:
modules_wlp2s0="wpa_supplicant"
config_wlp2s0="dhcp"
添加开机启动:
# cd /etc/init.d
# ln -s net.lo net.wlp2s0
# rc-update add net.wlp2s0 default
HiDPI displays
终端界面字体
使高分屏显示更大的文字,内核支持 16x32 字体:
Library routines --->
[*] Select compiled-in fonts
[*] Terminus 16x32 font (not supported by all drivers)
grub 引导界面字体
安装 terminus-font:
# emerge --ask media-fonts/terminus-font
生成 grub 字体:
# grub-mkfont -s 32 -o /boot/grub/fonts/terminus32b.pf2 /usr/share/fonts/terminus/ter-u32b.otb
编辑 /etc/default/grub
,添加:
GRUB_FONT="/boot/grub/fonts/terminus32b.pf2"
然后
# grub-mkconfig -o /boot/grub/grub.cfg
xorg
# emerge --ask x11-base/xorg-server
至此基本系统就已安装完毕,剩下的就是桌面环境安装配置。
开机启动项
- sysklogd
- elogind
- dbus
- net.wlp2s0
- gpm
常用的程序
- app-admin/sudo
- doas
- app-portage/pfl
- elogind
- flameshot
- bash-completion
- xrandr
- udisks
- acpilight
- alacritty
- feh
- terminus-font
- soruce-code-pro
- lxapperance
- nerd-font
常用的配置
Udisks
使用 udisks 可以方便挂载设备,udisks 依赖 polkit 和 dubs
配置 polkit 规则,允许用户挂载设备:
# vim /etc/polkit-1/rules.d/10-udisks.rules
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" &&
subject.user == "king") {
return polkit.Result.YES;
}
});
添加 gentoo-zh 仓库(overlay)
# emerge -av eselect-repository
# eselect repository list
...
[130] gentoo-unity7 (https://github.com/c4pp4/gentoo-unity7)
[131] gentoo-zh * (https://github.com/microcai/gentoo-zh)
[132] gerislay (https://cgit.gentoo.org/repo/user/gerislay.git)
...
# eselect repository enable gentoo-zh
# emerge --sync -r gentoo-zh
xHiDPI
4k 屏 scale 配置:
$ vim ~/.xinitrc
export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
xrdb -merge .Xresources
$ vim ~/.Xresources
Xft.dpi: 192
Xcursor.size: 48
!Xcursor.theme: DMZ-Black
Xcursor.theme: Bibata-Modern-Ice
Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb
Xcursor.theme
用的鼠标主题需要支持 HIDPI