这里我用 Void Linux 的 ISO 镜像,使用 xgenfstab 生成 fstab 和 xchroot 挂载 “/proc、/sys、/dev、/run” 并进入 chroot 环境。当然,你也可以用 Arch Linux 的 iso 镜像,默认的 genfstab 和 arch-chroot 也是类似的功能。
如需下载 Void Linux ISO 镜像,请访问以下链接。
联网
笔记本连接无线网络可以用 wpa_supplicant,很多发行版都自带有。
ip a 命令查看无线设备,通常类似 wlp1s0、enp33、wlan0。
生成配置文件
1
|
wpa_passphrase "你的WiFi名称" "你的WiFi密码" > /etc/wpa_supplicant/wpa_supplicant.conf
|
或者手动写入
1
2
3
4
5
|
# 写入以下内容
network={
ssid="你的WiFi名称"
psk="你的WiFi密码"
}
|
连接无线网络
1
|
wpa_supplicant -B -i wlp1s0 -c /etc/wpa_supplicant/wpa_supplicant.conf
|
如果跟我一样用的 Void Linux ISO,联网第一步要更新一下xbps,执行以下命令。
换源
1
|
sed -i 's/default/fastly/' /usr/share/xbps.d/00-repository-main.conf
|
更新 xbps 以及安装软件包
1
|
xbps-install -Syu xbps links xz
|
links 命令行浏览器,下载 stage 用的。
xz 解压 tar.xz 包。
分区
EFI
分区方案:
| 磁盘 |
大小 |
类型 |
| sda1 |
300M |
efi |
| sda2 |
4G |
交换分区 |
| sda3 |
剩余空间 |
/ |
分区工具 fdisk,用法 fdisk /dev/sda 或 fdisk /dev/nvme,具体名称可通过 lsblk 查看。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
fdisk /dev/sda
输入[g] # 将磁盘类型转换成 GPT 类型
输入[n] # 新建分区
默认回车 # 分区号
默认回车 # 第一个扇区
输入[+300M] # 最后一个扇区,设置分区大小为 300M
输入[t] # 更改分区类型
输入[1] # 将分区类型改为 "EFI System"
输入[n] # 新建分区
默认回车 # 分区号
默认回车 # 第一个扇区
输入[+4G] # 最后一个扇区,设置分区大小为 4G
输入[t] # 更改分区类型
默认回车 # 选择需要更改的分区,默认 2
输入[19] # 将分区类型改为 Linux swap
输入[n] # 新建分区
默认回车 # 分区号
默认回车 # 第一个扇区
默认回车 # 最后一个扇区,设置分区大小为剩余空间
输入[t] # 更改分区类型
默认回车 # 选择需要更改的分区,默认 3
输入[23] # 将分区类型改为 Linux root (x86_64)
输入[p] # 打印分区表
输入[wq] # 保存退出
|
当然,根分区你不改成 Linux root (x86_64),默认的 Linux filesystem 也能正常使用。
格式化分区
EFI 分区
1
|
mkfs.fat -F 32 /dev/sda1
|
Swap 分区
启用 Swap
/ 分区
挂载 / 分区
MBR
分区方案:
| 磁盘 |
大小 |
类型 |
| sda1 |
4G |
交换分区 |
| sda2 |
剩余空间 |
/ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
fdisk /dev/sda
输入[n] # 新建分区
默认回车 # 分区类型
默认回车 # 分区号
默认回车 # 第一个扇区
输入[+4G] # 最后一个扇区,设置分区大小为 +4G
输入[t] # 更改分区类型
输入[82] # 将分区类型更改为 Linux swap / Solaris
输入[n] # 新建分区
默认回车 # 分区类型
默认回车 # 分区号
默认回车 # 第一个扇区
默认回车 # 最后一个扇区,设置分区大小为剩余空间
输入[p] # 打印分区表
输入[wq] # 保存退出
|
格式化分区
Swap 分区
启用 Swap
/ 分区
挂载根分区
下载 Stage
Stage 怎么选
-
命令行
-
桌面环境
- desktop-openrc
- desktop-systemd
选 openrc 还是 systemd?如果你不知道这个是什么就选 systemd ,主流发行版都是 systemd。
如何下载
Links
- 用法:links 链接。
- 操作:『上下键上下移动,左右键返回上一页返回下一页,回车键确认,q 退出』。
1
|
links https://mirrors.bfsu.edu.cn/gentoo/releases/amd64/autobuilds
|
Wget
用法:wget 目标文件链接,例如:
1
|
wget https://distfiles.gentoo.org/releases/amd64/autobuilds/20260610T214636Z/stage3-amd64-desktop-systemd-20260610T214636Z.tar.xz
|
解压 Stage
1
|
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt
|
创建 EFI 目录
挂载 EFI 分区
1
|
mount /dev/sda1 /mnt/boot/efi
|
生成 Fstab
1
|
xgenfstab -U /mnt > /mnt/etc/fstab
|
进入 Chroot 环境
1
2
3
|
xchroot /mnt
source /etc/profile
export PS1="(chroot) ${PS1}"
|
如果你用的是其他系统的 ISO 镜像,比如 Arch Linux 的或者 Gentoo 官方 ISO 镜像,就需要把上面的 xgenfstab 改成 genfstab ,xchroot 改成 arch-chroot。Gentoo 官方的 ISO 镜像需要安装 genfstab 。
否则请点击 Gentoo Handbook 参阅。
配置 Make.conf
配置文件:/etc/portage/make.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
# 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"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"
# NOTE: This stage was built with the bindist USE flag enabled
MAKEOPTS="-j6"
ACCEPT_LICENSE="*"
EMERGE_DEFAULT_OPTS="--getbinpkg --usepkg"
GENTOO_MIRRORS=https://mirrors.bfsu.edu.cn/gentoo
# This sets the language of build output to English.
# Please keep this setting intact when reporting bugs.
LC_MESSAGES=C.UTF-8
|
-march=native 让编译器针对当前 CPU 自动优化。
MAKEOPTS="-jx" 并行编译线程数,x=你的 CPU 线程数。
ACCEPT_LICENSE="*" 接受所有许可证,包括闭源软件。如果只想安装自由软件,可以改成 @FREE。
EMERGE_DEFAULT_OPTS="--getbinpkg --usepkg" 让 emerge 优先使用预编译二进制包,大幅减少编译时间。
GENTOO_MIRRORS emerge-webrsync 快照镜像站。
- 可选:
ACCEPT_KEYWORDS="~amd64" 滚动更新,如果你喜欢保持系统包都是最新的,开启此选项。
同步快照
设置主机名
1
|
echo host > /etc/hostname
|
配置本地化
1
2
|
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
|
生成 Locale
列出 Locale 列表
1
2
3
4
5
6
7
8
9
|
eselect locale list
Available targets for the LANG variable:
[1] C
[2] C.UTF-8
[3] POSIX
[4] en_US.UTF-8
[5] zh_CN.UTF-8
[ ] (free form)
|
选择 Locale
加载环境
1
|
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"
|
设置时区
1
|
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
设置 Root 密码
配置 Portage 源
创建 repos.conf 目录
1
|
mkdir /etc/portage/repos.conf
|
复制示例配置文件
1
|
cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf
|
配置文件:/etc/portage/repos.conf/gentoo.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[DEFAULT]
main-repo = gentoo
[gentoo]
location = /var/db/repos/gentoo
sync-type = rsync
sync-uri = rsync://mirrors.bfsu.edu.cn/gentoo-portage
auto-sync = yes
sync-rsync-verify-jobs = 1
sync-rsync-verify-metamanifest = yes
sync-rsync-verify-max-age = 3
sync-openpgp-key-package = sec-keys/openpgp-keys-gentoo-release
sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-keyserver = hkps://keys.gentoo.org
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4
sync-webrsync-verify-signature = yes
sync-git-verify-commit-signature = true
|
只需要改sync-uri,把官方源改成国内源即可。中科大、清华、北外源都行。
配置二进制包源
配置文件:/etc/portage/binrepos.conf/gentoo.conf
1
2
3
4
5
6
7
8
9
|
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consider using a local mirror.
[gentoo]
priority = 9959
sync-uri = https://mirrors.bfsu.edu.cn/gentoo/releases/amd64/binpackages/23.0/x86-64
verify-signature = true
location = /var/cache/binhost/gentoo
|
如果你的 CPU 支持 x86-64-v3 把这个加在后面。
1
2
3
4
5
|
[gentoo-x86-64-v3]
priority = 9999
sync-uri = https://mirrors.bfsu.edu.cn/gentoo/releases/amd64/binpackages/23.0/x86-64-v3/
verify-signature = true
location = /var/cache/binhost/gentoo-x86-64-v3
|
把 priority 改成 9959 和 9999 ,sync-uri 改成国内中科大、清华、北外源都行。
密钥验证
安装 Cpuid2cpuflags
如果是虚拟机安装 Gentoo ,这一步通常不需要。
1
|
emerge --ask --oneshot app-portage/cpuid2cpuflags
|
执行 cpuid2cpuflags
写入 USE
1
|
echo "*/* $(cpuid2cpuflags)" > /etc/portage/package.use/00cpu-flags
|
安装固件
如果是虚拟机安装 Gentoo ,这一步通常也不需要。
内核
内核推荐 gentoo-kernel-bin 这个是预编译包,自己编译就选 gentoo-kernel 或 gentoo-sources ,至于怎么编译我这里就不过多叙述了。
设置 USE
1
|
echo "sys-kernel/installkernel dracut" > /etc/portage/package.use/00install-kernel
|
安装内核
1
|
emerge installkernel gentoo-kernel-bin
|
安装 GRUB
配置引导
EFI 引导安装
1
|
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Gentoo GNU/Linux"
|
MBR 引导安装
生成 grub.cfg
1
|
grub-mkconfig -o /boot/grub/grub.cfg
|
安装 DHCP
开机自启
Openrc
1
|
rc-update add dhcpcd default
|
Systemd
1
|
systemctl enable dhcpcd
|
无线网络
笔记本使用无线网络的可以装个 wpa_supplicant 或者 iwd ,这里就以 wpa_supplicant 为例。
查看无线设备接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 74:4c:a1:55:9d:23 brd ff:ff:ff:ff:ff:ff
altname wlx744ca1559d23
inet 192.168.31.93/24 metric 1024 brd 192.168.31.255 scope global dynamic wlp1s0
valid_lft 43102sec preferred_lft 43102sec
inet6 2409:8a5c:b843:bdb0::dc7/128 scope global dynamic noprefixroute
valid_lft 43102sec preferred_lft 43102sec
inet6 2409:8a5c:b843:bdb0:764c:a1ff:fe55:9d23/64 scope global mngtmpaddr noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::764c:a1ff:fe55:9d23/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
|
配置无线网络
OpenRC
配置文件:/etc/wpa_supplicant/wpa_supplicant.conf
生成配置文件
1
|
wpa_passphrase "你的WiFi名称" "你的WiFi密码" > /etc/wpa_supplicant/wpa_supplicant.conf
|
或者手动写入
1
2
3
4
5
6
|
# 写入以下内容
network={
ssid="你的WiFi名称"
psk="你的WiFi密码"
}
|
开机自启
1
|
rc-update add wpa_supplicant default
|
指定无线设备接口
配置文件:/etc/conf.d/wpa_supplicant
1
|
wpa_supplicant_args="-i wlp1s0 -c /etc/wpa_supplicant/wpa_supplicant.conf"
|
Systemd
配置文件:/etc/wpa_supplicant/wpa_supplicant-无线接口名称.conf
生成配置文件
1
|
wpa_passphrase "你的WiFi名称" "你的密码" > /etc/wpa_supplicant/wpa_supplicant-wlp1s0.conf
|
或者手动写入
1
2
3
4
5
6
|
# 写入以下内容
network={
ssid="你的WiFi名称"
psk="你的WiFi密码"
}
|
开机自启
1
|
systemctl enable wpa_supplicant@wlp1s0
|
OpenRC
如果你用的是 OpenRC 需要安装额外的软件,Systemd 请跳过这一步。
系统日志
sysklogd 提供传统的系统日志守护进程。默认日志配置开箱即用,无需复杂设置,因此对新手来说是一个不错的选择。
syslog-ng 一款功能更强大的高级系统日志程序。更适合有经验的用户使用,其强大的日志处理能力是主要优势,但相应地也需要投入更多时间进行配置。
安装
开机自启
1
|
rc-update add sysklogd default
|
Cron 守护进程 - 可选
虽然 Cron 守护进程是可选组件,并非所有系统都必须安装,但通常还是建议安装一个。如果完全没有定时任务需求,也可以暂时不安装。
安装
开机自启
1
|
rc-update add cronie default
|
时间同步
安装
开机自启
1
|
rc-update add chronyd default
|
更多内容请点此 Gentoo Handbook 参阅
退出 Chroot 环境
重启进入新系统
设置 DNS
1
|
echo "nameserver 8.8.8.8" > /etc/resolv.conf
|
同步 Portage 树
选择 Profile
Profile 怎么选
Profile 会预设好相关的 USE Flags。
什么情况下需要选择 Profile?最初下载 Stage 选择不带 Desktop,现在想要装桌面比如 “Hyprland、Xfce” 的,就需要选择 Profile 为 Desktop 的。最初 Stage 选择带 Desktop 的,直接同步 Portage 和更新 World 就行。
当然,用不惯 OpenRC 想转 Systemd 的也需要切换 Profile,但是不推荐这样。
- 只用命令行
- OpenRC
- 选 → [1] default/linux/amd64/23.0 (stable)
- Systemd
- 选 → [2] default/linux/amd64/23.0/systemd (stable)
- 要装桌面环境
- OpenRC
- 选 → [3] default/linux/amd64/23.0/desktop (stable)
- Systemd
- 选 → [4] default/linux/amd64/23.0/desktop/systemd (stable)
- 要装 GNOME
- OpenRC
- 选 → [5] default/linux/amd64/23.0/desktop/gnome (stable)
- Systemd
- 选 → [6] default/linux/amd64/23.0/desktop/gnome/systemd (stable)
- 要装 KDE Plasma
- OpenRC
- 选 → [7] default/linux/amd64/23.0/desktop/plasma (stable)
- Systemd
- 选 → [8] default/linux/amd64/23.0/desktop/plasma/systemd (stable)
本文使用 Systemd,最初 Stage 选的 Systemd-desktop 所以选的是 [4] default/linux/amd64/23.0/desktop/systemd。如果你后续打算装 KDE 或 GNOME,建议在这一步就选好对应的 Profile,省去后面切换的麻烦。
列出 Profile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
eselect profile list
Available profile symlink targets:
[1] default/linux/amd64/23.0 (stable)
[2] default/linux/amd64/23.0/systemd (stable)
[3] default/linux/amd64/23.0/desktop (stable)
[4] default/linux/amd64/23.0/desktop/systemd (stable) *
[5] default/linux/amd64/23.0/desktop/gnome (stable)
[6] default/linux/amd64/23.0/desktop/gnome/systemd (stable)
[7] default/linux/amd64/23.0/desktop/plasma (stable)
[8] default/linux/amd64/23.0/desktop/plasma/systemd (stable)
[9] default/linux/amd64/23.0/no-multilib (stable)
[10] default/linux/amd64/23.0/no-multilib/systemd (stable)
[11] default/linux/amd64/23.0/no-multilib/hardened (stable)
[12] default/linux/amd64/23.0/no-multilib/hardened/systemd (stable)
[13] default/linux/amd64/23.0/no-multilib/hardened/selinux (stable)
[14] default/linux/amd64/23.0/no-multilib/hardened/selinux/systemd (stable)
[15] default/linux/amd64/23.0/no-multilib/prefix (exp)
[16] default/linux/amd64/23.0/no-multilib/prefix/kernel-2.6.32+ (exp)
[17] default/linux/amd64/23.0/no-multilib/prefix/kernel-2.6.16+ (exp)
[18] default/linux/amd64/23.0/no-multilib/prefix/kernel-3.2+ (exp)
[19] default/linux/amd64/23.0/llvm (exp)
[20] default/linux/amd64/23.0/llvm/systemd (exp)
[21] default/linux/amd64/23.0/hardened (stable)
[22] default/linux/amd64/23.0/hardened/systemd (stable)
[23] default/linux/amd64/23.0/hardened/selinux (stable)
[24] default/linux/amd64/23.0/hardened/selinux/systemd (stable)
[25] default/linux/amd64/23.0/split-usr (stable)
[26] default/linux/amd64/23.0/split-usr/desktop (stable)
[27] default/linux/amd64/23.0/split-usr/desktop/gnome (stable)
[28] default/linux/amd64/23.0/split-usr/desktop/plasma (stable)
[29] default/linux/amd64/23.0/split-usr/no-multilib (stable)
[30] default/linux/amd64/23.0/split-usr/no-multilib/selinux (stable)
[31] default/linux/amd64/23.0/split-usr/no-multilib/hardened (stable)
[32] default/linux/amd64/23.0/split-usr/no-multilib/hardened/selinux (stable)
[33] default/linux/amd64/23.0/split-usr/no-multilib/prefix (exp)
[34] default/linux/amd64/23.0/split-usr/no-multilib/prefix/kernel-2.6.32+ (exp)
[35] default/linux/amd64/23.0/split-usr/no-multilib/prefix/kernel-2.6.16+ (exp)
[36] default/linux/amd64/23.0/split-usr/no-multilib/prefix/kernel-3.2+ (exp)
[37] default/linux/amd64/23.0/split-usr/llvm (exp)
[38] default/linux/amd64/23.0/split-usr/hardened (stable)
[39] default/linux/amd64/23.0/split-usr/hardened/selinux (stable)
[40] default/linux/amd64/23.0/x32 (dev)
[41] default/linux/amd64/23.0/x32/systemd (exp)
[42] default/linux/amd64/23.0/split-usr/x32 (exp)
[43] default/hurd/amd64/23.0 (exp)
[44] default/linux/amd64/23.0/musl (dev)
[45] default/linux/amd64/23.0/musl/systemd (dev)
[46] default/linux/amd64/23.0/musl/llvm (exp)
[47] default/linux/amd64/23.0/musl/llvm/systemd (exp)
[48] default/linux/amd64/23.0/musl/hardened (exp)
[49] default/linux/amd64/23.0/musl/hardened/systemd (exp)
[50] default/linux/amd64/23.0/musl/hardened/selinux (exp)
[51] default/linux/amd64/23.0/split-usr/musl (dev)
[52] default/linux/amd64/23.0/split-usr/musl/llvm (exp)
[53] default/linux/amd64/23.0/split-usr/musl/hardened (exp)
[54] default/linux/amd64/23.0/split-usr/musl/hardened/selinux (exp)
|
选择 Profile
更新 World
写在最后
Gentoo 日常管理
- 安装软件包
emerge 包名
- 卸载软件包
emerge -C 包名
- 搜索软件包
emerge -s 包名
- 更新单个软件
emerge -1 包名
- 查询包信息
emerge --info 包名
- 查询软件包是否安装
emerge -pv 包名
- 同步软件仓库
emerge --sync
- 预览更新
emerge -pvuDN @world
- 更新整个系统
emerge -avuDN @world
- 清理无用依赖
emerge --depclean
安装桌面请设置以下 USE
1
|
echo "*/* VIDEO_CARDS: -* amdgpu radeonsi" > /etc/portage/package.use/00video_cards
|
1
|
echo "*/* VIDEO_CARDS: -* nvidia" > /etc/portage/package.use/00video_cards
|
1
|
echo "*/* VIDEO_CARDS: -* intel" > /etc/portage/package.use/00video_cards
|
关于 USE、KEYWORDS、MASK
配置文件:/etc/portage/make.conf
1
2
|
USE=""
ACCEPT_KEYWORDS="~amd64"
|
用于仅针对指定软件包修改 USE Flags 或允许测试版。
单包 USE 配置:/etc/portage/package.use/
单包 KEYWORDS 配置:/etc/portage/package.accept_keywords/
用于屏蔽某些软件包或特定版本,防止其被安装或升级。
控制配置:/etc/portage/package.mask/