這篇文章紀錄在電腦安裝Gentoo Linux系統的過程。每一個步驟會盡量講解我在做什麼。
這篇文章安裝後,你將會得到一個採用Systemd + distribution-kernel + 中文化的Gentoo系統,並可以自由選擇桌面環境。
安裝Gentoo至少會花上2小時~1天不等,請做好心理準備。
以下資訊可能會過時,請自行參考文末的Gentoo AMD64 Handbook查詢細節設定。
1. Gentoo硬體需求#
Gentoo並沒有預設的官方配置,一切要由您自己決定。包括init系統、自行編譯Linux核心或者使用現成的Linux核心、要用glibc或musl libc、網路連線程式、桌面環境等等,全部都要自己挑選。
關於最重要的init系統部份,考慮到Systemd是大多數Linux發行版所採用的init系統,所以我選擇Systemd為中心下去安裝,不使用OpenRC。
Gentoo是滾動更新的系統,其他Linux發行版安裝軟體多半是下載二進位檔,Gentoo則是要編譯軟體套件後再安裝。它的自由度非常高,允許使用者調整編譯時候開啟或關閉一些選項(FLAG),讓套件變得更為精簡,但也因此使用者需要自行研究哪些FLAG是需要的,哪些是不必要的。Gentoo的套件管理器Portage會在下載原始碼後自動編譯安裝,使用者通常不需要介入,最主要麻煩的是要花時間等其編譯完成。時間可長可短,簡單的套件大概1分鐘就完成了,複雜的套件,例如瀏覽器,可能要等好幾個小時。
因此CPU建議為intel i5以上4核心,RAM加上SWAP至少8GB以上,硬碟要有64GB。
就算是用虛擬機練習,也是建議把所有核心都分配給Gentoo並啟用KVM等hypervisor加速技術,加快編譯速度。
我的硬體規格:
- CPU: Intel i5-7400
- GPU: Nvidia GTX 1050 Ti
- RAM: 16GB DDR4
- SSD: 500GB
2. 製作Gentoo安裝隨身碟#
前往Gentoo官網下載AMD64架構「Minimal Installation CD」的ISO。這是一個可以開機的最小LiveCD,能夠協助我們安裝Gentoo系統,只有純文字介面。
使用balenaEtcher將Gentoo ISO製作成開機隨身碟。
3. 安裝Gentoo基本系統#
在UEFI關閉Secure Boot,並用隨身碟以UEFI模式開機。
輸入數字,設定鍵盤配置為us
3.1. 設定網路#
用
ip addr
指令列出所有網路裝置,例如乙太網路應該是enp
開頭,Wifi是wlan
。安裝系統的時候推薦使用乙太網路連線,才不會有找不到Wifi驅動的問題。使用
net-setup eth0
指令,依照畫面指示啟用乙太網路連線。
3.2. 分割硬碟#
- 用fdisk查看硬碟列表,SATA硬碟應該是顯示為
/dev/sda
,NVME則是/dev/nvme0n1
。
fdisk -l
- 用fdisk分割硬碟。我這裡只有建立EFI分區和根目錄分區,SWAP我會在後面使用swapfile建立。
fdisk /dev/sda
# 使用GPT硬碟分割表
g
#輸入d刪除全部分區
d
#寫入
w
fdisk /dev/sda
#新增EFI分區
n
1
Fisrt sector: Enter
Last Sector: +512M
t
#修改標籤為EFI
uefi
#新增根目錄分區
n
2
Fisrt sector: Enter
Last Sector: Enter
# 寫入變更
w
- 輸入
fdisk /dev/sda -l
,分割表應該會長這樣:
/dev/sda1 512MB EFI
/dev/sda2 480GB Linux
- 格式化並建立檔案系統
mkfs.vfat -F32 /dev/sda1
mkfs.ext4 /dev/sda2
- 掛載根目錄分區
mount /dev/sda2 /mnt/gentoo
cd /mnt/gentoo
3.3. 安裝stage3檔案系統#
下載stage3壓縮檔,這裡包含一個基本的Linux檔案系統,我們可以以此為基礎下去安裝完整的Gentoo系統。
用另一台電腦到Gentoo官網,下載"Stage3"的檔案,選擇desktop profile | systemd版。
因為安裝Gentoo的時候使用的是純文字介面,所以你要自己按右鍵複製上面的網址。再於Gentoo終端機手打下載。
例如,利用wget指令,下載最新stage3壓縮檔:
wget https://distfiles.gentoo.org/releases/amd64/autobuilds/20250817T170357Z/stage3-amd64-desktop-systemd-20250817T170357Z.tar.xz
- 解壓縮stage3的檔案系統:
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
- 用nano編輯
/etc/portage/make.conf
,加入以下參數讓Gentoo使用更多CPU執行緒編譯套件。-j
後面設定的核心就看你的CPU有多少就設多少。
MAKEOPTS="-j4"
- (選擇性)設定Portage套件庫的鏡像站,加快套件下載速度。進入選單用上下鍵移動,用空白鍵選取台灣高品質學術網路(twaren)的HTTP與FTP鏡像後,按下Enter。
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
- 複製Portage套件庫設定到stage3的檔案系統
mkdir -p /mnt/gentoo/etc/portage/repos.conf
cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
- 複製DNS設定到stage3的檔案系統
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
- 利用arch-chroot工具,進入到新的stage3檔案系統內部,這樣就會切換到一個新的Gentoo環境了。
arch-chroot /mnt/gentoo
- 掛載EFI分區到
/efi
mkdir /efi
mount /dev/sda1 /efi
- 新增SWAP file,應該是實體RAM的兩倍大
mkswap -U clear --size 16G --file /swapfile
swapon /swapfile
- 用nano編輯
/etc/fstab
,設定開機硬碟自動掛載規則,例如:
/dev/sda1 /efi vfat umask=0077,tz=UTC 0 2
/dev/sda2 / ext4 defaults,noatime 0 1
/swapfile none swap defaults 0 0
- 同步Gentoo的ebuild儲存庫至最新版:
emerge-webrsync
- 用Portage更新現有的套件,輸入yes,會花點時間編譯安裝。
emerge --ask --verbose --update --deep --newuse @world
- 設定時區為亞洲/台北
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
emerge --config sys-libs/timezone-data
用nano編輯
/etc/locale.gen
,將英文en_US.UTF-8 UTF-8
取消註解產生語言設定檔
locale-gen
- 重新載入設定
env-update
source /etc/profile
4. 安裝Linux核心#
Gentoo官方提供三種安裝核心的方法:
- 下載核心原始碼,自行調整核心功能後編譯安裝 (sys-kernel/gentoo-sources)
- 下載預先設定好的核心,編譯安裝 (sys-kernel/gentoo-kernel)
- 下載預先編譯好的核心,直接安裝 (sys-kernel/gentoo-kernel-bin)
後二者稱作distribution kernel,不需要手動開啟核心功能,適合給新手使用。我選擇下載Gentoo預先編譯好的核心,直接安裝。
- 在那之前,用nano編輯
/etc/portage/make.conf
,加入以下參數,同意所有授權條款。
ACCEPT_LICENSE="*"
- 加入以下參數,指定安裝amd64架構的穩定版軟體。若使用
~amd64
則代表安裝不穩定版本。
ACCEPT_KEYWORDS="amd64"
- 加入
-march
參數,讓GCC在編譯套件的時候,自動依照CPU型號最佳化
COMMON_FLAGS="-O2 -pipe -march=native"
- 設定輸入裝置,libinput是滑鼠+鍵盤
INPUT_DEVICES="libinput"
- 然後加入以下參數讓Gentoo使用更多CPU執行緒編譯套件。
-j
後面設定的核心就看你的CPU有多少就設多少。
MAKEOPTS="-j4"
- 在USE加入以下全域FLAG,這樣所有核心模組會在核心更新後自動重新編譯。
USE="dist-kernel dracut"
- 設定要安裝的顯示卡驅動,因為我有內顯與獨顯,所以如下填寫。
VIDEO_CARDS="intel nvidia"
- 設定initramfs與GRUB如何產生。編輯
/etc/portage/package.use/installkernel
,加入下內容,使用GRUB,並使用Dracut產生initramfs。
sys-kernel/installkernel grub dracut
- 編輯
/etc/portage/package.use/intel-microcode
,針對Intel Microcode啟用以下FLAG。
sys-firmware/intel-microcode initramfs
- 先跑過一次installkernel新增initramfs,才能安裝Linux核心
emerge --ask sys-kernel/installkernel
- 安裝預先編譯的Linux核心
emerge --ask sys-kernel/gentoo-kernel-bin
- 接著安裝Linux專有韌體和Intel Microcode
emerge --ask sys-kernel/linux-firmware sys-firmware/intel-microcode
5. 安裝桌面環境#
編譯安裝桌面環境可能會花比較多時間,如果不需要圖形介面可以先跳過,確認Gentoo能開機後再行安裝。
GNOME:安裝GNOME桌面與建議的依賴套件
KDE Plasma:安裝KDE Plasma桌面與建議的依賴套件
6. 設定使用者和開機服務#
- 初始化Systemd:
systemd-machine-id-setup
systemd-firstboot --prompt
systemctl preset-all --preset-mode=enable-only
systemctl preset-all
- 給自己的主機取名:
hostnamectl set-hostname "Gentoo"
- 修改root密碼。
passwd
- 新增一般使用者"user",並修改密碼
useradd -m -g users -G wheel,audio,video -s /bin/bash user
passwd user
- 用nano編輯
/etc/sudoers
,給予一般使用者root權限
#在"root ALL=(ALL:ALL) ALL"的下一行加入以下內容:
user ALL=(ALL:ALL) ALL
- 安裝sudo、Wifi連網工具、NetworkManager、Chrony同步時間。
emerge --ask app-admin/sudo net-misc/networkmanager net-misc/chrony
- 將SSH、NetworkManager、Chrony加入開機服務
systemctl enable sshd
systemctl enable NetworkManager
systemctl enable chronyd
- 安裝GRUB之前要確認啟用EFI,編輯``/etc/portage/make.conf`啟用eif-64:
GRUB_PLATFORMS="efi-64"
- 安裝GRUB至系統
grub-install --target=x86_64-efi --efi-directory=/efi
grub-mkconfig -o /efi/EFI/Gentoo/grub.cfg
grub-mkconfig -o /boot/grub/grub.cfg
- 自動刪除用不到的套件
emerge --ask --depclean
- 刪除剛剛下載的stage3檔案系統壓縮檔
rm /stage3*
- 退出chroot,關機,拔掉隨身碟重開機。
exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
poweroff
7. Gentoo後續安裝優化#
7.1. 中文化和輸入法#
- 編輯
/etc/locale.gen
,加入:
en_US.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
- 產生語言設定檔
sudo locale-gen
- 設定語言
sudo localectl set-locale LANG=zh_TW.UTF-8
- 編輯
/etc/portage/make.conf
,指定安裝正體中文的軟體
L10N="zh-TW"
- 安裝Google Noto Fonts中文字型。安裝中文字型可能會導致介面預設字型變成楷體,此時要使用fontconfig調整。
sudo emerge --ask media-fonts/noto-cjk
- 安裝Fcitx5輸入法框架與注音輸入法新酷音。
sudo emerge --ask app-i18n/fcitx app-i18n/fcitx-gtk app-i18n/fcitx-qt app-i18n/fcitx-chinese-addons app-i18n/fcitx-chewing
- 編輯
/etc/environment
,填入以下內容:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
- 從系統選單找到Fcitx輸入法設定工具,啟用新酷音。重新開機,按CTRL + 空白鍵切換新酷音輸入法。
7.2. 設定防火牆#
Gentoo預設防火牆是iptables,建議安裝一個前端方面管理。
- 安裝UFW:
sudo emerge --ask net-firewall/ufw
- 設定開機啟動防火牆
sudo systemctl enable --now ufw
- 開放SSH通訊埠
sudo ufw allow ssh
7.3. Portage套件管理器的使用方式#
不同於其他發行版,Portage「安裝」軟體是稱作「合併」(merge),解除安裝則是「取消選取」(deselect)。
在安裝好系統後,
/etc/portage/make.conf
裡面的全域USE,應該減少到只剩下"dist-kernel dracut"等通用的FLAG。加上「-」則是停用該FLAG,例如-X
可以讓套件不依賴X.Org編譯。套件的FLAG不應該全寫在/etc/portage/make.conf
,因為這會全域套用,而是要在/etc/portage/package.use/
目錄新增檔案,針對各個套件設定FLAG。個別套件若有需要,安裝前先到Wiki搜尋各個FLAG的用途。例如VLC。網頁Version顯示黃色的是測試版,跟
ACCEPT_KEYWORDS=~amd64"
有關。點一下Available Versions下面的版本號,看Ebuild可得知預設會啟用哪些FLAG。舉例來說,針對VLC,
/etc/portage/package.use/
目錄下新增一個vlc
檔案,為該套件獨立設定FLAG:
media-video/vlc truetype fontconfig libnotify opus libass qt5 gnutls live lua matroska rtsp theora upnp vcdx aom x265 skins encode live dav1d vaapi vdapu vorbis vpx mpeg mtp
- 一旦make.conf發生變化,就讓Portage重新編譯需要變更的部份。此指令也等同更新和安裝系統套件。
# 更新系統變數,輸入-3自動合併設定檔
sudo etc-update
# 更新系統套件,會自動安裝或刪除套件
sudo emerge --ask --verbose --update --deep --newuse @world
# 跟上述更新系統套件一樣的指令,短一點的版本
sudo emerge -avuDN world
# 自動清理不需要的依賴套件
sudo emerge --ask --depclean
- 安裝套件時臨時要用到FLAG,也可以在指令中使用。例如:
sudo USE="abi_x86_32 -gpm" emerge dev-util/android-sdk-update-manager
- 若要解除安裝套件,先取消選取,再刪除用不到的依賴套件。不要直接使用
unmerge
指令。
# 先取消選擇個別套件
sudo emerge --deselect kde-apps/kmix
# 更新系統套件,會自動解除安裝
sudo emerge --ask --verbose --update --deep --newuse @world
# 自動清理不需要的依賴套件
sudo emerge --ask --depclean
- 最後是更新Gentoo的ebuild儲存庫至最新版,再更新系統套件的指令。
sudo emerge-webrsync
sudo emerge --ask --verbose --update --deep --newuse @world
sudo emerge --ask --depclean
其餘常用指令請到官方Wiki的Gentoo Cheat Sheet查詢。
7.4. 加快Gentoo編譯速度#
如果要加快編譯速度,可採取以下措施:
- 依CPU核心數,調高
/etc/portage/make.conf
中MAKEOPTS
的「-j+執行緒數」,這會增加RAM用量 - 安裝CCache設定快取,這樣以後重新編譯就會利用快取中的obj檔案加快編譯速度。
- 設定DistCC,利用多部電腦合作編譯套件。
- 掛載TMPFS充當虛擬記憶體,速度會比SWAP快一些。
- 讓Portage下載套件時直接選取二進位版本,就不需要等編譯了。
Gentoo安裝後記#
初稿:2022年8月26日
2025年8月16日加筆修正,參考Gentoo Handbook,調整了許多錯誤的觀念部分。
目前Gentoo系統包含桌面環境約安裝了800個套件,光是編譯這些套件就花了半天以上時間。
USE使用仍需要注意,用錯FLAG會導致預期外的行為。
或許電腦規格不好的人要更深入研究調整套件的編譯參數,不然的話會想到這張圖:CPU不好跟人玩什麼Gentoo!?