這篇文章紀錄在筆電安裝Gentoo系統的過程,使用Gentoo官方預先編譯的核心,init系統為Systemd,桌面環境為GNOME。

為什麼要選擇GNOME呢?因為對筆電的觸控板支援較好,界面和字體大小簡單明瞭。
實際上Gentoo的GNOME支援使用OpenRC當init系統,但有越來越多的程式以systemd為中心撰寫,要使用GNOME的最新功能還是使用systemd比較保險。
以下資訊可能會過時,請自行到Gentoo Wiki AMD64安裝手冊和Gentoo Wiki GNOME指南查詢細節設定。
4核心以上處理器,8GB RAM,64GB儲存空間。
以上為建議值,因為Gentoo安裝套件是用編譯的,CPU性能至關重要。
我的筆電硬體規格:
- CPU: Intel i5-10210U
- GPU: Nvidia MX350
- RAM: 8GB
- SSD: 512GB
前往Gentoo官網下載AMD64架構"Minimal Installation CD"的ISO。
使用balenaEtcher或DD將Gentoo ISO製作成開機隨身碟。
此步驟會安裝GNOME桌面環境的Gentoo系統。
用隨身碟開機。
輸入數字,設定鍵盤配置為us
- 用
net-setup eth0
設定有線網路,再測試有線網路連線狀況,收到Bytes…的訊息代表有連上網路。
- 如果要使用內建網卡的Wifi,輸入
ifconfig
查看Wifi裝置名稱,再使用指令net-setup 裝置名稱
自動設定網路連線,例如:
1
2
| ifconfig wlo1 up
net-setup wlo1
|
安裝時候為了避免誤傷資料碟,我會把其他硬碟的線條拔掉,只留下安裝系統的SSD。
- 用fdisk查看硬碟列表,筆電的硬碟應該是顯示為
/dev/nvme0n1
或/dev/sda
。
- 用fdisk分割硬碟。此分割表是給UEFI系統使用,沒有做SWAP。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| fdisk /dev/nvme0n1
# 使用GPT硬碟分割表
g
#輸入d刪除全部分區
d
#寫入
w
fdisk /dev/nvme0n1
#新增EFI分區
n
1
Fisrt sector: Enter
Last Sector: +512M
t
#修改標籤為EFI
uefi
#新增Swap分區, 建議為RAM大小X2
n
2
Fisrt sector: Enter
Last Sector: +32GB
t
2
#修改標籤為Swap
swap
#新增root分區
n
3
Fisrt sector: Enter
Last Sector: Enter
# 寫入變更
w
|
- 輸入
fdisk /dev/nvme0n1 -l
,分割表應該會長這樣:
1
2
3
| /dev/nvme0n1p1 512MB EFI
/dev/nvme0n1p2 32GB SWAP
/dev/nvme0n1p3 450GB Linux
|
- 格式化並建立檔案系統
1
2
3
| mkfs.vfat -F32 /dev/nvme0n1p1
mkswap /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3
|
- 啟用Swap
- 掛載root分區
1
2
| mount /dev/nvme0n1p3 /mnt/gentoo
cd /mnt/gentoo
|
- 下載前先校時
- 下載stage3 Gentoo檔案系統,到Gentoo官網下載"Stage3"的檔案,選擇desktop profile | systemd版,按右鍵取得網址。例如:
1
| wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20220828T170542Z/stage3-amd64-desktop-systemd-20220828T170542Z.tar.xz
|
- 解壓縮檔案系統:
1
| tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner
|
- 用nano編輯
/etc/portage/make.conf
,加入以下參數,讓Gentoo使用更多CPU執行緒編譯套件。
- 設定鏡像站點,選單用上下鍵移動,用空白鍵選取台灣NCHC的鏡像(twaren)後按下Enter。
1
| mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
|
- 複製Portage軟體庫設定
1
2
| 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設定
1
| cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
|
- 掛載系統目錄,chroot到系統
1
2
3
4
5
6
7
8
9
10
| mount --types proc /proc /mnt/gentoo/proc
mount --rbind /sys /mnt/gentoo/sys
mount --make-rslave /mnt/gentoo/sys
mount --rbind /dev /mnt/gentoo/dev
mount --make-rslave /mnt/gentoo/dev
mount --bind /run /mnt/gentoo/run
mount --make-slave /mnt/gentoo/run
chroot /mnt/gentoo /bin/bash
source /etc/profile
export PS1="(chroot) ${PS1}"
|
- 掛載EFI分區
1
| mount /dev/nvme0n1p1 /boot
|
- 更新Gentoo的ebuild儲存庫至最新版:
- 用Portage更新套件,輸入yes合併,會花點時間編譯安裝。
1
| emerge --ask --verbose --update --deep --newuse @world
|
- 設定時區為亞洲/台北
1
2
| 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
取消註解
產生語言設定檔
- 重新載入設定
1
2
3
| env-update
source /etc/profile
export PS1="(chroot) ${PS1}"
|
Gentoo官方提供三種安裝核心的方法:
- 下載核心原始碼,自行調整核心功能後編譯安裝 (sys-kernel/gentoo-sources)
- 下載預先設定好的核心,編譯安裝 (sys-kernel/gentoo-kernel)
- 下載預先編譯好的核心,直接安裝 (sys-kernel/gentoo-kernel-bin)
後二者稱作distribution kernel,適合給新手使用。我選擇下載Gentoo預先編譯好的核心,直接安裝。
- 在那之前,用nano編輯
/etc/portage/make.conf
,加入以下參數,同意所有授權條款。
- 接著安裝Linux專有韌體和Intel microcode更新程式:
1
| emerge --ask sys-kernel/linux-firmware sys-firmware/intel-microcode
|
- 編譯安裝Linux核心,約20分鐘。
1
| emerge --ask sys-kernel/installkernel-gentoo sys-kernel/gentoo-kernel-bin
|
這是最耗時的階段。等編譯的時候可以去睡個一覺再回來。
- 選取profile鎖定套件版本。列出可用的profile列表:
- 選取"gnome/systemd (stable)“的profile:
- 用nano編輯
/etc/portage/make.conf
,加入以下參數。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # `USE`代表編譯軟體用的全域FLAG,不寫就是按照軟體預設值編譯
USE="nls cjk"
# 設定輸入裝置,libinput是滑鼠+鍵盤,synaptics是觸控板,wacom是繪圖板
INPUT_DEVICES="libinput synaptics wacom"
# 自動同意所有授權條款
ACCEPT_LICENSE="*"
# 指定安裝正體中文的軟體
L10N="zh-TW"
# 指定安裝amd64架構的穩定版軟體,「~amd64」不穩定但會獲得最新版軟體
ACCEPT_KEYWORDS="amd64"
# 設定要安裝的顯示卡驅動
VIDEO_CARDS="intel nvidia"
|
- 因為Profile已經設定好USE所以不需要額外設定,直接安裝GNOME完整桌面和GNOME擴充套件,內含Xorg的圖形驅動程式。
1
| emerge --ask gnome-base/gnome gnome-extra/gnome-shell-extensions gnone-extra/gnome-browser-connector
|
- 安裝完成後更新系統變數
1
2
| env-update
source /etc/profile
|
- 設定開機啟動GDM
1
| systemctl enable gdm.service
|
- 編輯
/etc/pulse/client.conf
,編輯以下參數,設定自動啟動PulseAUdio:
- 用nano編輯
/etc/fstab
,設定開機硬碟自動掛載,例如:
1
2
3
| /dev/nvme0n1p1 /boot vfat defaults,noatime 0 2
/dev/nvme0n1p2 none swap sw 0 0
/dev/nvme0n1p3 / ext4 noatime 0 1
|
- 給自己的主機取名:
1
| hostnamectl set-hostname "Gentoo"
|
- 編輯
/etc/hosts
,加入以下內容:
1
2
| 127.0.0.1 localhost Gentoo localhost
::1 localhost Gentoo localhost
|
- 修改root密碼。此密碼要求至少3個字元,並且要數字+大小寫+特殊符號混合。
- 安裝GRUB、sudo、Wifi連網工具、Chrony同步時間。
1
| emerge --ask sys-boot/grub app-admin/sudo net-wireless/iwd net-misc/chrony
|
- 將SSH、iwd、NetworkManager、Chrony加入開機服務
1
2
3
4
| systemctl enable sshd
systemctl enable iwd
systemctl enable NetworkManager
systemctl enable chronyd
|
- 初始化systmed
1
2
| systemd-firstboot --prompt --setup-machine-id
systemctl preset-all
|
- 新增一般使用者"ivon”
1
2
| useradd -m -g users -G wheel,audio,video,storage -s /bin/bash ivon
passwd ivon
|
- 用nano編輯
/etc/sudoers
,給予一般使用者root權限
1
2
| #在"root ALL=(ALL) ALL"的下一行加入以下內容:
ivon ALL=(ALL) ALL
|
- 將root和一般使用者加入plugdev群組
1
2
| gpasswd -a root plugdev
gpasswd -a ivon plugdev
|
- 安裝GRUB至系統
1
2
| grub-install --target=x86_64-efi --efi-directory=/boot
grub-mkconfig -o /boot/grub/grub.cfg
|
- 自動刪除用不到的套件
1
| emerge --ask --depclean
|
- 刪除剛剛下載的stage3檔案系統
- 退出chroot,關機,拔掉隨身碟重開機。
1
2
3
4
5
| exit
cd
umount -l /mnt/gentoo/dev{/shm,/pts,}
umount -R /mnt/gentoo
poweroff
|
GNOME預設的視窗系統是Wayland,某些軟體可能會有bug,請適時在GNOME的登入畫面右下角切換至X11視窗系統。
筆電有雙顯卡要設定NVIDIA/Optimus來啟用Nvidia顯卡。
編輯/etc/locale.gen
,加入zh_TW.UTF-8
產生語言設定檔
- 設定語言為正體中文
1
| sudo localectl set-locale zh_TW.UTF-8
|
- 安裝Google Noto Fonts中文字體。
1
| sudo emerge --ask media-fonts/noto-cjk
|
Gentoo可能會自動安裝楷體(KaiTi)字體,某些軟體會預設採用楷體顯示,這樣實在不好看。因此到/usr/share/fonts/arphicfonts
目錄,將楷體字型檔案全部刪除。
安裝Fcitx輸入法框架。Gentoo的新酷音有點舊但堪用。
sudo emerge --ask app-i18n/fcitx app-i18n/fcitx-chewing app-i18n/fcitx-configtool
- 在
~/.xprofile
填入以下內容:
1
2
3
4
5
| export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus
|
- 從系統選單找到Fcitx輸入法設定工具,啟用新酷音。重新開機,按CTRL+空白鍵切換新酷音輸入法。如果Fcitx怎麼都喚不出來,試試在GDM的登入畫面改成X11登入。
Flatpak是額外的套件管理員,可以確保每個發行版都安裝版本一致的軟體。並且能繞過Gentoo幾乎每個軟體都要編譯的不便,尤其瀏覽器這種編譯8小時以上的。
- 安裝Flatpak:
1
| sudo emerge --ask sys-apps/flatpak
|
- 加入Flathub軟體庫:
1
| flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
- 安裝Flatpak版的Chromium瀏覽器
1
| flatpak install flathub org.chromium.Chromium
|
- 安裝UFW:
1
| sudo emerge --ask net-firewall/ufw
|
- 設定開機啟動防火牆
1
2
| sudo systemctl enable ufw
sudo systemctl ufw start
|
- 開放SSH通訊埠
不同於其他發行版,Portage「安裝」軟體是稱作「合併」(merge),解除安裝則是「取消選取」(deselect)。
在安裝好系統後,/etc/portage/make.conf
裡面的全域USE,應該減少到只剩下"nls cjk pulseaudio"等最基本的FLAG。加上「-」則是停用該FLAG,例如"-qt5"。
個別套件若有需要,安裝前先到Wiki搜尋各個FLAG的用途。例如VLC影片播放器,網頁Version顯示黃色的是測試版,跟ACCEPT_KEYWORDS=~amd64"
有關。點進去看Ebuild可得知預設會啟用哪些FLAG。

接著在/etc/portage/package.use/
目錄下新增一個custom
檔案,為有需要的套件獨立設定FLAG:
1
2
3
|
# 針對VLC的設定
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重新編譯需要變更的部份。此指令也等同更新和安裝系統套件。
1
2
3
4
5
6
7
8
| # 更新系統變數,輸入-3自動合併設定檔
sudo etc-update
# 更新系統套件,會自動安裝或刪除套件
sudo emerge --ask --verbose --update --deep --newuse @world
# 更新系統套件,短一點的版本
sudo emerge -avuDN world
# 自動清理不需要的依賴套件
sudo emerge --ask --depclean
|
- 安裝套件時臨時要用到FLAG,也可以在指令中使用。例如:
1
| sudo USE="abi_x86_32 -gpm" emerge dev-util/android-sdk-update-manager
|
- 若要解除安裝套件,先取消選取,再刪除用不到的依賴套件
1
2
3
4
5
6
| # 先取消選擇個別套件
sudo emerge --deselect kde-apps/kmix
# 更新系統套件,會自動解除安裝
sudo emerge --ask --verbose --update --deep --newuse @world
# 自動清理不需要的依賴套件
sudo emerge --ask --depclean
|
- 最後是更新Gentoo的ebuild儲存庫至最新版,再更新系統套件的指令。
1
2
3
| sudo emerge-webrsync
sudo emerge --ask --verbose --update --deep --newuse @world
sudo emerge --ask --depclean
|
其餘常用指令請到官方Wiki的Gentoo Cheat Sheet查詢。
如果要加快編譯速度,可採取以下措施: