Gentoo Linux 源码级定制与部署指南
一、 引导环境准备
基于源码构建的 Linux 发行版需要依赖一个具备完整网络访问权限与基础编译工具链的宿主环境。推荐使用官方提供的 LiveGUI 介质,该环境预装了网络配置工具、硬件探测程序及特定的包管理辅助脚本。若使用其他发行版的 Live 介质,需额外补全相关依赖。
进入桌面环境后,首要操作是禁用系统的电源管理与屏幕锁定策略。由于源码编译过程通常耗时较长,后台休眠或会话中断将直接导致构建任务终止。随后确认网络接口已获取 IP 地址并能够正常访问外部源,Live 环境通常默认启用 DHCP 自动协商。
二、 存储规划与文件系统构建
现代系统部署普遍采用 GPT 分区表配合 UEFI 引导规范。若目标磁盘曾用于其他系统,建议在操作前备份原有分区表数据。以下为基于全盘覆盖的分区架构示例。
2.1 分区表初始化与加密卷映射
export TARGET_DISK="/dev/nvme0n1"
export PART_ESP="${TARGET_DISK}p1"
export PART_BOOT="${TARGET_DISK}p2"
export PART_LVM="${TARGET_DISK}p3"
# 使用 parted 建立分区结构
parted ${TARGET_DISK} mklabel gpt
parted -a optimal ${TARGET_DISK} \
mkpart EFI fat32 1MiB 129MiB set 1 esp on \
mkpart BOOT fat32 129MiB 513MiB set 2 boot on \
mkpart LVM_CONTAINER ext4 513MiB 100% set 3 lvm on
# LUKS 加密层构建(可选)
cryptsetup luksFormat --type luks2 -c aes-xts-plain64 -s 512 ${PART_LVM}
cryptsetup open ${PART_LVM} crypt_storage
export MAPPED_VOL="/dev/mapper/crypt_storage"
2.2 逻辑卷管理与格式化
# 初始化 LVM 物理卷与卷组
pvcreate ${MAPPED_VOL:-${PART_LVM}}
vgcreate vg_root ${MAPPED_VOL:-${PART_LVM}}
# 分配交换空间与根文件系统
lvcreate -L 16G -n lv_swap vg_root
lvcreate -l 100%FREE -n lv_root vg_root
# 创建文件系统
mkfs.vfat -F32 -n EFI ${PART_ESP}
mkfs.ext4 -L BOOT ${PART_BOOT}
mkswap -L SWAP /dev/vg_root/lv_swap
mkfs.btrfs -L ROOT /dev/vg_root/lv_root
# 激活交换区并构建挂载树
swapon /dev/vg_root/lv_swap
mkdir -p /mnt/gentoo
mount -t btrfs -o defaults /dev/vg_root/lv_root /mnt/gentoo
mkdir -p /mnt/gentoo/{boot,boot/efi,proc,sys,dev}
完成格式化后,将引导分区与虚拟文件系统绑定至目标目录,为后续环境切换做准备:
mount /dev/vg_root/lv_swap /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount ${PART_BOOT} /mnt/gentoo/boot
mount ${PART_ESP} /mnt/gentoo/boot/efi
三、 Stage3 基座部署
3.1 环境注入与网络同步
解压对应架构的 Stage3 归档文件后,通过 chroot 切换至新环境。需同步 DNS 解析配置并校对系统时钟,避免包校验与时间戳比对异常。
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
ntpd -q -g
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
随后初始化 Portage 树,建议优先通过快照同步以加速初始构建:
mkdir -p /etc/portage/repos.conf
cp /usr/share/portage/config/repos.conf /etc/portage/repos.conf/gentoo.conf
sed -i 's|rsync://rsync.gentoo.org/gentoo-portage|rsync://mirrors.tuna.tsinghua.edu.cn/gentoo-portage|' /etc/portage/repos.conf/gentoo.conf
emerge-webrsync
3.2 编译策略与全局变量调优
编辑 /etc/portage/make.conf 定制构建参数。利用 cpuid2cpuflags 自动检测 CPU 指令集,并合理分配并行编译线程。
# 示例配置片段
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo/"
COMMON_OPT="-O2 -march=native -pipe"
CFLAGS="${COMMON_OPT}"
CXXFLAGS="${COMMON_OPT}"
FCFLAGS="${COMMON_OPT}"
MAKEOPTS="-j$(nproc)"
VIDEO_CARDS="amdgpu" # 根据实际硬件调整
USE="-pulseaudio wayland elogind" # 全局 USE 标记按需增删
注意:全局 USE 仅适用于所有包共需的依赖。针对特定软件的参数应通过 /etc/portage/package.use/ 目录下的独立文件进行声明。完成基础配置后,执行 emerge -avuDN @world 应用策略并更新核心库。
3.3 本地化与运行方案
# 生成区域设置
echo -e "en_US.UTF-8 UTF-8\nzh_CN.UTF-8 UTF-8" > /etc/locale.gen
locale-gen
eselect locale set 3 # 对应 zh_CN.UTF-8
# 设定系统 Profile
eselect profile list
eselect profile set default/linux/amd64/23.0/desktop/plasma
# 时区配置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
四、 内核编译与服务初始化
安装固件包与内核源码后,利用 genkernel 自动化编译流程。需在配置文件中开启对应文件系统与硬件支持:
emerge --ask sys-kernel/linux-firmware sys-kernel/gentoo-sources sys-kernel/genkernel
eselect kernel set 1
# 编辑 /etc/genkernel.conf 确保以下选项生效
LVM="yes"
BTRFS="yes"
LUKS="yes"
MICROCODE="all"
执行 genkernel --menuconfig all 可根据需求裁剪内核模块。编译完成后,根据所选的服务管理器启用关键守护进程:
# OpenRC 方案
emerge --ask sys-fs/btrfs-progs sys-fs/lvm2
rc-update add lvm boot
rc-update add NetworkManager default
rc-update add cronie default
# Systemd 方案 (若 profile 选择 systemd)
systemctl enable NetworkManager.service
systemctl enable chronyd.service
五、 引导器部署与参数调优
安装 GRUB 并配置设备映射支持,确保引导过程能正确解锁 LUKS 并激活 LVM 卷组:
echo "sys-boot/grub device-mapper" > /etc/portage/package.use/grub
emerge --ask sys-boot/grub
grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/nvme0n1
修改 /etc/default/grub 注入内核启动参数,随后生成引导菜单:
GRUB_CMDLINE_LINUX="root=/dev/vg_root/lv_root dolvm crypt_root=UUID=$(blkid -s UUID -o value /dev/nvme0n1p3) ro quiet"
grub-mkconfig -o /boot/grub/grub.cfg
六、 运行时配置与网络服务
系统重启前需完成基础身份验证与时间同步策略。设置主机名并创建常规操作账户:
echo "workstation-node" > /etc/hostname
useradd -m -G users,wheel,video,portage -s /bin/bash dailyuser
passwd root
passwd dailyuser
配置 sudo 权限,允许 wheel 组成员执行特权命令:
sed -i '/^# \%wheel/s/^# //' /etc/sudoers
时间同步推荐采用 chrony 替代传统 NTP 服务,兼顾时钟漂移校准与网络延迟补偿。硬件时钟建议统一维护为 UTC 格式,避免多系统环境下的时间冲突。
七、 图形会话与本地化环境
根据桌面偏好选择元包安装。若采用 KDE Plasma 架构,需同步部署显示管理器与依赖服务:
emerge --ask kde-plasma/plasma-meta kde-plasma/kdeplasma-addons
rc-update add dbus default
rc-update add sddm default
rc-update add elogind boot # 仅 OpenRC 环境需要
echo 'DISPLAYMANAGER="sddm"' > /etc/conf.d/display-manager
中文字体渲染优化可通过 fontconfig 实现。优先启用 Noto CJK 并调整字族回退策略,防止默认楷体覆盖无衬线字体。输入框架方面,KDE 环境推荐 fcitx5,而 GNOME 环境原生集成 ibus,两者需避免混装引发环境冲突。
emerge --ask media-fonts/noto-cjk app-i18n/fcitx5
eselect fontconfig enable 70-yes-70-noto-sans-sc.conf
音频服务已全面迁移至 PipeWire 架构。确保用户加入 pipewire 组,并通过 systemctl --user enable pipewire.socket(Systemd)或桌面会话自动加载机制(OpenRC)激活声音子系统。完成图形栈配置后,系统即可脱离 Live 环境独立运行。