快轉到主要內容

筆電Gentoo Linux 安裝紀錄 (Systemd + Gnome)

Linux系統 Linux系統安裝教學 Gentoo
🗓️ 民國111年 壬寅年
✍ 切換正體/簡體字
目錄

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

為什麼要選擇GNOME呢?因為對筆電的觸控板支援較好,界面和字體大小簡單明瞭。

實際上Gentoo的GNOME支援使用OpenRC當init系統,但有越來越多的程式以systemd為中心撰寫,要使用GNOME的最新功能還是使用systemd比較保險。

以下資訊可能會過時,請自行到 Gentoo Wiki AMD64安裝手冊 Gentoo Wiki GNOME指南查詢細節設定。

0. Gentoo硬體需求
#

4核心以上處理器,8GB RAM,64GB儲存空間。

以上為建議值,因為Gentoo安裝套件是用編譯的,CPU性能至關重要。

我的筆電硬體規格:

  • CPU: Intel i5-10210U
  • GPU: Nvidia MX350
  • RAM: 8GB
  • SSD: 512GB

1. 製作Gentoo安裝隨身碟
#

  1. 前往 Gentoo官網下載AMD64架構"Minimal Installation CD"的ISO。

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

2. 安裝Gentoo系統
#

此步驟會安裝GNOME桌面環境的Gentoo系統。

  1. 用隨身碟開機。

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

2.1. 設定網路
#

  1. net-setup eth0設定有線網路,再測試有線網路連線狀況,收到Bytes…的訊息代表有連上網路。
ping -c 3 google.com
  1. 如果要使用內建網卡的Wifi,輸入ifconfig查看Wifi裝置名稱,再使用指令net-setup 裝置名稱自動設定網路連線,例如:
ifconfig wlo1 up
net-setup wlo1

2.2. 分割硬碟
#

安裝時候為了避免誤傷資料碟,我會把其他硬碟的線條拔掉,只留下安裝系統的SSD。

  1. 用fdisk查看硬碟列表,筆電的硬碟應該是顯示為/dev/nvme0n1/dev/sda
fdisk -l
  1. 用fdisk分割硬碟。此分割表是給UEFI系統使用,沒有做SWAP。
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
  1. 輸入fdisk /dev/nvme0n1 -l,分割表應該會長這樣:
/dev/nvme0n1p1  512MB  EFI
/dev/nvme0n1p2  32GB   SWAP
/dev/nvme0n1p3  450GB  Linux
  1. 格式化並建立檔案系統
mkfs.vfat -F32 /dev/nvme0n1p1
mkswap /dev/nvme0n1p2
mkfs.ext4 /dev/nvme0n1p3
  1. 啟用Swap
swapon /dev/nvme0n1p2
  1. 掛載root分區
mount /dev/nvme0n1p3 /mnt/gentoo
cd /mnt/gentoo

2.3. 安裝stage3檔案系統
#

  1. 下載前先校時
ntpd -q -g
  1. 下載stage3 Gentoo檔案系統,到 Gentoo官網下載"Stage3"的檔案,選擇desktop profile | systemd版,按右鍵取得網址。例如:
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
  1. 用nano編輯/etc/portage/make.conf,加入以下參數,讓Gentoo使用更多CPU執行緒編譯套件。
MAKEOPTS="-j8"
  1. 設定鏡像站點,選單用上下鍵移動,用空白鍵選取台灣NCHC的鏡像(twaren)後按下Enter。
mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf
  1. 複製Portage軟體庫設定
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設定
cp --dereference /etc/resolv.conf /mnt/gentoo/etc/
  1. 掛載系統目錄,chroot到系統
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}"
  1. 掛載EFI分區
mount /dev/nvme0n1p1 /boot
  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
export PS1="(chroot) ${PS1}"

2.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. 接著安裝Linux專有韌體和Intel microcode更新程式:
emerge --ask sys-kernel/linux-firmware  sys-firmware/intel-microcode
  1. 編譯安裝Linux核心,約20分鐘。
emerge --ask sys-kernel/installkernel-gentoo  sys-kernel/gentoo-kernel-bin

2.5. 安裝GNOME桌面環境
#

這是最耗時的階段。等編譯的時候可以去睡個一覺再回來。

  1. 選取profile鎖定套件版本。列出可用的profile列表:
eselect profile list
  1. 選取"gnome/systemd (stable)“的profile:
eselect profile set 7
  1. 用nano編輯/etc/portage/make.conf,加入以下參數。
# `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"
  1. 因為Profile已經設定好USE所以不需要額外設定,直接安裝GNOME完整桌面和GNOME擴充套件,內含Xorg的圖形驅動程式。
emerge --ask  gnome-base/gnome  gnome-extra/gnome-shell-extensions  gnone-extra/gnome-browser-connector
  1. 安裝完成後更新系統變數
env-update
source /etc/profile
  1. 設定開機啟動GDM
systemctl enable gdm.service

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

  1. 用nano編輯/etc/fstab,設定開機硬碟自動掛載,例如:
/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"
  1. 編輯/etc/hosts,加入以下內容:
127.0.0.1 localhost Gentoo localhost
::1 localhost Gentoo localhost
  1. 修改root密碼。此密碼要求至少3個字元,並且要數字+大小寫+特殊符號混合。
passwd
  1. 安裝GRUB、sudo、Wifi連網工具、Chrony同步時間。
emerge --ask sys-boot/grub  app-admin/sudo net-wireless/iwd  net-misc/chrony
  1. 將SSH、iwd、NetworkManager、Chrony加入開機服務
systemctl enable sshd
systemctl enable iwd
systemctl enable NetworkManager
systemctl enable chronyd
  1. 初始化systemd
systemd-firstboot --prompt --setup-machine-id
systemctl preset-all
  1. 新增一般使用者"user”
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash user
passwd user
  1. 用nano編輯/etc/sudoers,給予一般使用者root權限
#在"root ALL=(ALL) ALL"的下一行加入以下內容:
user ALL=(ALL) ALL
  1. 將root和一般使用者加入plugdev群組
gpasswd -a root plugdev
gpasswd -a user plugdev
  1. 安裝GRUB至系統
grub-install --target=x86_64-efi --efi-directory=/boot
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

3. Gentoo後續安裝優化
#

GNOME預設的視窗系統是Wayland,某些軟體可能會有bug,請適時在GNOME的登入畫面右下角切換至X11視窗系統。

筆電有雙顯卡要設定 NVIDIA/Optimus來啟用Nvidia顯卡。

3.1. Gentoo中文化和安裝輸入法
#

  1. 編輯/etc/locale.gen,加入zh_TW.UTF-8

  2. 產生語言設定檔

sudo locale-gen
  1. 設定語言為正體中文
sudo localectl set-locale zh_TW.UTF-8
  1. 安裝Google Noto Fonts中文字體。
sudo emerge --ask media-fonts/noto-cjk
  1. Gentoo可能會自動安裝楷體(KaiTi)字體,某些軟體會預設採用楷體顯示,這樣實在不好看。因此到/usr/share/fonts/arphicfonts目錄,將楷體字型檔案全部刪除。

  2. 安裝Fcitx輸入法框架。Gentoo的新酷音有點舊但堪用。

sudo emerge --ask app-i18n/fcitx app-i18n/fcitx-chewing app-i18n/fcitx-configtool
  1. ~/.xprofile填入以下內容:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export SDL_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus
  1. 從系統選單找到Fcitx輸入法設定工具,啟用新酷音。重新開機,按CTRL+空白鍵切換新酷音輸入法。如果Fcitx怎麼都喚不出來,試試在GDM的登入畫面改成X11登入。

3.2. 安裝Flatpak
#

Flatpak是額外的套件管理員,可以確保每個發行版都安裝版本一致的軟體。並且能繞過Gentoo幾乎每個軟體都要編譯的不便,尤其瀏覽器這種編譯8小時以上的。

  1. 安裝Flatpak:
sudo emerge --ask sys-apps/flatpak
  1. 加入Flathub軟體庫:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  1. 安裝Flatpak版的Chromium瀏覽器
flatpak install flathub org.chromium.Chromium

3.3. 設定防火牆
#

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

3.4. Portage套件管理員的使用方式
#

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

  1. 在安裝好系統後,/etc/portage/make.conf裡面的全域USE,應該減少到只剩下"nls cjk pulseaudio"等最基本的FLAG。加上「-」則是停用該FLAG,例如"-qt5"。

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

  3. 接著在/etc/portage/package.use/目錄下新增一個custom檔案,為有需要的套件獨立設定FLAG:


# 針對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
  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. 若要解除安裝套件,先取消選取,再刪除用不到的依賴套件
# 先取消選擇個別套件
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查詢。

3.5. 加快Gentoo編譯速度
#

如果要加快編譯速度,可採取以下措施:

  • 依CPU核心數,調高/etc/portage/make.confMAKEOPTS的「-j+執行緒數」
  • 安裝 CCache設定快取,這樣以後重新編譯就會利用快取中的obj檔案加快編譯速度。
  • 設定 DistCC,利用多部電腦合作編譯套件。
  • 掛載 TMPFS充當虛擬記憶體。
  • Portage下載套件時直接選取二進位版本,就不需要等編譯了。

相關文章

桌上電腦安裝Gentoo Linux筆記 (OpenRC + KDE)
Linux系統 Linux系統安裝教學 Gentoo
如何在已裝有Ubuntu的電腦安裝Windows 10雙系統
Linux系統 Linux系統安裝教學 Ubuntu Windows
安裝Alpine Linux為桌面系統教學 (XFCE4 + 中文輸入法)
Linux系統 Linux系統安裝教學 Alpine Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。