快轉到主要內容
Gentoo Linux 安裝指南 (基础篇)
  1. Posts/

Gentoo Linux 安裝指南 (基础篇)

·10458 字·21 分鐘
作者
Zakk
Gentoo 中文社区现网站改版与内容维护
目錄

文章特别说明
#

本文是 Gentoo Linux 安裝指南 系列的第一部分:基础安裝

系列導航

  1. 基础安裝(本文):从零开始安裝 Gentoo 基础系統
  2. 桌面配置:顯示卡驅動、桌面環境、输入法等
  3. 进阶優化:make.conf 優化、LTO、系統維護

建議阅读方式

  • 按需阅读:基础安裝(0-11 节)→ 桌面配置(12 节)→ 进阶優化(13-17 节)

關於本指南
#

本文旨在提供一个完整的 Gentoo 安裝流程演示,并密集提供可供学习的參考文献。文章中包含大量官方 Wiki 連結和技术文件,幫助读者深入理解每个步驟的原理和配置细节。

这不是一份简单的傻瓜式教學,而是一份引導性的学习資源——使用 Gentoo 的第一步是学会自己阅读 Wiki 并解决问题,善用 Google 甚至 AI 工具寻找答案。遇到问题或需要深入了解时,请务必查阅官方手冊和本文提供的參考連結。

如果在阅读过程中遇到疑问或发现问题,欢迎透過以下渠道提出:

非常建議以官方手冊为准

✓ 已驗證至 2025 年 11 月 25 日

什么是 Gentoo?
#

Gentoo Linux 是一个基于原始碼的 Linux 发行版,以其高度可定制性效能優化著称。与其他发行版不同,Gentoo 让你从源程式碼編譯所有軟體,这意味着:

  • 极致效能:所有軟體针对你的硬體優化編譯
  • 完全掌控:你决定系統包含什么,不包含什么
  • 深度學習:透過亲手構建系統深入理解 Linux
  • 編譯时间:初次安裝需要较长时间(建議预留 3-6 小时)
  • 学习曲线:需要一定的 Linux 基础知识

适合谁?

  • 想要深入学习 Linux 的技术爱好者
  • 追求系統效能和定制化的使用者
  • 享受 DIY 过程的 Geek

不适合谁?

  • 只想快速安裝使用的新手(建議先嘗試 Ubuntu、Fedora 等)
  • 没有时间折腾系統的使用者
核心概念速览(点击展开)

在开始安裝前,先了解几个核心概念:

Stage3 (Wiki) 一个最小化的 Gentoo 基础系統壓縮套件。它包含了構建完整系統的基础工具链(編譯器、函式庫等)。你将解壓它到硬碟上,作为新系統的"地基"。

Portage (Wiki) Gentoo 的套件管理系統。它不直接安裝预編譯的軟體套件,而是下載源程式碼、根据你的配置編譯,然后安裝。核心指令是 emerge

USE Flags (Wiki) 控制軟體功能的开关。例如,USE="bluetooth" 会让所有支援蓝牙的軟體在編譯时启用蓝牙功能。这是 Gentoo 定制化的核心。

Profile (Wiki) 预设的系統配置模板。例如 desktop/plasma/systemd profile 会自動启用适合 KDE Plasma 桌面的預設 USE flags。

Emerge (Wiki) Portage 的指令行工具。常用指令:

  • emerge --ask <套件名> - 安裝軟體
  • emerge --sync - 同步軟體倉庫
  • emerge -avuDN @world - 更新整个系統
安裝时间估算(点击展开)
步驟预计时间
准备安裝媒介10-15 分钟
磁碟分割區与格式化15-30 分钟
下載并解壓 Stage35-10 分钟
配置 Portage 与 Profile15-20 分钟
編譯核心(最耗时)30 分钟 - 2 小时
安裝系統工具20-40 分钟
配置引導程式10-15 分钟
安裝桌面環境(可選)1-3 小时
总计3-6 小时(取决于硬體效能)

提示

使用预編譯核心和二进制套件可以大幅缩短时间,但会牺牲部分定制性。

磁碟空间需求与开始前检查清单(点击展开)

磁碟空间需求
#

  • 最小安裝:10 GB(无桌面環境)
  • 推薦空间:30 GB(轻量桌面)
  • 舒适空间:80 GB+(完整桌面 + 編譯快取)

开始前的检查清单
#

  • 已備份所有重要資料
  • 准备了 8GB+ 的 USB 闪存盘
  • 確認網路連接穩定(有线網路最佳)
  • 预留了充足的时间(建議完整的半天)
  • 有一定的 Linux 指令行基础
  • 准备好另一台裝置查阅文件(或者使用 GUI LiveCD)

本指南内容概览
#

本指南将引導你在 x86_64 UEFI 平台上安裝 Gentoo Linux。

本文将教你

  • 从零开始安裝 Gentoo 基础系統(分割區、Stage3、核心、引導程式)
  • 配置 Portage 并優化編譯參數(make.conf、USE flags、CPU flags)
  • 安裝桌面環境(KDE Plasma、GNOME、Hyprland)
  • 配置中文環境(locale、字型、Fcitx5 输入法)
  • 可選进阶配置(LUKS 全盘加密、LTO 優化、核心调优、RAID)
  • 系統維護(SSD TRIM、電源管理、Flatpak、系統更新)

重要提醒

请先關閉 Secure Boot
在开始安裝之前,请务必进入 BIOS 設定,将 Secure Boot 暂时關閉。開啟 Secure Boot 可能会导致安裝介质无法啟動,或者安裝后的系統无法引導。你可以在系統安裝完成并成功啟動后,再參考本指南后面的章节重新配置并開啟 Secure Boot。

備份所有重要資料!
本指南涉及磁碟分割區操作,请务必在开始前備份所有重要資料!


0. 准备安裝媒介
#

0.1 下載 Gentoo ISO
#

根据下載页面 提供的方式获取下載連結

注意

以下連結中的日期(如 20251123T...)仅供參考,请务必在鏡像站中选择最新日期的檔案。

下載 Minimal ISO(以 TWAREN 鏡像站為例):

wget http://ftp.twaren.net/Linux/Gentoo/releases/amd64/autobuilds/20251123T153051Z/install-amd64-minimal-20251123T153051Z.iso
wget http://ftp.twaren.net/Linux/Gentoo/releases/amd64/autobuilds/20251123T153051Z/install-amd64-minimal-20251123T153051Z.iso.asc

新手推薦:使用 LiveGUI USB Image

如果希望安裝时能直接使用瀏覽器或更方便地連接 Wi-Fi,可以选择 LiveGUI USB Image

新手入坑推薦使用每周構建的 KDE 桌面環境的 Live ISOhttps://iso.gig-os.org/
(来自 Gig-OS https://github.com/Gig-OS 專案)

Live ISO 登入凭据

  • 账号:live
  • 密码:live
  • Root 密码:live

系統支援

  • 支援中文顯示和中文输入法 (fcitx5), flclash 等

驗證签名(可選):

# 从密钥伺服器获取 Gentoo 發布签名公钥
gpg --keyserver hkps://keys.openpgp.org --recv-keys 0xBB572E0E2D1829105A8D0F7CF7A88992
# --keyserver: 指定密钥伺服器位址
# --recv-keys: 接收并导入公钥
# 0xBB...992: Gentoo Release Media 签名密钥指纹

# 驗證 ISO 檔案的數位签名
gpg --verify install-amd64-minimal-20251123T153051Z.iso.asc install-amd64-minimal-20251123T153051Z.iso
# --verify: 驗證签名檔案
# .iso.asc: 签名檔案(ASCII armored)
# .iso: 被驗證的 ISO 檔案

0.2 製作 USB 安裝盘
#

Linux:

sudo dd if=install-amd64-minimal-20251123T153051Z.iso of=/dev/sdX bs=4M status=progress oflag=sync
# if=输入檔案 of=输出裝置 bs=块大小 status=顯示进度

提示

请将 sdX 替換成 USB 装置名称,例如 /dev/sdb

Windows: 推薦使用 Rufus → 选择 ISO → 写入时选 DD 模式。


1. 进入 Live 環境并連接網路
#

為什麼需要這一步?

Gentoo 的安裝过程完全依賴網路来下載原始碼套件 (Stage3) 和軟體倉庫 (Portage)。在 Live 環境中配置好網路是安裝的第一步。

1.1 有线網路
#

ip link        # 查看網卡介面名称 (如 eno1, wlan0)
dhcpcd eno1    # 对有线網卡启用 DHCP 自動获取 IP
ping -c3 gentoo.org # 測試網路连通性

1.2 无线網路
#

使用 net-setup:

net-setup 

wpa_supplicant:

wpa_passphrase "SSID" "PASSWORD" | tee /etc/wpa_supplicant/wpa_supplicant.conf
wpa_supplicant -B -i wlp0s20f3 -c /etc/wpa_supplicant/wpa_supplicant.conf
dhcpcd wlp0s20f3

注意

若 WPA3 不穩定,请先退回 WPA2。

进阶設定:啟動 SSH 方便遠端操作(点击展开)
passwd                      # 设定 root 密码 (遠端登入需要)
rc-service sshd start       # 啟動 SSH 服務
rc-update add sshd default  # 設定 SSH 开机自启 (Live 環境中可選)
ip a | grep inet            # 查看当前 IP 位址
# 在另一台裝置上:ssh root@<IP>

2. 规划磁碟分割區
#

為什麼需要這一步?

我们需要为 Linux 系統划分独立的存储空间。UEFI 系統通常需要一个 ESP 分割區 (引導) 和一个根分割區 (系統)。合理的规划能让日后的維護更輕鬆。

什么是 EFI 系統分割區 (ESP)?
#

在使用由 UEFI 引導(而不是 BIOS)的操作系統上安裝 Gentoo 时,建立 EFI 系統分割區 (ESP) 是必要的。ESP 必須是 FAT 变体(有时在 Linux 系統上顯示为 vfat)。官方 UEFI 規範表示 UEFI 韌體将识别 FAT12、16 或 32 檔案系統,但建議使用 FAT32。

警告
如果 ESP 没有使用 FAT 变体进行格式化,那么系統的 UEFI 韌體将找不到引導加载程式(或 Linux 核心)并且很可能无法引導系統!

建議分割區方案(UEFI)
#

下表提供了一个可用于 Gentoo 试用安裝的推薦預設分割區表。

裝置路径掛載点檔案系統描述
/dev/nvme0n1p1/efivfatEFI 系統分割區 (ESP)
/dev/nvme0n1p2swapswap交换分割區
/dev/nvme0n1p3/xfs根分割區

cfdisk 实战範例(推薦)
#

cfdisk 是一个图形化的分割區工具,操作简单直观。

cfdisk /dev/nvme0n1

操作提示

  1. 选择 GPT 標籤類別型。
  2. 建立 ESP:新建分割區 -> 大小 1G -> 類別型选择 EFI System
  3. 建立 Swap:新建分割區 -> 大小 4G -> 類別型选择 Linux swap
  4. 建立 Root:新建分割區 -> 剩余空间 -> 類別型选择 Linux filesystem (預設)。
  5. 选择 Write 写入更改,输入 yes 確認。
  6. 选择 Quit 退出。
                                                                 Disk: /dev/nvme0n1
                                              Size: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
                                            Label: gpt, identifier: 9737D323-129E-4B5F-9049-8080EDD29C02

    裝置                                       Start                   终点                  扇区               Size 類別型
    /dev/nvme0n1p1                                34                  32767                 32734                16M Microsoft reserved
    /dev/nvme0n1p2                             32768              879779839             879747072             419.5G Microsoft basic data
    /dev/nvme0n1p3                        1416650752             1418747903               2097152                 1G EFI System
    /dev/nvme0n1p4                        1418747904             1437622271              18874368                 9G Linux swap
    /dev/nvme0n1p5                        1437622272             1953523711             515901440               246G Linux filesystem
>>  /dev/nvme0n1p6                         879779840             1416650751             536870912               256G Linux filesystem

 ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
 │  Partition UUID: F2F1EF58-82EA-46A6-BF49-896AA40C6060                                                                                           │
 │  Partition type: Linux filesystem (0FC63DAF-8483-4772-8E79-3D69D8477DE4)                                                                        │
 │ Filesystem UUID: b4b0b42d-20be-4cf8-be81-9775efa6c151                                                                                           │
 │Filesystem LABEL: crypthomevar                                                                                                                   │
 │      Filesystem: crypto_LUKS                                                                                                                    │
 └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
                                   [ 刪除 ]  [Resize]  [ 退出 ]  [ 類別型 ]  [ 幫助 ]  [ 排序 ]  [ 写入 ]  [ 导出 ]


                                                        Quit program without writing changes
进阶設定:fdisk 指令行分割區教學(点击展开)

fdisk 是一个功能强大的指令行分割區工具。

fdisk /dev/nvme0n1

1. 查看当前分割區佈局

使用 p 鍵来顯示磁碟当前的分割區配置。

Command (m for help): p
Disk /dev/nvme0n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: NVMe SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

Device           Start        End    Sectors   Size Type
/dev/nvme0n1p1    2048    2099199    2097152     1G EFI System
/dev/nvme0n1p2 2099200   10487807    8388608     4G Linux swap
/dev/nvme0n1p3 10487808 1953523711 1943035904 926.5G Linux root (x86-64)

2. 建立一个新的磁碟標籤

按下 g 鍵将立即刪除所有现有的磁碟分割區并建立一个新的 GPT 磁碟標籤:

Command (m for help): g
Created a new GPT disklabel (GUID: ...).

或者,要保留现有的 GPT 磁碟標籤,可以使用 d 鍵逐个刪除现有分割區。

3. 建立 EFI 系統分割區 (ESP)

输入 n 建立一个新分割區,选择分割區号 1,起始扇区預設(2048),结束扇区输入 +1G

Command (m for help): n
Partition number (1-128, default 1): 1
First sector (2048-..., default 2048): <Enter>
Last sector, +/-sectors or +/-size{K,M,G,T,P} (...): +1G

Created a new partition 1 of type 'Linux filesystem' and of size 1 GiB.
Partition #1 contains a vfat signature.

Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.

将分割區標記为 EFI 系統分割區(類別型程式碼 1):

Command (m for help): t
Selected partition 1
Partition type or alias (type L to list all): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.

4. 建立 Swap 分割區

建立 4GB 的 Swap 分割區:

Command (m for help): n
Partition number (2-128, default 2): 2
First sector (...): <Enter>
Last sector (...): +4G

Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.

Command (m for help): t
Partition number (1,2, default 2): 2
Partition type or alias (type L to list all): 19
Changed type of partition 'Linux filesystem' to 'Linux swap'.

(注:Type 19 是 Linux swap)

5. 建立根分割區

将剩余空间分配给根分割區:

Command (m for help): n
Partition number (3-128, default 3): 3
First sector (...): <Enter>
Last sector (...): <Enter>

Created a new partition 3 of type 'Linux filesystem' and of size 926.5 GiB.

注意

将根分割區的類別型設定为 “Linux root (x86-64)” 并不是必須的,如果将其設定为 “Linux filesystem” 類別型,系統也能正常运行。只有在使用支援它的 bootloader (即 systemd-boot) 并且不需要 fstab 檔案时,才需要这种檔案系統類別型。

設定分割區類別型为 “Linux root (x86-64)"(類別型程式碼 23):

Command (m for help): t
Partition number (1-3, default 3): 3
Partition type or alias (type L to list all): 23
Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'.

6. 写入更改

检查无误后,输入 w 写入更改并退出:

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

3. 建立檔案系統并掛載
#

為什麼需要這一步?

磁碟分割區只是划分了空间,但还不能存储資料。建立檔案系統 (如 ext4, Btrfs) 才能让操作系統管理和访问这些空间。掛載则是将这些檔案系統連接到 Linux 檔案树的特定位置。

3.1 格式化
#

mkfs.fat -F 32 /dev/nvme0n1p1  # 格式化 ESP 分割區为 FAT32
mkswap /dev/nvme0n1p2          # 格式化 Swap 分割區
mkfs.xfs /dev/nvme0n1p3        # 格式化 Root 分割區为 XFS

若使用 Btrfs:

mkfs.btrfs -L gentoo /dev/nvme0n1p3

若使用 ext4:

mkfs.ext4 /dev/nvme0n1p3

其他檔案系統

其他如 F2FSZFS 请參考相关 Wiki。

3.2 掛載(XFS 範例)
#

mount /dev/nvme0n1p3 /mnt/gentoo        # 掛載根分割區
mkdir -p /mnt/gentoo/efi                # 建立 ESP 掛載点
mount /dev/nvme0n1p1 /mnt/gentoo/efi    # 掛載 ESP 分割區
swapon /dev/nvme0n1p2                   # 启用 Swap 分割區
进阶設定:Btrfs 子卷範例(点击展开)

1. 格式化

mkfs.fat -F 32 /dev/nvme0n1p1  # 格式化 ESP
mkswap /dev/nvme0n1p2          # 格式化 Swap
mkfs.btrfs -L gentoo /dev/nvme0n1p3 # 格式化 Root (Btrfs)

2. 建立子卷

mount /dev/nvme0n1p3 /mnt/gentoo
btrfs subvolume create /mnt/gentoo/@
btrfs subvolume create /mnt/gentoo/@home
umount /mnt/gentoo

3. 掛載子卷

mount -o compress=zstd,subvol=@ /dev/nvme0n1p3 /mnt/gentoo
mkdir -p /mnt/gentoo/{efi,home}
mount -o subvol=@home /dev/nvme0n1p3 /mnt/gentoo/home
mount /dev/nvme0n1p1 /mnt/gentoo/efi    # 注意:ESP 必須是 FAT32 格式
swapon /dev/nvme0n1p2

4. 驗證掛載

lsblk

输出範例:

NAME             MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1          259:1    0 931.5G  0 disk  
├─nvme0n1p1      259:7    0     1G  0 part  /mnt/gentoo/efi
├─nvme0n1p2      259:8    0     4G  0 part  [SWAP]
└─nvme0n1p3      259:9    0 926.5G  0 part  /mnt/gentoo/home
                                            /mnt/gentoo

Btrfs 快照建議

推薦使用 Snapper 管理快照。合理的子卷规划(如将 @@home 分开)能让系統回滚更加輕鬆。

进阶設定:加密分割區(LUKS)(点击展开)

1. 建立加密容器

cryptsetup luksFormat --type luks2 --pbkdf argon2id --hash sha512 --key-size 512 /dev/nvme0n1p3

2. 打开加密容器

cryptsetup luksOpen /dev/nvme0n1p3 gentoo-root

3. 格式化

mkfs.fat -F 32 /dev/nvme0n1p1       # 格式化 ESP
mkswap /dev/nvme0n1p2               # 格式化 Swap
mkfs.btrfs --label root /dev/mapper/gentoo-root # 格式化 Root (Btrfs)

4. 掛載

mount /dev/mapper/gentoo-root /mnt/gentoo
mkdir -p /mnt/gentoo/efi
mount /dev/nvme0n1p1 /mnt/gentoo/efi
swapon /dev/nvme0n1p2

5. 驗證掛載

lsblk

输出範例:

NAME             MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
nvme0n1          259:1    0 931.5G  0 disk  
├─nvme0n1p1      259:7    0     1G  0 part  /mnt/gentoo/efi
├─nvme0n1p2      259:8    0     4G  0 part  [SWAP]
└─nvme0n1p3      259:9    0 926.5G  0 part  
  └─gentoo-root  253:0    0 926.5G  0 crypt /mnt/gentoo

建議

掛載完成后,建議使用 lsblk 確認掛載点是否正确。

lsblk

输出範例(類別似如下):

NAME             MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
 nvme0n1          259:1    0 931.5G  0 disk  
├─nvme0n1p1      259:7    0     1G  0 part  /efi
├─nvme0n1p2      259:8    0     4G  0 part  [SWAP]
└─nvme0n1p3      259:9    0 926.5G  0 part  /

4. 下載 Stage3 并进入 chroot
#

為什麼需要這一步?

Stage3 是一个最小化的 Gentoo 基础系統環境。我们将它解壓到硬碟上,作为新系統的"地基”,然后透過 chroot 进入这个新環境进行后续配置。

4.1 选择 Stage3
#

  • OpenRCstage3-amd64-openrc-*.tar.xz
  • systemdstage3-amd64-systemd-*.tar.xz
  • Desktop 变种只是预设開啟部分 USE,標準版更灵活。

4.2 下載与展开
#

cd /mnt/gentoo
# 使用 links 瀏覽器访问鏡像站下載 Stage3
links http://ftp.twaren.net/Linux/Gentoo/releases/amd64/autobuilds/20251123T153051Z/ #以 TWAREN 鏡像站為例
# 解壓 Stage3 壓縮套件
# x:解壓 p:保留权限 v:顯示过程 f:指定檔案 --numeric-owner:使用數位ID
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

如果同时下載了 .DIGESTS.CONTENTS,可以用 opensslgpg 驗證。

4.3 複製 DNS 并掛載伪檔案系統
#

cp --dereference /etc/resolv.conf /mnt/gentoo/etc/ # 複製 DNS 配置
mount --types proc /proc /mnt/gentoo/proc          # 掛載进程資訊
mount --rbind /sys /mnt/gentoo/sys                 # 绑定掛載系統資訊
mount --rbind /dev /mnt/gentoo/dev                 # 绑定掛載裝置节点
mount --rbind /run /mnt/gentoo/run                 # 绑定掛載运行时資訊
mount --make-rslave /mnt/gentoo/sys                # 設定为从属掛載 (防止卸載时影响宿主)
mount --make-rslave /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/run

使用 OpenRC 可以省略 /run 這一步。

4.4 进入 chroot
#

chroot /mnt/gentoo /bin/bash    # 切换根目錄到新系統
source /etc/profile             # 加载環境變數
export PS1="(chroot) ${PS1}"    # 修改提示符以区分環境

5. 初始化 Portage 与 make.conf
#

為什麼需要這一步?

Portage 是 Gentoo 的套件管理系統,也是其核心特色。初始化 Portage 并配置 make.conf 就像为你的新系統设定了「構建蓝图」,决定了軟體如何編譯、使用哪些功能以及从哪里下載。

5.1 同步树
#

emerge-webrsync   # 获取最新的 Portage 快照 (比 rsync 快)
emerge --sync     # 同步 Portage 树 (获取最新 ebuild)
emerge --ask app-editors/vim # 安裝 Vim 編輯器 (推薦)
eselect editor list          # 列出可用編輯器
eselect editor set vi        # 将 Vim 設定为預設編輯器 (vi 通常是指向 vim 的软連結)

設定鏡像(择一):

mirrorselect -i -o >> /etc/portage/make.conf
# 或手動:
#以 TWAREN 鏡像站為例
echo 'GENTOO_MIRRORS="http://ftp.twaren.net/Linux/Gentoo/"' >> /etc/portage/make.conf

5.2 make.conf 范例
#

編輯 /etc/portage/make.conf

vim /etc/portage/make.conf

懒人/新手配置(複製貼上)

提示

请根据你的 CPU 核心数修改 MAKEOPTS 中的 -j 參數(例如 8 核 CPU 使用 -j8)。

COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"

# 请根据 CPU 核心数修改 -j 后面的數位
MAKEOPTS="-j8"

# 语言設定
LC_MESSAGES=C
L10N="en en-US zh zh-CN zh-TW"
LINGUAS="en en_US zh zh_CN zh_TW"

# 鏡像源 (TWAREN)
GENTOO_MIRRORS="http://ftp.twaren.net/Linux/Gentoo/"

# 常用 USE 标志 (systemd 使用者推薦)
USE="systemd udev dbus policykit networkmanager bluetooth git dist-kernel"
ACCEPT_LICENSE="*"
詳細配置范例(建議阅读并调整)(点击展开)
# vim: set language=bash;  # 告诉 Vim 使用 bash 语法高亮
CHOST="x86_64-pc-linux-gnu"  # 目標系統架構(不要手動修改)

# ========== 編譯優化參數 ==========
# -march=native: 针对当前 CPU 優化(推薦,效能最佳)
# -O2: 優化级别 2(平衡效能与穩定性,推薦)
# -pipe: 使用管道传递資料,加速編譯(不影响最终程式)
COMMON_FLAGS="-march=native -O2 -pipe"
CFLAGS="${COMMON_FLAGS}"    # C 程式編譯选项
CXXFLAGS="${COMMON_FLAGS}"  # C++ 程式編譯选项
FCFLAGS="${COMMON_FLAGS}"   # Fortran 程式編譯选项
FFLAGS="${COMMON_FLAGS}"    # Fortran 77 程式編譯选项

# CPU 指令集優化(见下文 5.3,运行 cpuid2cpuflags 自動生成)
# CPU_FLAGS_X86="aes avx avx2 ..."

# ========== 语言与本機化設定 ==========
# 保持構建输出为英文(便于排错和搜尋解决方案)
LC_MESSAGES=C

# L10N: 本機化支援(影响文件、翻译等)
L10N="en en-US zh zh-CN zh-TW"
# LINGUAS: 旧式本機化變數(部分軟體仍需要)
LINGUAS="en en_US zh zh_CN zh_TW"

# ========== 并行編譯設定 ==========
# -j 后面的數位 = CPU 线程数(例如 32 核心 CPU 用 -j32)
# 推薦值:CPU 线程数(可透過 nproc 指令查看)
MAKEOPTS="-j32"  # 请根据实际硬體调整

# ========== 鏡像源設定 ==========
# Gentoo 軟體套件下載鏡像(建議選擇合適的鏡像加速)
GENTOO_MIRRORS="http://ftp.twaren.net/Linux/Gentoo/"

# ========== Emerge 預設选项 ==========
# --ask: 执行前询问確認
# --verbose: 顯示詳細資訊(USE 标志变化等)
# --with-bdeps=y: 包含構建时依賴
# --complete-graph=y: 完整依賴图分析
EMERGE_DEFAULT_OPTS="--ask --verbose --with-bdeps=y --complete-graph=y"

# ========== USE 标志(全局功能开关)==========
# systemd: 使用 systemd 作为 init 系統(若用 OpenRC 则改为 -systemd)
# udev: 裝置管理支援
# dbus: 进程间通信(桌面環境必需)
# policykit: 权限管理(桌面環境必需)
# networkmanager: 網路管理器(推薦)
# bluetooth: 蓝牙支援
# git: Git 版本控制
# dist-kernel: 使用发行版核心(新手推薦,可用预編譯核心)
USE="systemd udev dbus policykit networkmanager bluetooth git dist-kernel"

# ========== 许可证接受 ==========
# "*" 表示接受所有许可证(包括非自由軟體许可证)
# 可選择性接受:ACCEPT_LICENSE="@FREE"(仅自由軟體)
ACCEPT_LICENSE="*"

# 檔案末尾保留换行符!重要!

新手提示

  • MAKEOPTS="-j32" 的數位应该是你的 CPU 线程数,可透過 nproc 指令查看
  • 如果編譯时記憶體不足,可以减少并行任務数(如改为 -j16
  • USE 标志是 Gentoo 的核心特性,决定了軟體編譯时包含哪些功能
进阶設定:CPU 指令集優化 (CPU_FLAGS_X86)(点击展开)

可參考CPU_FLAGS_*

为了让 Portage 知道你的 CPU 支援哪些特定指令集(如 AES, AVX, SSE4.2 等),我们需要配置 CPU_FLAGS_X86

安裝检测工具:

emerge --ask app-portage/cpuid2cpuflags # 安裝检测工具

运行检测并写入配置:

cpuid2cpuflags >> /etc/portage/make.conf # 将检测結果追加到配置檔案

检查 /etc/portage/make.conf 末尾,你应该会看到類別似这样的一行:

CPU_FLAGS_X86="aes avx avx2 f16c fma3 mmx mmxext pclmul popcnt rdrand sse sse2 sse3 sse4_1 sse4_2 ssse3"

6. Profile、系統設定与本機化
#

為什麼需要這一步?

Profile 定义了系統的基础配置和预设 USE 旗标,是 Gentoo 灵活性的体现。配置时区、语言和網路等基本系統參數,是让你的 Gentoo 系統能够正常运作并符合個人使用习惯的關鍵。

6.1 选择 Profile
#

eselect profile list          # 列出所有可用 Profile
eselect profile set <编号>    # 設定选定的 Profile
emerge -avuDN @world          # 更新系統以匹配新 Profile (a:询问 v:詳細 u:升級 D:深层依賴 N:新USE)

常见选项:

  • default/linux/amd64/23.0/desktop/plasma/systemd
  • default/linux/amd64/23.0/desktop/gnome/systemd
  • default/linux/amd64/23.0/desktop(OpenRC 桌面)

6.2 时区与语言
#

echo "Asia/Shanghai" > /etc/timezone
emerge --config sys-libs/timezone-data

echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
locale-gen                      # 生成选定的语言環境
eselect locale set en_US.utf8   # 設定系統預設语言 (建議用英文以免乱码)

# 重新加载環境
env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

6.3 主机名与網路設定
#

設定主机名

echo "gentoo" > /etc/hostname

網路管理工具选择

方案 A:NetworkManager (推薦,通用)

可參考NetworkManager

适合大多数桌面使用者,同时支援 OpenRC 和 systemd。

emerge --ask net-misc/networkmanager
# OpenRC:
rc-update add NetworkManager default
# systemd:
systemctl enable NetworkManager

配置提示

图形介面:运行 nm-connection-editor
指令行:使用 nmtui (图形化向导) 或 nmcli

进阶提示:使用 iwd 后端(点击展开)

NetworkManager 支援使用 iwd 作为后端(比 wpa_supplicant 更快)。

echo "net-misc/networkmanager iwd" >> /etc/portage/package.use/networkmanager
emerge --ask --newuse net-misc/networkmanager

之后編輯 /etc/NetworkManager/NetworkManager.conf,在 [device] 下新增 wifi.backend=iwd

方案 B:轻量方案(点击展开)

如果你不想使用 NetworkManager,可以选择以下轻量级方案:

  1. 有线網路 (dhcpcd)

可參考dhcpcd

emerge --ask net-misc/dhcpcd
# OpenRC:
rc-update add dhcpcd default
# systemd:
systemctl enable dhcpcd
  1. 无线網路 (iwd)

可參考iwd

emerge --ask net-wireless/iwd
# OpenRC:
rc-update add iwd default
# systemd:
systemctl enable iwd

提示:iwd 是一个现代、轻量级的无线守护进程。

方案 3:原生方案(点击展开)

使用 init 系統自带的網路管理功能,适合伺服器或极简環境。

OpenRC 網卡服務

vim /etc/conf.d/net

注意

请将下文中的 enp5s0 替換为你实际的網卡介面名称(透過 ip link 查看)。

写入以下内容:

config_enp5s0="dhcp"
ln -s /etc/init.d/net.lo /etc/init.d/net.enp5s0 # 建立網卡服務软連結
rc-update add net.enp5s0 default                # 設定开机自启

Systemd 原生網卡服務

Systemd 自带了網路管理功能,适合伺服器或极简環境:

systemctl enable systemd-networkd
systemctl enable systemd-resolved

注意:需要手動编写 .network 配置檔案。

6.4 配置 fstab
#

获取 UUID:

blkid

方法 A:自動生成(推薦 LiveGUI 使用者)

注意

genfstab 工具通常包含在 arch-install-scripts 套件中。如果你使用的是 Gig-OS 或其他基于 Arch 的 LiveISO,可以直接使用。官方 Minimal ISO 可能需要手動安裝或使用方法 B。

emerge --ask sys-fs/genfstab # 如果没有该指令
genfstab -U /mnt/gentoo >> /mnt/gentoo/etc/fstab

检查生成的檔案:

cat /mnt/gentoo/etc/fstab

方法 B:手動編輯

編輯 /etc/fstab

vim /etc/fstab
# <fs>                                     <mountpoint> <type> <opts>            <dump/pass>
UUID=7E91-5869                             /efi         vfat   defaults,noatime  0 2
UUID=7fb33b5d-4cff-47ff-ab12-7b461b5d6e13  none         swap   sw                0 0
UUID=8c08f447-c79c-4fda-8c08-f447c79ce690  /            xfs    defaults,noatime  0 1
进阶設定:Btrfs fstab 範例(点击展开)
# Root Subvolume
UUID=7b44c5eb-caa0-413b-9b7e-a991e1697465  /            btrfs  defaults,noatime,compress=zstd:3,discard=async,space_cache=v2,commit=60,subvol=@              0 0

# Home Subvolume
UUID=7b44c5eb-caa0-413b-9b7e-a991e1697465  /home        btrfs  defaults,noatime,compress=zstd:3,discard=async,space_cache=v2,commit=60,subvol=@home          0 0

# Swap
UUID=7fb33b5d-4cff-47ff-ab12-7b461b5d6e13  none         swap   sw                                                      0 0

# ESP (UEFI)
UUID=7E91-5869                             /efi         vfat   defaults,noatime,fmask=0022,dmask=0022                  0 2

注意

请务必使用 blkid 指令获取你实际的 UUID 并替換上面的範例值。

进阶設定:LUKS 加密分割區 fstab 範例(点击展开)

關鍵点

fstab 中,必須使用 解密后映射裝置 (Mapped Device) 的 UUID,而不是物理分割區 (LUKS Container) 的 UUID。

1. 查看 UUID 区别

blkid

输出範例(注意区分 crypto_LUKSbtrfs):

# 这是物理分割區 (LUKS 容器),不要在 fstab 中使用这个 UUID!
/dev/nvme0n1p5: UUID="562d0251-..." TYPE="crypto_LUKS" ...

# 这是解密后的映射裝置 (檔案系統),fstab 应该用这个 UUID!
/dev/mapper/cryptroot: UUID="7b44c5eb-..." TYPE="btrfs" ...

2. fstab 配置範例

# Root (Btrfs inside LUKS) - 使用 /dev/mapper/cryptroot 的 UUID
UUID=7b44c5eb-caa0-413b-9b7e-a991e1697465  /            btrfs  defaults,noatime,compress=zstd:3,discard=async,space_cache=v2,commit=60,subvol=@              0 0

# Home (Btrfs inside LUKS) - 使用 /dev/mapper/crypthomevar 的 UUID
UUID=4ad44bb7-9843-470b-9a88-f008367b63a3  /home        btrfs  defaults,noatime,compress=zstd:3,discard=async,space_cache=v2,commit=60,subvol=@home          0 0

# Swap
UUID=7fb33b5d-4cff-47ff-ab12-7b461b5d6e13  none         swap   sw                                                      0 0

# ESP (UEFI)
UUID=7E91-5869                             /efi         vfat   defaults,noatime,fmask=0022,dmask=0022                  0 2

7. 核心与韌體
#

為什麼需要這一步?

核心是操作系統的核心,负责管理硬體。Gentoo 允许你手動裁剪核心,只保留你需要的驅動,从而获得极致的效能和精简的体积。新手也可以选择预編譯核心快速上手。

7.1 快速方案:预編譯核心
#

emerge --ask sys-kernel/gentoo-kernel-bin

核心升級后记得重新生成引導程式配置。

进阶設定:手動編譯核心 (Gentoo 核心體驗)(点击展开)

新手提示

編譯核心比较复杂且耗时。如果你想尽快體驗 Gentoo,可以先跳过本节,使用 7.1 的预編譯核心。

手動編譯核心能让你完全掌控系統功能,移除不需要的驅動,获得更精简、高效的核心。

快速开始(使用 Genkernel 自動化):

emerge --ask sys-kernel/gentoo-sources sys-kernel/genkernel
genkernel --install all  # 自動編譯并安裝核心、模組和 initramfs
# --install: 編譯完成后自動安裝到 /boot 目錄
# all: 完整構建 (核心 + 模組 + initramfs)

进阶内容

如果你想深入了解核心配置、使用 LLVM/Clang 編譯核心、启用 LTO 優化等高级选项,请參考 Section 16.0 核心編譯进阶指南

7.3 安裝韌體与微码
#

mkdir -p /etc/portage/package.license
# 同意 Linux 韌體的授權条款
echo 'sys-kernel/linux-firmware linux-fw-redistributable no-source-code' > /etc/portage/package.license/linux-firmware
echo 'sys-kernel/installkernel dracut' > /etc/portage/package.use/installkernel
emerge --ask sys-kernel/linux-firmware
emerge --ask sys-firmware/intel-microcode  # Intel CPU

8. 基础工具
#

為什麼需要這一步?

Stage3 只有最基础的指令。我们需要补充系統日誌、網路管理、檔案系統工具等必要元件,才能让系統在重啟后正常工作。

8.1 系統服務工具
#

OpenRC 使用者(必选):

1. 系統日誌

可參考Syslog-ng

emerge --ask app-admin/syslog-ng
rc-update add syslog-ng default

2. 定时任務

emerge --ask sys-process/cronie
rc-update add cronie default

3. 时间同步

emerge --ask net-misc/chrony
rc-update add chronyd default

systemd 使用者: systemd 已内置日誌与时间同步服務。

时间同步

systemctl enable --now systemd-timesyncd

8.3 檔案系統工具
#

根据你使用的檔案系統安裝对应工具(必选):

emerge --ask sys-fs/e2fsprogs  # ext4
emerge --ask sys-fs/xfsprogs   # XFS
emerge --ask sys-fs/dosfstools # FAT/vfat (EFI 分割區需要)
emerge --ask sys-fs/btrfs-progs # Btrfs

9. 建立使用者与权限
#

為什麼需要這一步?

Linux 不建議日常使用 root 帳戶。我们需要建立一个普通使用者,并赋予其使用 sudo 的权限,以提高系統安全性。

passwd root # 設定 root 密码
useradd -m -G wheel,video,audio,plugdev zakk # 建立使用者并加入常用组
passwd zakk # 設定使用者密码
emerge --ask app-admin/sudo
echo "%wheel ALL=(ALL) ALL" > /etc/sudoers.d/wheel # 允许 wheel 组使用 sudo

若使用 systemd,可视需求将账号加入 networklp 等群组。


10. 安裝引導程式
#

10.1 GRUB
#

可參考GRUB

emerge --ask sys-boot/grub:2
mkdir -p /efi/EFI/Gentoo
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Gentoo # 安裝 GRUB 到 ESP
# 安裝 os-prober 以支援多系統检测
emerge --ask sys-boot/os-prober

# 启用 os-prober(用于检测 Windows 等其他操作系統)
echo 'GRUB_DISABLE_OS_PROBER=false' >> /etc/default/grub

# 生成 GRUB 配置檔案
grub-mkconfig -o /boot/grub/grub.cfg
进阶設定:systemd-boot (仅限 UEFI)(点击展开)

可參考systemd-boot

bootctl --path=/efi install # 安裝 systemd-boot

# 1. 建立 Gentoo 引導项
vim /efi/loader/entries/gentoo.conf

写入以下内容(注意替換 UUID):

title   Gentoo Linux
linux   /vmlinuz-6.6.62-gentoo-dist
initrd  /initramfs-6.6.62-gentoo-dist.img
options root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rw quiet

注意

如果你使用了 LUKS 加密,options 行需要新增 rd.luks.uuid=... 等參數。

2. 更新引導项: 每次更新核心后,需要手動更新 gentoo.conf 中的版本号,或者使用腳本自動化。

2. 建立 Windows 引導项 (双系統)

提示

如果你建立了新的 EFI 分割區,请记得将原 Windows EFI 檔案 (EFI/Microsoft) 複製到新分割區。

vim /efi/loader/entries/windows.conf

写入以下内容:

title      Windows 11
sort-key   windows-01
efi        /EFI/Microsoft/Boot/bootmgfw.efi

3. 配置預設引導
#

vim /efi/loader/loader.conf

写入以下内容:

default gentoo.conf
timeout 3
console-mode auto
进阶設定:加密支援(仅加密使用者)(点击展开)

可參考Dm-crypt

注意

如果你在步驟 3.4 中选择了加密分割區,才需要执行此步驟。

步驟 1:启用 systemd cryptsetup 支援

mkdir -p /etc/portage/package.use
echo "sys-apps/systemd cryptsetup" >> /etc/portage/package.use/fde

# 重新編譯 systemd 以启用 cryptsetup 支援
emerge --ask --oneshot sys-apps/systemd

步驟 2:获取 LUKS 分割區的 UUID

# 获取 LUKS 加密容器的 UUID(不是里面的檔案系統 UUID)
blkid /dev/nvme0n1p3

输出範例:

/dev/nvme0n1p3: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="crypto_LUKS" ...

记下这个 LUKS UUID(例如:a1b2c3d4-e5f6-7890-abcd-ef1234567890)。

步驟 3:配置 GRUB 核心參數

vim /etc/default/grub

加入或修改以下内容(替換 UUID 为实际值):

# 完整範例(替換 UUID 为你的实际 UUID)
GRUB_CMDLINE_LINUX="rd.luks.uuid=<LUKS-UUID> rd.luks.allow-discards root=UUID=<ROOT-UUID> rootfstype=btrfs"

參數说明

  • rd.luks.uuid=<UUID>:LUKS 加密分割區的 UUID(使用 blkid /dev/nvme0n1p3 获取)
  • rd.luks.allow-discards:允许 SSD TRIM 指令穿透加密层(提升 SSD 效能)
  • root=UUID=<UUID>:解密后的 btrfs 檔案系統 UUID(使用 blkid /dev/mapper/gentoo-root 获取)
  • rootfstype=btrfs:根檔案系統類別型(如果使用 ext4 改为 ext4
步驟 3.1(替代方案):配置核心參數 (systemd-boot 方案)(点击展开)

如果你使用 systemd-boot 而不是 GRUB,请編輯 /boot/loader/entries/ 下的配置檔案(例如 gentoo.conf):

title      Gentoo Linux
version    6.6.13-gentoo
options    rd.luks.name=<LUKS-UUID>=cryptroot root=/dev/mapper/cryptroot rootfstype=btrfs rd.luks.allow-discards init=/lib/systemd/systemd
linux      /vmlinuz-6.6.13-gentoo
initrd     /initramfs-6.6.13-gentoo.img

參數说明

  • rd.luks.name=<LUKS-UUID>=cryptroot:指定 LUKS 分割區 UUID 并映射为 cryptroot
  • root=/dev/mapper/cryptroot:指定解密后的根分割區裝置。
  • rootfstype=btrfs:指定根檔案系統類別型。

步驟 4:安裝并配置 dracut

可參考Dracut · Initramfs

# 安裝 dracut(如果还没安裝)
emerge --ask sys-kernel/dracut

步驟 5:配置 dracut for LUKS 解密

建立 dracut 配置檔案:

vim /etc/dracut.conf.d/luks.conf

加入以下内容:

# 不要在这里設定 kernel_cmdline,GRUB 会覆盖它
kernel_cmdline=""
# 新增必要的模組支援 LUKS + btrfs
add_dracutmodules+=" btrfs systemd crypt dm "
# 新增必要的工具
install_items+=" /sbin/cryptsetup /bin/grep "
# 指定檔案系統(如果使用其他檔案系統请修改)
filesystems+=" btrfs "

配置说明

  • cryptdm 模組提供 LUKS 解密支援
  • systemd 模組用于 systemd 啟動環境
  • btrfs 模組支援 btrfs 檔案系統(如果使用 ext4 改为 ext4

步驟 6:配置 /etc/crypttab(可選但推薦)
#

vim /etc/crypttab

加入以下内容(替換 UUID 为你的 LUKS UUID):

gentoo-root UUID=<LUKS-UUID> none luks,discard

这样配置后,系統会自動识别并提示解锁加密分割區。

步驟 7:重新生成 initramfs
#

# 重新生成 initramfs(包含 LUKS 解密模組)
dracut --kver $(make -C /usr/src/linux -s kernelrelease) --force
# --kver: 指定核心版本
# $(make -C /usr/src/linux -s kernelrelease): 自動获取当前核心版本号
# --force: 强制覆盖已存在的 initramfs 檔案

重要:每次更新核心后,也需要重新执行此指令生成新的 initramfs!

步驟 8:更新 GRUB 配置
#

grub-mkconfig -o /boot/grub/grub.cfg

# 驗證 initramfs 被正确引用
grep initrd /boot/grub/grub.cfg

11. 重啟前检查清单与重啟
#

  1. emerge --info 正常执行无錯誤
  2. /etc/fstab 中的 UUID 正确(使用 blkid 再確認)
  3. 已设定 root 与一般使用者密码
  4. 已执行 grub-mkconfig 或完成 bootctl 配置
  5. 若使用 LUKS,確認 initramfs 含有 cryptsetup

离开 chroot 并重啟:

exit
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
swapoff -a
reboot

恭喜! 你已经完成了 Gentoo 的基础安裝。

下一步桌面配置

相關文章

網站從 Jekyll 遷移至 Hugo

·1150 字·3 分鐘
經過多年使用 Jekyll 作為靜態站點產生器,Gentoo 中文社群網站現已成功遷移至 Hugo。本文介紹此次遷移的背景、原因和主要改進。