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

Gentoo Linux 安裝指南 (基礎篇)

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

文章特別說明

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

系列導航

  1. 基礎安裝(本文):從零開始安裝 Gentoo 基礎系統
  2. 桌面配置:顯示卡驅動、桌面環境、輸入法等
  3. 進階優化:make.conf 優化、LTO、系統維護

建議閱讀方式

  • 按需閱讀:基礎安裝(0-11 節)→ 桌面配置(12 節)→ 進階優化(13-17 節)

關於本指南
#

本文旨在提供一個完整的 Gentoo 安裝流程演示,並密集提供可供學習的參考文獻。文章中包含大量官方 Wiki 連結和技術文件,幫助讀者深入理解每個步驟的原理和配置細節。

這不是一份簡單的傻瓜式教程,而是一份引導性的學習資源——使用 Gentoo 的第一步是學會自己閱讀 Wiki 並解決問題,善用 Google 甚至 AI 工具尋找答案。遇到問題或需要深入了解時,請務必查閱官方手冊和本文提供的參考連結。

如果在閱讀過程中遇到疑問或發現問題,歡迎透過以下管道提出:

非常建議以官方手冊為準

本文為新遷移內容,如有不足之處敬請見諒。


什麼是 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 輸入法)
  • 可選進階配置(加密分割區、LTO 優化、核心調優、RAID)
  • 系統維護(SSD TRIM、電源管理、Flatpak、系統更新)

請先關閉 Secure Boot 在開始安裝之前,請務必進入 BIOS 設定,將 Secure Boot 暫時關閉。 開啟 Secure Boot 可能會導致安裝媒介無法啟動,或者安裝後的系統無法引導。你可以在系統安裝完成並成功啟動後,再參考本指南後面的章節重新配置並開啟 Secure Boot。

重要:開始前請務必備份所有重要資料!本指南涉及磁碟分割操作。

已驗證至 2025 年 11 月 25 日。


0. 準備安裝媒介
#

可參考Gentoo Handbook: AMD64 - 選擇安裝媒介

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

如果希望安裝時能直接使用瀏覽器或更方便地連接 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 Handbook: AMD64 - 配置網路

為什麼需要這一步? 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. 規劃磁碟分割區
#

可參考Gentoo Handbook: AMD64 - 準備磁碟

為什麼需要這一步? 我們需要為 Linux 系統劃分獨立的儲存空間。UEFI 系統通常需要一個 ESP 分割區 (引導) 和一個根分割區 (系統)。合理的規劃能讓日後的維護更輕鬆。

檢查磁碟:

lsblk -o NAME,SIZE,TYPE

啟動 cfdiskgdisk

cfdisk /dev/nvme0n1

建議分割區方案(UEFI)
#

分割區大小檔案系統掛載點備註
ESP512 MBFAT32/efitype EF00
Boot1 GBext4/boot存放 kernel / initramfs
Root80~120 GBext4 / XFS / Btrfs/系統與應用
Home餘量ext4 / XFS / Btrfs/home使用者資料
Swap(可選)記憶體的 1~2 倍swapswapSSD 可改用 zram

如果你想要最簡設定,可以只保留 /efi + / 兩個分割區。

伺服器/RAID 使用者:如果需要配置軟體 RAID (mdadm),請參考 Section 17. 伺服器與 RAID 配置。RAID 配置需要在格式化之前完成。

cfdisk 實戰範例
#

                               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 name: Microsoft reserved partition                                │
 │Partition UUID: 035B96B8-E321-4388-9C55-9FC0700AFF46                        │
 │Partition type: Microsoft reserved (E3C9E316-0B5C-4DB8-817D-F92DF00215AE)   │
 └────────────────────────────────────────────────────────────────────────────┘
 [ 刪除 ]  [Resize]  [ 離開 ]  [ 類型 ]  [ 求助 ]  [ Sort ]  [ 寫入 ]  [ Dump ]

cfdisk 操作提示:使用方向鍵移動,選擇 NewTypeWrite 等操作。確認無誤後輸入 yes 寫入分割區表。


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

可參考Gentoo Handbook: AMD64 - 準備磁碟 可參考Ext4XFSBtrfs

為什麼需要這一步? 磁碟分割區只是劃分了空間,但還不能儲存資料。建立檔案系統 (如 ext4, Btrfs) 才能讓作業系統管理和存取這些空間。掛載則是將這些檔案系統連接到 Linux 檔案樹的特定位置。

3.1 格式化
#

mkfs.vfat -F32 /dev/nvme0n1p1  # 格式化 ESP 分割區為 FAT32
mkfs.ext4 /dev/nvme0n1p2       # 格式化 Boot 分割區為 ext4
mkfs.ext4 /dev/nvme0n1p3       # 格式化 Root 分割區為 ext4
mkfs.ext4 /dev/nvme0n1p4       # 格式化 Home 分割區為 ext4
mkswap /dev/nvme0n1p5          # 格式化 Swap 分割區

若使用 Btrfs:

mkfs.btrfs -L gentoo /dev/nvme0n1p3

若使用 XFS:

mkfs.xfs /dev/nvme0n1p3

其他如 F2FSZFS 請參考相關 Wiki。

3.2 掛載(ext4 範例)
#

mount /dev/nvme0n1p3 /mnt/gentoo        # 掛載根分割區
mkdir -p /mnt/gentoo/{boot,efi,home}    # 建立掛載點目錄
mount /dev/nvme0n1p2 /mnt/gentoo/boot   # 掛載 Boot 分割區
mount /dev/nvme0n1p1 /mnt/gentoo/efi    # 掛載 ESP 分割區
mount /dev/nvme0n1p4 /mnt/gentoo/home   # 掛載 Home 分割區
swapon /dev/nvme0n1p5                   # 啟用 Swap 分割區
進階設定:Btrfs 子卷範例(點擊展開)
mount /dev/nvme0n1p3 /mnt/gentoo
btrfs subvolume create /mnt/gentoo/@
btrfs subvolume create /mnt/gentoo/@home
umount /mnt/gentoo

mount -o compress=zstd,subvol=@ /dev/nvme0n1p3 /mnt/gentoo
mkdir -p /mnt/gentoo/{boot,efi,home}
mount -o subvol=@home /dev/nvme0n1p3 /mnt/gentoo/home
mount /dev/nvme0n1p2 /mnt/gentoo/boot
mount /dev/nvme0n1p1 /mnt/gentoo/efi

Btrfs 快照建議: 推薦使用 Snapper 管理快照。合理的子卷規劃(如將 @@home 分開)能讓系統回滾更加輕鬆。

進階設定:加密分割區(LUKS)(點擊展開)
# 建立 LUKS2 加密分割區
cryptsetup luksFormat --type luks2 --pbkdf argon2id --hash sha512 --key-size 512 /dev/nvme0n1p3

# 打開加密分割區
cryptsetup luksOpen /dev/nvme0n1p3 root
# 輸入密碼後,映射為 /dev/mapper/root

# 格式化映射後的設備
mkfs.ext4 /dev/mapper/root

# 掛載
mount /dev/mapper/root /mnt/gentoo

注意:使用加密分割區後,後續配置核心和引導載入程式時需要額外步驟(配置 initramfs 解密)。


建議:掛載完成後,建議使用 lsblk 確認掛載點是否正確。

lsblk

輸出範例(類似如下):

NAME             MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
 nvme0n1          259:1    0 931.5G  0 disk  
├─nvme0n1p1      259:7    0    16M  0 part  
├─nvme0n1p2      259:8    0 419.5G  0 part  
├─nvme0n1p3      259:9    0     1G  0 part  /boot
├─nvme0n1p4      259:10   0     9G  0 part  [SWAP]
├─nvme0n1p5      259:11   0   246G  0 part  
│ └─cryptroot    253:0    0   246G  0 crypt /snapshots/root
│                                           /

4. 下載 Stage3 並進入 chroot
#

可參考Gentoo Handbook: AMD64 - 安裝 Gentoo 安裝檔案 可參考Stage file

為什麼需要這一步? 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
#

可參考Gentoo Handbook: AMD64 - 安裝 Gentoo 基本系統

為什麼需要這一步? 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 範例
#

可參考Gentoo Handbook: AMD64 - USE 標誌/etc/portage/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、系統設定與本地化
#

可參考Gentoo Handbook: AMD64 - 安裝 Gentoo 基本系統

為什麼需要這一步? 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 時區與語言
#

可參考Gentoo Wiki: Localization/Guide

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

echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
echo "zh_TW.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
    
  2. 無線網路 (iwd)

    可參考iwd

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

    提示:iwd 是一個現代、輕量級的無線守護行程。

方案 3:原生方案(點擊展開)

使用 init 系統自帶的網路管理功能,適合伺服器或極簡環境。

OpenRC 網卡服務

可參考OpenRCOpenRC: Network Management

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-networkdsystemd-resolvedSystemdSystemd: Network

Systemd 自帶了網路管理功能,適合伺服器或極簡環境:

systemctl enable systemd-networkd
systemctl enable systemd-resolved

注意:需要手動編寫 .network 設定檔。

6.4 設定 fstab
#

可參考Gentoo Handbook: AMD64 - fstabGentoo Wiki: /etc/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
UUID=<ESP-UUID>   /efi   vfat    defaults,noatime  0 2
UUID=<BOOT-UUID>  /boot  ext4    defaults,noatime  0 2
UUID=<ROOT-UUID>  /      ext4    defaults,noatime  0 1
UUID=<HOME-UUID>  /home  ext4    defaults,noatime  0 2
UUID=<SWAP-UUID>  none   swap    sw               0 0

7. 核心與韌體
#

可參考Gentoo Handbook: AMD64 - 配置 Linux 核心

為什麼需要這一步? 核心是作業系統的核心,負責管理硬體。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. 基礎工具
#

可參考Gentoo Handbook: AMD64 - 安裝必要的系統工具

為什麼需要這一步? 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. 時間同步

可參考System TimeSystem Time (OpenRC)

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

systemd 使用者: systemd 已內建日誌與時間同步服務。

時間同步

可參考System TimeSystem Time (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. 建立使用者與權限
#

可參考Gentoo Handbook: AMD64 - 結束安裝

為什麼需要這一步? 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 等群組。


進階設定:設定加密支援(僅加密使用者)(點擊展開)

可參考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
#

可參考DracutInitramfs

# 安裝 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

10. 安裝引導程式
#

可參考Gentoo Handbook: AMD64 - 設定引導程式

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

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。本文介紹此次遷移的背景、原因和主要改進。