1. Gentoo Linux 的独特魅力
Gentoo Linux 在众多 Linux 发行版中独树一帜,它最大的特点就是允许用户从源代码开始构建整个系统。这意味着你可以根据自己的硬件配置和使用需求,对系统进行深度定制。想象一下,这就像是自己动手组装一台电脑,而不是直接购买一台预装好的成品机。你可以选择每一个零件的品牌和型号,确保它们完美匹配你的需求。
我第一次接触 Gentoo 是在十年前,当时被它的高度可定制性所吸引。与 Ubuntu、Fedora 这些发行版不同,Gentoo 不会强迫你接受开发者预设的配置。你可以决定系统包含哪些功能,排除哪些不需要的组件。这种"按需定制"的理念,让 Gentoo 成为追求极致性能和最小化系统的理想选择。
2. 准备工作:安装 Gentoo Linux
2.1 下载安装镜像
Gentoo 提供了多种安装镜像,包括 minimal 安装镜像和 live CD。对于大多数用户来说,minimal 安装镜像是更好的选择,因为它体积小,下载速度快。你可以从 Gentoo 官网或镜像站点下载最新的安装镜像。
wget https://mirrors.ustc.edu.cn/gentoo/releases/amd64/autobuilds/latest-install-amd64-minimal.txt2.2 创建启动盘
下载完镜像后,你需要将它写入 USB 设备或光盘。在 Linux 系统下,可以使用 dd 命令:
dd if=install-amd64-minimal.iso of=/dev/sdX bs=4M status=progress注意将 /dev/sdX 替换为你的 USB 设备路径。
2.3 启动安装环境
插入启动盘后重启电脑,进入 BIOS/UEFI 设置界面,选择从 USB 设备启动。成功启动后,你会看到一个简单的命令行界面,这就是 Gentoo 的安装环境。
3. 系统分区与基础配置
3.1 磁盘分区
Gentoo 安装需要至少两个分区:一个根分区(/)和一个交换分区(swap)。对于 UEFI 系统,还需要一个 EFI 系统分区。可以使用 fdisk 或 parted 工具进行分区:
fdisk /dev/sda典型的分区方案如下:
- /dev/sda1: EFI 系统分区 (300MB)
- /dev/sda2: 交换分区 (内存大小的1-2倍)
- /dev/sda3: 根分区 (剩余所有空间)
3.2 格式化分区
创建好分区后,需要格式化它们:
mkfs.fat -F32 /dev/sda1 mkswap /dev/sda2 mkfs.ext4 /dev/sda3 swapon /dev/sda23.3 挂载分区
接下来挂载分区到/mnt目录:
mount /dev/sda3 /mnt mkdir -p /mnt/boot/efi mount /dev/sda1 /mnt/boot/efi4. 安装基础系统
4.1 设置日期和时间
确保系统时间正确非常重要,特别是对于加密通信和软件包验证:
date # 如果时间不正确,可以使用ntpd同步 ntpd -q -g4.2 下载stage3压缩包
stage3是Gentoo的基础系统压缩包,包含编译好的基本工具链:
cd /mnt wget https://mirrors.ustc.edu.cn/gentoo/releases/amd64/autobuilds/latest-stage3-amd64.txt tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner4.3 配置make.conf
/etc/portage/make.conf是Gentoo最重要的配置文件之一,它定义了全局编译选项:
nano /mnt/etc/portage/make.conf添加以下内容(根据你的CPU调整-march参数):
CFLAGS="-O2 -pipe -march=native" CXXFLAGS="${CFLAGS}" MAKEOPTS="-j$(nproc)"4.4 配置Portage
Portage是Gentoo的包管理系统,需要配置镜像站点以加快下载速度:
mkdir -p /mnt/etc/portage/repos.conf cp /mnt/usr/share/portage/config/repos.conf /mnt/etc/portage/repos.conf/gentoo.conf编辑镜像选择:
nano /mnt/etc/portage/make.conf添加:
GENTOO_MIRRORS="https://mirrors.ustc.edu.cn/gentoo"5. 进入新系统环境
5.1 挂载必要的文件系统
mount --types proc /proc /mnt/proc mount --rbind /sys /mnt/sys mount --make-rslave /mnt/sys mount --rbind /dev /mnt/dev mount --make-rslave /mnt/dev5.2 chroot到新系统
chroot /mnt /bin/bash source /etc/profile export PS1="(chroot) ${PS1}"6. 配置Portage树
6.1 同步Portage树
emerge-webrsync或者使用rsync同步最新树:
emerge --sync6.2 选择profile
profile定义了系统的基本特性,如使用systemd还是OpenRC:
eselect profile list eselect profile set X7. 配置USE标志
USE标志是Gentoo最强大的特性之一,它允许你精确控制安装哪些功能:
nano /etc/portage/make.conf添加你需要的USE标志,例如:
USE="X gtk gnome -kde -qt5 alsa pulseaudio"8. 配置时区
echo "Asia/Shanghai" > /etc/timezone emerge --config sys-libs/timezone-data9. 配置locale
nano /etc/locale.gen取消注释你需要的locale,然后运行:
locale-gen eselect locale list eselect locale set X10. 安装内核
10.1 安装内核源码
emerge --ask sys-kernel/gentoo-sources10.2 配置内核
cd /usr/src/linux make menuconfig10.3 编译并安装内核
make && make modules_install make install11. 配置系统工具
11.1 安装必要工具
emerge --ask sys-apps/pciutils sys-fs/e2fsprogs sys-apps/usbutils11.2 配置网络
nano /etc/conf.d/net添加:
config_eth0="dhcp"11.3 添加网络服务到启动项
cd /etc/init.d ln -s net.lo net.eth0 rc-update add net.eth0 default12. 安装引导加载程序
12.1 安装GRUB
emerge --ask sys-boot/grub12.2 配置GRUB
grub-install /dev/sda grub-mkconfig -o /boot/grub/grub.cfg13. 设置root密码
passwd14. 完成安装
14.1 退出chroot环境
exit umount -l /mnt/dev{/shm,/pts,} umount -R /mnt reboot14.2 首次启动
移除安装介质后重启系统,你应该能看到GRUB引导菜单,选择Gentoo启动。
15. 系统优化技巧
15.1 使用ccache加速编译
emerge --ask ccache在make.conf中添加:
FEATURES="ccache" CCACHE_SIZE="2G"15.2 配置二进制包
虽然Gentoo主要从源码编译,但也可以使用二进制包加速某些大型软件的安装:
emerge --ask app-portage/gentoolkit emerge --usepkg --verbose --ask sys-apps/portage15.3 优化USE标志
定期检查USE标志,移除不需要的功能:
equery u package-name15.4 配置并行编译
根据CPU核心数调整MAKEOPTS:
MAKEOPTS="-j$(nproc)"16. 日常维护
16.1 更新系统
emerge --sync emerge -uDU --with-bdeps=y @world16.2 清理无用包
emerge --depclean revdep-rebuild16.3 处理配置文件更新
dispatch-conf17. 性能调优
17.1 CPU架构优化
在make.conf中设置:
CFLAGS="-O2 -pipe -march=native"17.2 链接时优化(LTO)
CFLAGS="${CFLAGS} -flto" CXXFLAGS="${CXXFLAGS} -flto" LDFLAGS="${LDFLAGS} -flto"17.3 配置文件引导优化(PGO)
对于支持PGO的软件,可以:
FEATURES="pgo"17.4 内存分配器优化
使用jemalloc或tcmalloc:
emerge --ask dev-libs/jemalloc在/etc/env.d中添加:
LD_PRELOAD="/usr/lib64/libjemalloc.so.2"18. 安全加固
18.1 编译时安全选项
CFLAGS="${CFLAGS} -fstack-protector-strong -D_FORTIFY_SOURCE=2" LDFLAGS="${LDFLAGS} -Wl,-z,now -Wl,-z,relro"18.2 启用SELinux或AppArmor
emerge --ask sys-apps/policycoreutils18.3 内核安全配置
在内核配置中启用:
CONFIG_SECCOMP=y CONFIG_GRKERNSEC=y19. 常见问题解决
19.1 编译失败
检查日志:
less /var/tmp/portage/category/package/temp/build.log19.2 依赖冲突
emerge --ask --verbose --oneshot package19.3 系统无法启动
使用安装介质进入救援模式,挂载分区并chroot修复。
20. 进阶配置
20.1 创建自定义ebuild
mkdir -p /var/db/repos/localrepo/{profiles,metadata} echo "localrepo" > /var/db/repos/localrepo/profiles/repo_name echo "masters = gentoo" > /var/db/repos/localrepo/metadata/layout.conf20.2 使用overlay
emerge --ask app-portage/layman layman -a overlay-name20.3 交叉编译
crossdev --target arm-linux-gnueabihf21. 桌面环境配置
21.1 安装Xorg
emerge --ask x11-base/xorg-server21.2 安装桌面环境
例如GNOME:
echo "gnome lightdm" >> /etc/portage/make.conf emerge --ask gnome-base/gnome21.3 配置显示管理器
rc-update add dbus default rc-update add lightdm default22. 容器与虚拟化
22.1 Docker支持
emerge --ask app-containers/docker rc-update add docker default22.2 KVM虚拟化
emerge --ask app-emulation/qemu在内核中启用KVM支持。
23. 开发环境配置
23.1 安装开发工具
emerge --ask sys-devel/gcc dev-util/cmake dev-util/ninja23.2 配置IDE
例如VSCode:
emerge --ask app-editors/vscode24. 服务器配置
24.1 Web服务器
emerge --ask www-servers/nginx24.2 数据库
emerge --ask dev-db/mysql24.3 邮件服务器
emerge --ask mail-mta/postfix25. 系统监控
25.1 安装监控工具
emerge --ask app-admin/sysstat app-admin/htop25.2 配置日志
emerge --ask app-admin/logrotate26. 备份策略
26.1 系统备份
emerge --ask app-backup/rsync26.2 配置自动备份
创建cron任务:
0 3 * * * /usr/bin/rsync -a --delete /important/data /backup27. 性能监控与调优
27.1 安装性能工具
emerge --ask sys-process/pidstat sys-process/iotop27.2 内核参数调优
nano /etc/sysctl.conf添加:
vm.swappiness=10 vm.vfs_cache_pressure=5028. 电源管理
28.1 笔记本电源优化
emerge --ask app-laptop/laptop-mode-tools28.2 CPU频率调节
emerge --ask sys-power/cpupower29. 网络优化
29.1 TCP参数调优
echo "net.core.rmem_max=4194304" >> /etc/sysctl.conf echo "net.core.wmem_max=4194304" >> /etc/sysctl.conf29.2 网络监控
emerge --ask net-analyzer/iftop30. 系统裁剪
30.1 移除不需要的服务
rc-update del service-name default30.2 最小化系统
使用musl代替glibc:
emerge --ask sys-libs/musl31. 多系统引导
31.1 配置GRUB多系统
grub-mkconfig -o /boot/grub/grub.cfg31.2 使用rEFInd
emerge --ask sys-boot/refind32. 系统恢复
32.1 创建救援镜像
emerge --ask sys-rescue/sysrescuecd32.2 备份关键配置
tar czvf /backup/etc-backup.tar.gz /etc33. 社区资源
33.1 Gentoo Wiki
elinks https://wiki.gentoo.org33.2 论坛支持
elinks https://forums.gentoo.org34. 持续学习
Gentoo是一个需要持续学习的系统,建议:
- 定期阅读Gentoo新闻(eselect news list)
- 关注Portage更新(emerge --pretend --update --deep --newuse @world)
- 参与社区讨论
35. 结语
Gentoo Linux 提供了无与伦比的定制能力和性能优化空间,但同时也需要投入更多时间和精力。经过多年的使用,我发现 Gentoo 不仅是一个操作系统,更是一个学习 Linux 内部工作原理的绝佳平台。每次系统更新或软件安装都是一次学习机会,让你对 Linux 系统有更深入的理解。