快轉到主要內容

安裝Gentoo Linux筆記,Systemd + 桌面環境 + 中文化

· 民國114年乙巳年
·
切換繁體/簡體
分類   Linux系統 Linux系統安裝教學
標籤   Gentoo Systemd
目錄

這篇文章紀錄在電腦安裝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安裝隨身碟
#

  1. 前往Gentoo官網下載AMD64架構「Minimal Installation CD」的ISO。這是一個可以開機的最小LiveCD,能夠協助我們安裝Gentoo系統,只有純文字介面。

  2. 使用balenaEtcher將Gentoo ISO製作成開機隨身碟。

3. 安裝Gentoo基本系統
#

  1. 在UEFI關閉Secure Boot,並用隨身碟以UEFI模式開機。

  2. 輸入數字,設定鍵盤配置為us

3.1. 設定網路
#

  1. ip addr指令列出所有網路裝置,例如乙太網路應該是enp開頭,Wifi是wlan。安裝系統的時候推薦使用乙太網路連線,才不會有找不到Wifi驅動的問題。

  2. 使用net-setup eth0指令,依照畫面指示啟用乙太網路連線。

3.2. 分割硬碟
#

  1. 用fdisk查看硬碟列表,SATA硬碟應該是顯示為/dev/sda,NVME則是/dev/nvme0n1
fdisk -l
  1. 用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
  1. 輸入fdisk /dev/sda -l,分割表應該會長這樣:
/dev/sda1  512MB  EFI
/dev/sda2  480GB  Linux
  1. 格式化並建立檔案系統
mkfs.vfat -F32 /dev/sda1

mkfs.ext4 /dev/sda2
  1. 掛載根目錄分區
mount /dev/sda2 /mnt/gentoo

cd /mnt/gentoo

3.3. 安裝stage3檔案系統
#

  1. 下載stage3壓縮檔,這裡包含一個基本的Linux檔案系統,我們可以以此為基礎下去安裝完整的Gentoo系統。

  2. 用另一台電腦到Gentoo官網,下載"Stage3"的檔案,選擇desktop profile | systemd版。

  3. 因為安裝Gentoo的時候使用的是純文字介面,所以你要自己按右鍵複製上面的網址。再於Gentoo終端機手打下載。

  4. 例如,利用wget指令,下載最新stage3壓縮檔:

wget https://distfiles.gentoo.org/releases/amd64/autobuilds/20250817T170357Z/stage3-amd64-desktop-systemd-20250817T170357Z.tar.xz
  1. 解壓縮stage3的檔案系統:
tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
  1. 用nano編輯/etc/portage/make.conf,加入以下參數讓Gentoo使用更多CPU執行緒編譯套件。-j後面設定的核心就看你的CPU有多少就設多少。
MAKEOPTS="-j4"
  1. (選擇性)設定Portage套件庫的鏡像站,加快套件下載速度。進入選單用上下鍵移動,用空白鍵選取台灣高品質學術網路(twaren)的HTTP與FTP鏡像後,按下Enter。
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
  1. 複製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
  1. 複製DNS設定到stage3的檔案系統
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
  1. 利用arch-chroot工具,進入到新的stage3檔案系統內部,這樣就會切換到一個新的Gentoo環境了。
arch-chroot /mnt/gentoo
  1. 掛載EFI分區到/efi
mkdir /efi

mount /dev/sda1 /efi
  1. 新增SWAP file,應該是實體RAM的兩倍大
mkswap -U clear --size 16G --file /swapfile

swapon /swapfile
  1. 用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
  1. 同步Gentoo的ebuild儲存庫至最新版:
emerge-webrsync
  1. 用Portage更新現有的套件,輸入yes,會花點時間編譯安裝。
emerge --ask --verbose --update --deep --newuse @world
  1. 設定時區為亞洲/台北
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime

emerge --config sys-libs/timezone-data
  1. 用nano編輯/etc/locale.gen,將英文en_US.UTF-8 UTF-8取消註解

  2. 產生語言設定檔

locale-gen
  1. 重新載入設定
env-update

source /etc/profile

4. 安裝Linux核心
#

Gentoo官方提供三種安裝核心的方法:

  • 下載核心原始碼,自行調整核心功能後編譯安裝 (sys-kernel/gentoo-sources)
  • 下載預先設定好的核心,編譯安裝 (sys-kernel/gentoo-kernel)
  • 下載預先編譯好的核心,直接安裝 (sys-kernel/gentoo-kernel-bin)

後二者稱作distribution kernel,不需要手動開啟核心功能,適合給新手使用。我選擇下載Gentoo預先編譯好的核心,直接安裝。

  1. 在那之前,用nano編輯/etc/portage/make.conf,加入以下參數,同意所有授權條款。
ACCEPT_LICENSE="*"
  1. 加入以下參數,指定安裝amd64架構的穩定版軟體。若使用~amd64則代表安裝不穩定版本。
ACCEPT_KEYWORDS="amd64"
  1. 加入-march參數,讓GCC在編譯套件的時候,自動依照CPU型號最佳化
COMMON_FLAGS="-O2 -pipe -march=native"
  1. 設定輸入裝置,libinput是滑鼠+鍵盤
INPUT_DEVICES="libinput"
  1. 然後加入以下參數讓Gentoo使用更多CPU執行緒編譯套件。-j後面設定的核心就看你的CPU有多少就設多少。
MAKEOPTS="-j4"
  1. 在USE加入以下全域FLAG,這樣所有核心模組會在核心更新後自動重新編譯。
USE="dist-kernel dracut"
  1. 設定要安裝的顯示卡驅動,因為我有內顯與獨顯,所以如下填寫。
VIDEO_CARDS="intel nvidia"
  1. 設定initramfs與GRUB如何產生。編輯/etc/portage/package.use/installkernel,加入下內容,使用GRUB,並使用Dracut產生initramfs。
sys-kernel/installkernel grub dracut
  1. 編輯/etc/portage/package.use/intel-microcode,針對Intel Microcode啟用以下FLAG。
sys-firmware/intel-microcode initramfs
  1. 先跑過一次installkernel新增initramfs,才能安裝Linux核心
emerge --ask sys-kernel/installkernel
  1. 安裝預先編譯的Linux核心
emerge --ask  sys-kernel/gentoo-kernel-bin
  1. 接著安裝Linux專有韌體和Intel Microcode
emerge --ask sys-kernel/linux-firmware  sys-firmware/intel-microcode

5. 安裝桌面環境
#

編譯安裝桌面環境可能會花比較多時間,如果不需要圖形介面可以先跳過,確認Gentoo能開機後再行安裝。

GNOME:安裝GNOME桌面與建議的依賴套件

KDE Plasma:安裝KDE Plasma桌面與建議的依賴套件

6. 設定使用者和開機服務
#

  1. 初始化Systemd:
systemd-machine-id-setup

systemd-firstboot --prompt

systemctl preset-all --preset-mode=enable-only

systemctl preset-all
  1. 給自己的主機取名:
hostnamectl set-hostname "Gentoo"
  1. 修改root密碼。
passwd
  1. 新增一般使用者"user",並修改密碼
useradd -m -g users -G wheel,audio,video -s /bin/bash user

passwd user
  1. 用nano編輯/etc/sudoers,給予一般使用者root權限
#在"root ALL=(ALL:ALL) ALL"的下一行加入以下內容:
user ALL=(ALL:ALL) ALL
  1. 安裝sudo、Wifi連網工具、NetworkManager、Chrony同步時間。
emerge --ask app-admin/sudo net-misc/networkmanager net-misc/chrony
  1. 將SSH、NetworkManager、Chrony加入開機服務
systemctl enable sshd

systemctl enable NetworkManager

systemctl enable chronyd
  1. 安裝GRUB之前要確認啟用EFI,編輯``/etc/portage/make.conf`啟用eif-64:
GRUB_PLATFORMS="efi-64"
  1. 安裝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
  1. 自動刪除用不到的套件
emerge --ask --depclean
  1. 刪除剛剛下載的stage3檔案系統壓縮檔
rm /stage3*
  1. 退出chroot,關機,拔掉隨身碟重開機。
exit

cd

umount -l /mnt/gentoo/dev{/shm,/pts,}

umount -R /mnt/gentoo

poweroff

7. Gentoo後續安裝優化
#

7.1. 中文化和輸入法
#

  1. 編輯/etc/locale.gen,加入:
en_US.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8
  1. 產生語言設定檔
sudo locale-gen
  1. 設定語言
sudo localectl set-locale LANG=zh_TW.UTF-8
  1. 編輯/etc/portage/make.conf,指定安裝正體中文的軟體
L10N="zh-TW"
  1. 安裝Google Noto Fonts中文字型。安裝中文字型可能會導致介面預設字型變成楷體,此時要使用fontconfig調整。
sudo emerge --ask media-fonts/noto-cjk
  1. 安裝Fcitx5輸入法框架與注音輸入法新酷音。
sudo emerge --ask app-i18n/fcitx app-i18n/fcitx-gtk app-i18n/fcitx-qt app-i18n/fcitx-chinese-addons app-i18n/fcitx-chewing
  1. 編輯/etc/environment,填入以下內容:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
  1. 從系統選單找到Fcitx輸入法設定工具,啟用新酷音。重新開機,按CTRL + 空白鍵切換新酷音輸入法。

7.2. 設定防火牆
#

Gentoo預設防火牆是iptables,建議安裝一個前端方面管理。

  1. 安裝UFW:
sudo emerge --ask net-firewall/ufw
  1. 設定開機啟動防火牆
sudo systemctl enable --now ufw
  1. 開放SSH通訊埠
sudo ufw allow ssh

7.3. Portage套件管理器的使用方式
#

不同於其他發行版,Portage「安裝」軟體是稱作「合併」(merge),解除安裝則是「取消選取」(deselect)。

  1. 在安裝好系統後,/etc/portage/make.conf裡面的全域USE,應該減少到只剩下"dist-kernel dracut"等通用的FLAG。加上「-」則是停用該FLAG,例如-X可以讓套件不依賴X.Org編譯。套件的FLAG不應該全寫在/etc/portage/make.conf,因為這會全域套用,而是要在/etc/portage/package.use/目錄新增檔案,針對各個套件設定FLAG。

  2. 個別套件若有需要,安裝前先到Wiki搜尋各個FLAG的用途。例如VLC。網頁Version顯示黃色的是測試版,跟ACCEPT_KEYWORDS=~amd64"有關。點一下Available Versions下面的版本號,看Ebuild可得知預設會啟用哪些FLAG。

  3. 舉例來說,針對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
  1. 一旦make.conf發生變化,就讓Portage重新編譯需要變更的部份。此指令也等同更新和安裝系統套件。
# 更新系統變數,輸入-3自動合併設定檔
sudo etc-update

# 更新系統套件,會自動安裝或刪除套件
sudo emerge --ask --verbose --update --deep --newuse @world

# 跟上述更新系統套件一樣的指令,短一點的版本
sudo emerge -avuDN world

# 自動清理不需要的依賴套件
sudo emerge --ask --depclean
  1. 安裝套件時臨時要用到FLAG,也可以在指令中使用。例如:
sudo USE="abi_x86_32 -gpm" emerge dev-util/android-sdk-update-manager
  1. 若要解除安裝套件,先取消選取,再刪除用不到的依賴套件。不要直接使用unmerge指令。
# 先取消選擇個別套件
sudo emerge --deselect kde-apps/kmix

# 更新系統套件,會自動解除安裝
sudo emerge --ask --verbose --update --deep --newuse @world

# 自動清理不需要的依賴套件
sudo emerge --ask --depclean
  1. 最後是更新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.confMAKEOPTS的「-j+執行緒數」,這會增加RAM用量
  • 安裝CCache設定快取,這樣以後重新編譯就會利用快取中的obj檔案加快編譯速度。
  • 設定DistCC,利用多部電腦合作編譯套件。
  • 掛載TMPFS充當虛擬記憶體,速度會比SWAP快一些。
  • Portage下載套件時直接選取二進位版本,就不需要等編譯了。

Gentoo安裝後記
#

初稿:2022年8月26日

2025年8月16日加筆修正,參考Gentoo Handbook,調整了許多錯誤的觀念部分。

目前Gentoo系統包含桌面環境約安裝了800個套件,光是編譯這些套件就花了半天以上時間。

USE使用仍需要注意,用錯FLAG會導致預期外的行為。

或許電腦規格不好的人要更深入研究調整套件的編譯參數,不然的話會想到這張圖:CPU不好跟人玩什麼Gentoo!?

參考資料
#

相關文章

如何進行Debian大版本系統升級,從Debian 12升級到13
分類   Linux系統 Linux系統安裝教學
標籤   Debian
Arch Linux安裝教學,KDE Plasma桌面 + 中文輸入法
分類   Linux系統 Linux系統安裝教學
標籤   Arch Linux Arch User Repository
加入套件庫,將Kubuntu轉換為KDE Neon,安裝最新版Plasma桌面套件
分類   Linux系統 Linux系統安裝教學
標籤   KDE Plasma Ubuntu

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。