如何打造屬於你的作業系統

12 min

Arch Linux 秉持極簡主義,讓使用者能自由打造所需的任何功能。以下以實機部署為例,簡單介紹如何構建屬於你的 Arch Linux。

準備工作

需要準備:電腦、USB 隨身碟(或任何可移動儲存媒介)、網路連線、基本的資訊檢索能力

  • 不論使用何種安裝映像檔方案,即使是離線版映像檔,建議準備好網路環境,以確保核心和工具的更新。若你非常熟悉 Arch Linux,也可自行決定是否需要網路。
  • 如果使用無線網路,請確保 Wi-Fi 名稱使用英文,因為在 tty 環境下無法顯示中文,中文名稱會顯示為無法辨識的方塊字元。
  • 如果計劃在同一顆硬碟上安裝雙系統,請為 Arch Linux 預留足夠的硬碟空間,建議至少 100GB 以便安裝其他軟體;並確保 EFI 分區容量不少於 256MB,或新增額外的掛載點
  • 檢查 Windows 10 分區是否啟用 BitLocker 加密,務必提前取得恢復金鑰,並關閉電源選項中的「快速啟動」功能!

在操作前,請務必仔細閱讀並針對不理解的部分進行搜尋學習,謹慎操作,及時備份,資料無價。

安裝媒介的製作

  1. 建議僅從 Arch Linux 官方映像檔來源 下載,請注意,Arch Linux 是滾動更新發行版。
  2. 若要自行編譯核心,請參考「核心/傳統編譯」
  3. 若使用官方提供的安裝映像檔,建議使用 Ventoy 燒錄。

基礎安裝

1. 使用 Arch Linux 引導碟

關機,插入 USB 隨身碟後開機,進入 BIOS 選擇從 USB 啟動,選取第一個選項並按 Enter,進入 Arch Linux 安裝環境。

2. UEFI 檢查

systemctl stop reflector.service
# 禁用自動更新軟體來源,因為地理因素可能影響網路環境,建議關閉。
ls /sys/firmware/efi/efivars
# 若顯示一串 EFI 變數,表示已使用 UEFI 模式啟動。2025 年的大多數機器皆為 UEFI 引導。

3. 連線網路

Arch Linux 安裝需要網路環境,離線安裝步驟較為繁瑣,可參考社群的 離線安裝指南

有線網路連線無需多述,接上網路線後檢查介面指示燈是否閃爍,等待數秒後即可完成連線。

若在校園網路環境中,需由上層路由器完成認證,可參考 nbtverify 專案。

無線網路則使用 iwctl 進行連線。

lspci -k | grep Network
# 檢查無線網卡是否正常運作,若確認無問題可跳過此步。

檢查核心是否載入無線網卡驅動程式。

通常會顯示類似:00:14.3 Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20)

若無顯示,檢查無線連線是否被禁用(blocked: yes)。

rfkill list
# 無線網卡通常命名為 wlan0。
ip link set wlan0 up
# 若出現類似「Operation not possible due to RF-kill」錯誤,則執行:
rfkill unblock wifi
# 使用 iwctl 連線網路
iwctl # 進入互動式命令列
device list # 列出無線網卡設備名稱,例如 wlan0
station wlan0 scan # 掃描網路
station wlan0 get-networks # 列出所有 Wi-Fi 網路
station wlan0 connect wifi-name # 連線至指定網路,注意無法輸入中文名稱。輸入密碼後按 Enter
exit # 連線成功後退出

ping www.google.com # 測試網路連通性

若網路設定遇到問題,可參考 [網路設定.wpi

System: 設定/無線網路設定](https://wiki.archlinux.org/title/Network_configuration/Wireless)。

5. 同步系統時間

timedatectl set-ntp true # 將系統時間與網路時間同步
timedatectl status # 檢查服務狀態

6. 更換台灣或國際軟體來源(若在國際網路環境可忽略)

vim /etc/pacman.d/mirrorlist # 準備更換軟體來源,若已透過代理連線國際網路可忽略
Server = https://free.nchc.org.tw/archlinux/$repo/os/$arch # 國家高速網路與計算中心
Server = https://archlinux.cs.nctu.edu.tw/$repo/os/$arch # 國立交通大學
Server = https://mirror.liquidtelecom.com/archlinux/$repo/os/$arch # Liquid Telecom

7. 建立 Btrfs 分區

查看磁碟資訊

lsblk

顯示當前分區情況。請仔細檢查你要安裝 Arch Linux 的目標硬碟名稱

硬碟命名規則:

  • SATA 協議sdasdbsdc …… 分區為 sda1sda2
  • NVMe 協議nvme0n1nvme1n1 …… 分區為 nvme0n1p1nvme0n1p2

示例以 SATA 硬碟為例,請根據實際情況替換 /dev/sdx

cfdisk /dev/sdx

是否看到一個友好的 TUI 分區介面?😄

分區操作步驟

1. 建立 Swap 分區
  • 使用方向鍵選中 Free space
  • 按下 [New] 並按 Enter,輸入大小(建議為記憶體大小的 60%~100%)。
  • [Type],選擇 Linux swap
2. 建立根分區(用於 Btrfs)
  • 選中剩餘的 Free space,按 [New] 並按 Enter。
  • 輸入大小(預設使用全部剩餘空間)。
  • 保持類型為預設的 Linux filesystem
3. 寫入分區表
  • 選中 [Write],輸入 yes 並按 Enter。

    ⚠️ 注意:若未寫入,之前的操作不會生效!

格式化分區

再次檢查磁碟
fdisk -l
格式化 EFI 分區(若需新建)
mkfs.fat -F32 /dev/sdxn

💡 若為雙系統使用者,可共用 Windows 的 EFI 分區,無需格式化,但需確保空間足夠,詳見 與 Windows 雙系統

格式化 Swap 分區
mkswap /dev/sdxn
格式化 Btrfs 分區
mkfs.btrfs -L myArch /dev/sdxn

建立並掛載 Btrfs 子卷

mount -t btrfs -o compress=zstd /dev/sdxn /mnt

# 建立子卷
btrfs subvolume create /mnt/@        # 根目錄子卷
btrfs subvolume create /mnt/@home    # /home 子卷

umount /mnt

⚠️ 最後提醒

  • 請再次檢查命令和操作的正確性!
  • 誤操作可能導致資料遺失,尤其是誤刪 Windows 分區 😥

8. 掛載,從根目錄依序掛載

mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxn /mnt # 掛載 / 目錄
mkdir /mnt/home # 建立 /home 目錄
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdxn /mnt/home # 掛載 /home 目錄
mkdir -p /mnt/boot # 建立 /boot 目錄
mount /dev/sdxn /mnt/boot # 掛載 /boot 目錄
swapon /dev/sdxn # 掛載交換分區
df -h # 檢查掛載
free -h # 檢查 Swap 分區掛載

9. 安裝系統

pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
# 若使用 Btrfs 檔案系統,需額外安裝 btrfs-progs 套件
pacman -S archlinux-keyring
# 若提示 GPG 證書錯誤,可能是因為使用的不是最新映像檔,可透過更新 archlinux-keyring 解決
pacstrap /mnt networkmanager vim sudo zsh zsh-completions
# 使用 pacstrap 指令碼安裝必要的功能性軟體

10. 生成 fstab 檔案

生成 fstab 以定義磁碟分區,會受到當前掛載情況影響。

genfstab -U /mnt > /mnt/etc/fstab

11. 進入新系統

arch-chroot /mnt
# 程式碼高亮消失了?別擔心,這表示你已成功切換到新系統!

12. 設定主機名稱與時區

vim /etc/hostname
# 為你的電腦取個名字吧 XD(避免使用特殊字元和空格,否則可能出問題;不設定主機名稱也可能導致某些 GUI 程式異常終止,建議務必設定)
vim /etc/hosts
# 編輯主機 hosts 檔案

填入以下內容(將 myarch 替換為你設定的主機名稱,注意中間間隔使用 Tab 對齊):

127.0.0.1   localhost
::1         localhost
127.0.1.1   myarch.localdomain  myarch
ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
# 在台北時區建立符號連結
ls /usr/share/zoneinfo/
# 檢查可用時區,必要時更換上述命令中的時區路徑

13. 硬體時間設定

hwclock --systohc
# 將系統時間同步至硬體時間

14. 設定語系

vim /etc/locale.gen
# 編輯 /etc/locale.gen,移除 en_US.UTF-8 UTF-8 和 zh_TW.UTF-8 UTF-8 行前的註解符號(#)
# 此步驟決定軟體使用的語言和字元集
locale-gen
# 生成語系
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
# 設定 locale.conf,不建議使用中文語系,否則 tty 可能出現亂碼

15. 設定 root 密碼

passwd root
# 輸入密碼時不會顯示,屬正常現象,非鍵盤故障 XD

16. 安裝微碼

pacman -S intel-ucode # Intel 處理器
Джpacman -S amd-ucode # AMD 處理器

17. 安裝 Grub 引導程式

pacman -S grub efibootmgr os-prober
# grub 為啟動引導程式,efibootmgr 用於向 NVRAM 寫入啟動項,os-prober 用於引導 Windows 10
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
# 將 grub 安裝至 EFI 分區
vim /etc/default/grub
# 編輯啟動參數
# 將 "loglevel=3 quiet" 修改為 "loglevel=5 nowatchdog"
# 在檔案末尾新增一行:GRUB_DISABLE_OS_PROBER=false
  • 移除 GRUB_CMDLINE_LINUX_DEFAULT 行中的 quiet 參數。
  • 將 loglevel 的數值從 3 改為 5,以便在系統錯誤時方便排錯。
  • 加入 nowatchdog 參數,可顯著提升開關機速度。
  • 加入 os-prober 參數,用於引導 Windows 10。
grub-mkconfig -o /boot/grub/grub.cfg
# 生成 grub 所需的設定檔
# 若檢測到 Windows 10,會顯示一行類似「Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi done」的回顯
# 若 Windows 10 位於另一顆硬碟,可能不會顯示,進入系統後重新掛載並再次執行即可

有關全部參數的說明,可參考 Arch Wiki

18. 完成安裝

exit # 返回安裝環境
umount -R /mnt # 卸載新分區
reboot # 重新啟動

重新啟動後使用 root 帳戶登入。

systemctl enable --now NetworkManager # 設定開機自啟並立即啟動 NetworkManager 服務
ping www.google.com # 測試網路連通性

若使用無線網路:

nmcli dev wifi list # 顯示附近的 Wi-Fi 網路
nmcli dev wifi connect "Wi-Fi 名稱(SSID)" password "網路密碼" # 連線至指定的無線網路
nmtui
# 個人較推薦 nmtui,介面較為友好 XD
pacman -S fastfetch
fastfetch
# 安裝 fastfetch,檢查系統資訊
# 喜聞樂見的 neofetch 時刻 XD
shutdown 0
shutdown -h now
poweroff
# 以上三個命令皆為關機,🤣 記得關機,因為電源策略尚未設定

恭喜 🎉

至此,你已完成一個基礎的無圖形介面的 Arch Linux 安裝!

圖形化介面的安裝指南將在下次更新發布,還是那句老話:多閱讀官方手冊!

本文旨在拋磚引玉,希望吸引更多同好加入技術交流的行列!


友情連結:NBTCA