Gentoo 作為原始碼發佈版,其升級過程極具彈性但也相對複雜。當自動升級機制失效或需要精確控制版本時,掌握手動升級系統與內核的完整流程至關重要。本文將系統化梳理從 Portage 同步到內核編譯、引導配置、系統重構與依賴清理的全過程,並附上關鍵參數解析與風險提示。
emerge --sync
更新本地軟體倉庫元數據,確保獲取最新的內核源碼版本資訊。亦可編寫定時腳本自動化此步驟。
emerge -s sources
emerge -avq gentoo-sources
-s 搜尋可用內核套件,-avq 顯示詳細資訊並詢問確認後安裝。輸出範例:
[ebuild NS ] sys-kernel/gentoo-sources-3.10.4 [3.9.0] USE="-build -deblob -symlink"
cd /usr/src/linux-3.10.4-gentoo
make -j5 menuconfig # 圖形化配置介面,依硬體啟用所需模組
make -j5 && make install modules_install
-j5 指定 5 線程並行編譯,依 CPU 核心數調整(建議核心數 +1)。make install 會將 vmlinuz、System.map、config 複製至 /boot,並自動生成 initramfs(若啟用 initramfs 支援)。
vim /boot/grub/grub.conf
新增內核啟動項,關鍵字段說明:
default 1 # 預設啟動第 2 項(索引從 0 開始)
timeout 5 # 等待 5 秒
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo 3.10.4 # 選單顯示名稱
root (hd0,0) # /boot 所在分區
kernel /boot/vmlinuz-3.10.4-gentoo ro root=/dev/sda1 rootfstype=ext4 quiet
注意:root= 需指向真實根分區,ro 以唯讀掛載啟動,quiet 抑制啟動日誌輸出。
emerge -avq portage # 確保 Portage 本身最新
emerge -avq python # 更新 Python 解釋器
/usr/sbin/update-python # 或 python-updater,重建 Python 模組連結
emerge -avquDN world
參數詳細含義:
| 參數 | 完整形式 | 作用 |
|---|---|---|
-a | --ask | 顯示將變更的套件清單並詢問確認 |
-v | --verbose | 輸出完整編譯日誌與檔案列表 |
-u | --update | 升級至最佳版本(而非單純重裝) |
-D | --deep | 遞歸處理所有依賴,而非僅顯式安裝套件 |
-N | --newuse | 檢測 USE 旗標變更觸發的重編譯需求 |
此命令會依據 /var/lib/portage/world 重新編譯整個系統,耗時極長,建議在 screen 或 tmux 會話中執行。
emerge -av --depclean # 移除不再被任何套件依賴的「孤兒」套件
revdep-rebuild # 檢查動態庫依賴斷裂並自動重建受影響套件(屬 gentoolkit)
perl-cleaner --all -- -avq # 專門處理 Perl 模組路徑與版本衝突
dispatch-conf # 互動式合併 /etc 下的配置檔更新(._cfg0000_* 檔案)
eselect news read all # 閱讀 Gentoo 官方發佈的重要安全/遷移公告
# emerge -e world # 重新編譯 world 所有套件,極度耗時,通常僅在 GCC/glibc 重大升級後需要
/etc、/var/lib/portage/world、內核 .config 及 /boot 關鍵檔案。world 重構;若內核啟動失敗,可從 GRUB 選單回退舊內核。-N 參數會觸發大量重編譯,若磁碟空間或時間有限,可先用 emerge -pvquDN world 預覽變更規模。script 或重定向輸出保存完整編譯日誌,便於事後排查。遵循本指南的標準化流程,配合謹慎的驗證與回滾預案,即可安全完成 Gentoo 系統與內核的手動升級,保持系統處於最佳狀態。