引言

Gentoo Linux是一个以高度灵活、可定制和优化而闻名的Linux发行版。与其他发行版不同,Gentoo采用源代码包管理系统,允许用户从源代码编译软件,从而实现针对特定硬件的高度优化。这种基于源代码的方法使得Gentoo成为追求极致性能和完全控制系统的用户的首选。

Gentoo的核心理念是”选择”,它赋予用户决定系统每个组件如何安装、配置和运行的能力。从编译器优化标志到系统服务,几乎所有方面都可以根据用户需求进行定制。虽然这种灵活性带来了更复杂的安装过程,但结果是获得一个完全符合个人需求的操作系统。

本指南将详细介绍从零开始安装Gentoo Linux的全过程,包括准备工作、安装步骤、系统优化以及常见问题的解决方案。无论您是Linux新手还是有经验的用户,本指南都将帮助您掌握Gentoo的安装技巧,构建一个高度定制化的操作系统。

准备工作

在开始安装Gentoo Linux之前,需要完成一些准备工作,以确保安装过程顺利进行。

硬件要求

Gentoo Linux几乎可以在任何现代计算机上运行,但为了获得良好的体验,建议满足以下最低硬件要求:

  • CPU:64位处理器(x86_64、ARM64等)
  • 内存:至少2GB RAM(推荐4GB以上)
  • 存储空间:至少20GB可用磁盘空间(推荐50GB以上)
  • 网络连接:用于下载源代码和软件包

下载安装介质

Gentoo官方提供了多种安装介质,包括CD/DVD ISO镜像和USB映像。您可以从 Gentoo官方网站下载适合您架构的安装介质。

对于大多数现代计算机,推荐使用gentoo-install-amd64-minimal-<version>.iso镜像。这是一个最小化的安装环境,包含了安装Gentoo所需的基本工具。

创建启动介质

下载ISO镜像后,需要将其创建为启动介质(如USB闪存驱动器):

在Linux系统上,可以使用dd命令创建启动USB:

# 确定USB设备路径(例如/dev/sdb) lsblk # 卸载USB设备(如果已挂载) umount /dev/sdb* # 将ISO写入USB设备(注意:这将删除USB上的所有数据) dd if=gentoo-install-amd64-minimal-<version>.iso of=/dev/sdb bs=4M status=progress 

在Windows系统上,可以使用Rufus或balenaEtcher等工具创建启动USB。

准备安装环境

在开始安装之前,确保您有以下信息:

  1. 网络配置信息(IP地址、子网掩码、网关、DNS服务器)
  2. 磁盘分区计划
  3. 时区信息
  4. 主机名和域名(如果适用)

安装过程

启动安装环境

  1. 将创建的启动介质插入计算机,并设置BIOS/UEFI从该设备启动。
  2. 从启动菜单选择”gentoo”选项启动安装环境。
  3. 系统启动后,您将看到一个命令行提示符。

配置网络

在安装过程中,需要网络连接来下载必要的软件包。Gentoo安装介质通常会尝试自动配置网络,但如果自动配置失败,您需要手动配置。

对于有线网络(以太网):

# 查看网络接口 ip a # 启用网络接口(假设为eth0) ip link set eth0 up # 使用DHCP获取IP地址 dhcpcd eth0 

对于无线网络(Wi-Fi):

# 扫描可用的无线网络 iw dev wlan0 scan # 连接到无线网络 wpa_supplicant -B -i wlan0 -c <(wpa_passphrase "SSID" "password") # 获取IP地址 dhcpcd wlan0 

测试网络连接:

ping -c 4 www.gentoo.org 

配置磁盘分区

Gentoo要求手动分区磁盘。您可以使用fdiskparted等工具进行分区。

以下是推荐的分区方案:

  1. /boot 分区:引导分区,大小约256MB-1GB
  2. swap 分区:交换分区,大小通常为内存的1-2倍
  3. / 分区:根分区,剩余空间

使用fdisk进行分区:

# 列出磁盘 lsblk # 启动fdisk(假设目标磁盘为/dev/sda) fdisk /dev/sda # 在fdisk中: # 1. 创建新分区(n命令) # 2. 选择分区类型(p为主分区) # 3. 设置分区号、起始扇区和大小 # 4. 设置分区类型(t命令),例如: # - EFI系统分区(EFI System Partition)类型为1 # - Linux swap类型为82 # - Linux类型为83 # 5. 保存更改并退出(w命令) 

创建文件系统:

# 创建/boot分区的文件系统(假设为/dev/sda1) mkfs.fat -F 32 /dev/sda1 # 创建swap分区(假设为/dev/sda2) mkswap /dev/sda2 swapon /dev/sda2 # 创建根分区的文件系统(假设为/dev/sda3) mkfs.ext4 /dev/sda3 

挂载分区:

# 挂载根分区 mount /dev/sda3 /mnt/gentoo # 创建并挂载/boot分区 mkdir /mnt/gentoo/boot mount /dev/sda1 /mnt/gentoo/boot 

安装stage文件

Stage文件是Gentoo的基础系统,包含了一个预编译的最小环境。Gentoo提供了三种不同的stage文件:

  1. stage1:最基础的stage,从引导链开始构建
  2. stage2:包含stage1和引导工具链
  3. stage3:包含stage2和基本的系统工具(推荐使用)

下载并解压stage3文件:

# 进入/mnt/gentoo目录 cd /mnt/gentoo # 下载stage3文件(使用links文本浏览器) links https://www.gentoo.org/downloads/mirrors/ # 或者直接使用wget下载(请根据实际情况选择镜像和文件) wget http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-<version>.tar.xz # 解压stage3文件 tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner 

配置编译选项

Gentoo的核心特性之一是通过/etc/portage/make.conf文件配置编译选项,这些选项会影响所有从源代码编译的软件。

编辑/etc/portage/make.conf文件:

nano /mnt/gentoo/etc/portage/make.conf 

基本配置示例:

# 设置通用编译优化标志 COMMON_FLAGS="-O2 -pipe -march=native" # 设置C和C++编译器标志 CFLAGS="${COMMON_FLAGS}" CXXFLAGS="${COMMON_FLAGS}" # 设置FCFLAGS和FFLAGS(Fortran编译器标志) FCFLAGS="${COMMON_FLAGS}" FFLAGS="${COMMON_FLAGS}" # 设置MAKEOPTS以利用多核编译(通常为CPU核心数+1) MAKEOPTS="-j5" # 设置USE标志,用于启用/禁用软件功能 USE="X alsa bluetooth dvd gtk systemd pulseaudio" # 设置接受的关键字 ACCEPT_KEYWORDS="amd64" # 设置接受的许可证 ACCEPT_LICENSE="* -@EULA" # 设置视频卡驱动 VIDEO_CARDS="nvidia amdgpu radeonsi intel" # 设置输入设备 INPUT_DEVICES="libinput synaptics" 

配置系统基础

  1. 选择镜像站点:
# 创建/etc/portage/make.conf中的GENTOO_MIRRORS变量 mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf 
  1. 复制DNS信息:
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ 
  1. 挂载必要的文件系统:
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 
  1. 进入新的系统环境:
chroot /mnt/gentoo /bin/bash source /etc/profile export PS1="(chroot) ${PS1}" 

安装系统基础

  1. 更新Portage仓库:
emerge --sync 
  1. 配置系统配置文件:
# 设置时区 ls /usr/share/zoneinfo echo "Asia/Shanghai" > /etc/timezone emerge --config sys-libs/timezone-data # 设置语言环境 nano /etc/locale.gen 

取消注释所需的语言环境,例如:

en_US.UTF-8 UTF-8 zh_CN.UTF-8 UTF-8 

然后生成语言环境:

locale-gen eselect locale set <number> env-update && source /etc/profile && export PS1="(chroot) ${PS1}" 
  1. 安装必要的工具:
emerge --ask sys-kernel/gentoo-sources emerge --ask sys-kernel/genkernel emerge --ask sys-apps/pcmciautils 

配置内核

Gentoo提供了多种配置内核的方法,包括手动配置和使用genkernel自动配置。

使用genkernel(推荐新手)

# 安装内核源代码 emerge --ask sys-kernel/gentoo-sources # 使用genkernel自动配置和编译内核 genkernel all 

手动配置内核(适合高级用户)

# 进入内核源代码目录 cd /usr/src/linux # 配置内核 make menuconfig 

在内核配置界面,根据您的硬件选择适当的选项。配置完成后:

# 编译并安装内核 make && make modules_install make install 

配置系统

  1. 配置文件系统表(fstab):
# 生成fstab文件 genfstab -U / >> /etc/fstab # 检查并编辑fstab文件 nano /etc/fstab 

确保fstab文件包含所有必要的分区:

# /dev/sda1 UUID=xxxx-xxxx /boot vfat defaults 0 2 # /dev/sda2 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none swap sw 0 0 # /dev/sda3 UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults 0 1 
  1. 配置网络:
# 设置主机名 echo "mygentoo" > /etc/hostname # 配置网络(以systemd-networkd为例) nano /etc/systemd/network/20-wired.network 

添加以下内容:

[Match] Name=en* [Network] DHCP=yes 

然后启用网络服务:

systemctl enable systemd-networkd systemctl enable systemd-resolved 
  1. 设置root密码:
passwd 
  1. 安装必要的系统工具:
# 安装日志系统 emerge --ask app-admin/sysklogd rc-update add sysklogd default # 安装cron守护进程 emerge --ask sys-process/cronie rc-update add cronie default # 安装文件系统工具 emerge --ask sys-fs/e2fsprogs emerge --ask sys-fs/dosfstools 

安装引导程序

Gentoo支持多种引导程序,包括GRUB、systemd-boot和LILO。这里以GRUB为例:

  1. 安装GRUB:
# 对于BIOS系统 emerge --ask sys-boot/grub grub-install --target=i386-pc /dev/sda # 对于UEFI系统 emerge --ask sys-boot/grub emerge --ask sys-fs/efivarfs grub-install --target=x86_64-efi --efi-directory=/boot 
  1. 配置GRUB:
# 生成GRUB配置文件 grub-mkconfig -o /boot/grub/grub.cfg 

完成安装

  1. 退出chroot环境:
exit 
  1. 卸载文件系统:
umount -l /mnt/gentoo/dev{/shm,/pts,} umount -R /mnt/gentoo 
  1. 重启系统:
reboot 

系统优化

更新系统

安装完成后,首先更新整个系统:

emerge --sync emerge --ask --update --deep --newuse @world 

安装桌面环境

如果您需要图形界面,可以安装桌面环境。以下以GNOME为例:

# 设置USE标志 echo "USE="X gnome -wayland"" >> /etc/portage/make.conf # 安装GNOME emerge --ask gnome-base/gnome # 启用显示管理器 rc-update add xdm default echo "exec gnome-session" > ~/.xinitrc 

系统服务优化

  1. 配置系统服务:
# 查看已启用的服务 rc-update show # 启用/禁用服务 rc-update add <service> default rc-update del <service> default 
  1. 优化启动速度:
# 安装systemd分析工具 emerge --ask sys-apps/systemd # 分析启动时间 systemd-analyze # 查看启动详情 systemd-analyze blame 

软件管理优化

  1. 使用emerge的并行构建功能:

编辑/etc/portage/make.conf

# 设置并行构建任务数(通常为CPU核心数+1) MAKEOPTS="-j5" 
  1. 使用ccache加速编译:
# 安装ccache emerge --ask dev-util/ccache # 配置ccache echo 'FEATURES="ccache"' >> /etc/portage/make.conf echo 'CCACHE_SIZE="5G"' >> /etc/portage/make.conf 
  1. 使用binhost预编译包:

如果您有多台相似的Gentoo机器,可以设置一台机器作为binhost,其他机器直接下载预编译包:

# 在binhost机器上 echo 'FEATURES="buildpkg"' >> /etc/portage/make.conf # 在客户端机器上 echo 'PORTAGE_BINHOST="http://binhost.example.com"' >> /etc/portage/make.conf echo 'FEATURES="getbinpkg"' >> /etc/portage/make.conf 

内核优化

  1. 调整内核参数:

编辑/etc/sysctl.conf

# 增加文件描述符限制 fs.file-max = 100000 # 优化网络参数 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.ipv4.tcp_rmem = 4096 87380 16777216 net.ipv4.tcp_wmem = 4096 65536 16777216 net.ipv4.tcp_congestion_control = bbr 

然后应用更改:

sysctl -p 
  1. 使用自定义内核配置:

根据您的硬件和使用场景,创建一个优化的内核配置,可以显著提高系统性能。

安全性优化

  1. 配置防火墙:
# 安装firewalld emerge --ask net-firewall/firewalld # 启用并启动firewalld systemctl enable firewalld systemctl start firewalld # 配置防火墙规则 firewall-cmd --permanent --add-service=ssh firewall-cmd --reload 
  1. 硬化系统:
# 安装安全工具 emerge --ask app-admin/sudo emerge --ask app-portage/eix emerge --ask app-portage/gentoolkit # 配置sudo visudo 
  1. 定期更新系统:
# 创建更新脚本 cat > /usr/local/bin/update-system << 'EOF' #!/bin/bash emerge --sync emerge --ask --update --deep --newuse @world emerge --ask --depclean etc-update EOF chmod +x /usr/local/bin/update-system 

常见问题与解决方案

安装过程中的常见问题

  1. 网络连接问题

    • 症状:无法连接到网络

    • 解决方案: “`bash

      检查网络接口状态

      ip a

    # 手动配置网络 ip link set eth0 up ip addr add 192.168.1.10024 dev eth0 ip route add default via 192.168.1.1 echo “nameserver 8.8.8.8” > /etc/resolv.conf “`

  2. 磁盘分区问题

    • 症状:无法创建或挂载分区

    • 解决方案: “`bash

      检查磁盘状态

      fdisk -l

    # 使用parted代替fdisk parted /dev/sda “`

  3. 编译错误

    • 症状:软件包编译失败

    • 解决方案: “`bash

      检查编译错误日志

      cat /var/tmp/portage///temp/build.log

    # 尝试减少编译优化 CFLAGS=”-O2 -pipe” emerge –ask

    # 检查USE标志冲突 emerge –ask –pretend –verbose “`

系统优化中的常见问题

  1. 启动速度慢

    • 症状:系统启动时间过长

    • 解决方案: “`bash

      分析启动时间

      systemd-analyze time systemd-analyze blame

    # 禁用不必要的服务 systemctl disable “`

  2. 软件包依赖问题

    • 症状:软件包之间存在依赖冲突

    • 解决方案: “`bash

      检查依赖关系

      emerge –ask –pretend –verbose

    # 解决冲突 emerge –ask –autounmask-write etc-update “`

  3. 性能问题

    • 症状:系统运行缓慢

    • 解决方案: “`bash

      检查系统资源使用情况

      top htop

    # 检查磁盘I/O iotop

    # 优化编译选项 nano /etc/portage/make.conf “`

总结

Gentoo Linux是一个强大而灵活的发行版,通过从源代码编译软件,它允许用户创建一个完全定制化的操作系统。虽然安装过程相对复杂,但通过本指南的详细步骤,您应该能够成功安装并优化Gentoo系统。

Gentoo的主要优势在于:

  1. 高度定制化:从编译器优化标志到系统服务,几乎所有方面都可以根据用户需求进行定制。
  2. 性能优化:通过针对特定硬件的编译优化,Gentoo可以提供比其他发行版更好的性能。
  3. 知识获取:安装和维护Gentoo的过程将帮助您深入了解Linux系统的工作原理。
  4. 社区支持:Gentoo拥有一个活跃的社区,提供丰富的文档和支持。

通过掌握Gentoo的安装和优化技巧,您将能够构建一个完全符合个人需求的操作系统,无论是作为桌面工作站、服务器还是开发环境。

随着您对Gentoo的熟悉程度提高,您可以进一步探索更高级的主题,如创建自己的ebuild、设置自定义仓库、优化系统性能等。Gentoo的学习曲线虽然陡峭,但它提供的灵活性和控制力是其他发行版无法比拟的。

祝您在Gentoo的旅程中取得成功!