前言
這篇文章也是應該要很久以前就寫完了,但是因為我個人很懶,所以才拖到現在,剛好最近有 CCNS 的社課要教學 ArchLinux 安裝,就順便把文章生出來。
安裝 Arch 最好要確保你看得懂 ArchWiki 上寫什麼,在安裝過程中,我會盡量給出每個地方對應的 Wiki Page,如果有能力,最好將 Wiki 看完,才能對自己的系統有更深的理解,這篇文章主要是跟隨 Installation guide的流程
為什麼要使用 Arch
我個人認為 ArchLinux 有三個最主要的優點
- 高度的客製化:從安裝開始就完全由使用者決定裝什麼
- Rolling Release:ArchLinux 是滾動式更新,軟體會一直在最新的穩定版本上
- AUR:Arch User Repository,提供其他 Arch 使用者撰寫的 PKGBUILD,可以用來產生不在官方鏡像站裡的軟體包,當然,使用前需要自己看看有沒有人在裡面加料, AUR 不對此保證安全
Arch 很容易滾掛?
我使用 ArchLinux 差不多6年了,目前是沒有遇過更新到開不了機的大問題,不過日用可能隔幾個月會需要解決一些也許是因為軟體更新造成的問題,但是使用其他發行版同樣可能遇到,所以 Arch 其實並沒有別人想像的不穩定。
安裝
我個人安裝 Arch 不喜歡使用archinstall
指令,一方面是以前安裝的時候就沒這個指令,另一方面,前面提到我認為 Arch 最大的優點就是高度客製化,如果使用腳本來安裝,那為什麼不使用其他發行版或是 Artix 呢?
ArchLinux 的安裝其實很簡單,就像把大象放進冰箱只需要三個步驟一樣,我將 ArchLinux 的安裝也分成大致三個步驟( ArchWiki 的 Installation guide 也是分成這三個大步驟)
- 前置準備
- 安裝軟體
- 系統設定
- 設定各種系統文件
- 安裝其他軟體
- 設定 bootloader
前置準備
假設現在已經開機到 Arch live USB 的環境
連接網路
有線網路
如果是使用 ethernet,並且 LAN 中有 DHCP server,則 live USB 會在開機後自動獲取 IP,或是可以使用dhcpcd
指令來手動獲取 DHCP
使用ip address
來確認自己是否有獲取 IP
Wi-Fi
我個人在 live USB 中喜歡使用iwctl
來連接無線網路
1 2 3 4 5 6 7 8 9
| # iwctl [iwd] device list [iwd] station <device> scan [iwd] station <device> get-networks [iwd] station <device> connect <SSID> [iwd] exit
# # iwctl --passphrase <passphrase> station <device> connect <SSID>
|
同樣使用ip address
來確認自己是否有獲取 Wi-Fi 連接後 DHCP 配發的 IP
測試
隨便 ping 個東西測試
設定 SSH
這一項並不是必須,但如果網路內有其他電腦,我會習慣在其他電腦上 ssh 到 live USB 裡遠端安裝,這樣終端機比較好看,也可以複製貼上
1 2 3 4 5 6
| # # passwd # # vim /etc/ssh/sshd_configs # # systemctl restart sshd
|
設定時間
避免因為時間錯誤對照下載時錯誤
1
| # timedatectl set-ntp true
|
硬碟分區
我個人習慣使用 gdisk 來進行分區,看個人習慣也可以使用 fdisk、parted 或是有 TUI 的 cfdisk、cgdisk
分區範例
UEFI 需要使用 GPT 分區表,並且至少需要將/boot
獨立分區,底下是範例的分區,如果需要安裝很多不同核心或是 Early KMS 的 kernel module,則 Boot 可以適當放大到 1G, timeshift 是用來做系統備份的,我使用 ext4 因此需要額外的空間做備份,如果使用 btrfs 則不用,可以跳過這個
Name |
Size |
Code |
Boot |
512MiB |
EF00 |
Root |
60GiB |
8300/8304 |
Timeshift |
70GiB |
8300 |
Home |
- |
8300/8302 |
gdisk 指令
在 gdisk 中會需要用到的指令大概就這些,可以按?來查看所有選項
Command |
Usage |
p |
print the partition table |
n |
add a new partition |
d |
delete a partition |
c |
change a partition’s name |
t |
change a partition’s type code |
q |
quit without saving |
w |
save and exit |
x-z |
zap GPT data structures and exit |
-
基本上就是先 x 然後 z 摧毀所有原本的 GPT 分區表(如果硬碟之前有裝東西,而且不再需要裡面的資料)
-
然後 n 創建新分區,我習慣boot
在第一個,所以創建一個 1G 的分區,可以使用 +1GiB 來指定分區結束的位置,接著 Partition type 必須填 EF00
-
後面同樣創建 root 分區, home 分區可以是選擇性創建, swap 可以使用 swapfile 或是單獨創建 swap 分區
-
接著 w 儲存分區表並離開
格式化
將<>中的內容替換為對應的路徑
1 2 3 4 5 6
| # # mkfs.fat -F 32 -n Boot /dev/<efi> # # mkfs.ext4 -L Root /dev/<root> # mkfs.ext4 -L Home /dev/<home> # mkswap /dev/<swap>
|
掛載
1 2 3 4 5
| # mount /dev/<root> /mnt # mkdir /mnt/{boot,home} # mount /dev/<efi> /mnt/boot # mount /dev/<home> /mnt/home # swapon /dev/<swap>
|
安裝軟體
安裝基本系統
前置準備到這裡就結束了,接著是安裝基本系統到/mnt
(剛剛掛載的根目錄),在這裡安裝了基本的軟體和編輯器,<intel/amd>看使用的 cpu 來選擇
1
| # pacstrap -i /mnt linux linux-headers linux-firmware base base-devel vim nano <intel/amd>-ucode
|
系統設定
生成 fstab
1
| # genfstab -U -p /mnt >> /mnt/etc/fstab
|
chroot 進新的系統
1 2
| # arch-chroot /mnt # pacman -Syy
|
設定時區
1 2
| # ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime # hwclock --systohc
|
設定地區與語言
不需設定鍵盤,預設為美式英語,和台灣常用鍵盤相同
1 2 3 4 5
| # # vim /etc/locale.gen # locale-gen # echo LANG=en_US.UTF-8 > /etc/locale.conf # export LANG=en_US.UTF-8
|
設定 hostname
1 2 3
| # # vim /etc/hostname # vim /etc/hosts
|
/etc/hosts
按照下面的格式來新增,<hostname>自行替換
1 2 3
| 127.0.0.1 localhost ::1 localhost 127.0.1.1 <hostname>.localdomain <hostname>
|
新增用戶與密碼
1 2 3 4 5 6 7 8
| # # passwd # # useradd -m -G wheel,storage,power -s /bin/bash <username> # # passwd <username> # 設定sudo,找到%wheel ALL=(ALL:ALL) ALL並取消註解 # visudo
|
設定固態硬碟修剪(垃圾回收)
如果沒有 SSD 可以跳過這裡
1
| # systemctl enable fstrim.timer
|
設定系統引導
1 2 3
| # bootctl install # # vim /boot/loader/entries/arch.conf
|
1 2 3 4
| title Arch linux /vmlinuz-linux initrd /<intel/amd>-ucode.img initrd /initramfs-linux.img
|
1 2
| # echo "options root=PARTUUID=$(blkid -s PARTUUID -o value /dev/<root_partition>) rw" >> /boot/loader/entries/arch.conf # mkinitcpio -P
|
到這一步 ArchLinux 已經安裝完成了,但為了方便,我習慣直接把需要的軟體一起安裝完,而不是等重啟後進系統再裝
設定 pacman
Mirrorlist
1
| # vim /etc/pacman.d/mirrorlist
|
看自己習慣用哪些鏡像站,目前台灣最快的是 TWDS,但我有在維護 CCNS 的鏡像,所以優先使用
1 2
| Server = https://archlinux.ccns.ncku.edu.tw/archlinux/$repo/os/$arch Server = https://mirror.archlinux.tw/ArchLinux/$repo/os/$arch
|
或是可以用速度或一些條件來決定
Rate Speed
1 2
| # pacman -S pacman-contrib # rankmirrors -t /etc/pacman.d/mirrorlist
|
Reflector
1 2 3
| # pacman -S reflector # # reflector --verbose -c HK -c JP -c TW -c US -f 10 --sort rate --save /etc/pacman.d/mirrorlist
|
開啟 32bit 的支持
1 2
| # # vim /etc/pacman.conf
|
1 2
| [multilib] Include = /etc/pacman.d/mirrorlist
|
開啟 Archlinux CN
開啟 Archlinux CN Repository,有一些常用的 AUR 已經被編譯好了,看你信不信任他
1 2
| # vim /etc/pacman.conf # vim /etc/pacman.d/mirrorlist.archlinuxcn
|
1 2
| [archlinuxcn] Include = /etc/pacman.d/mirrorlist.archlinuxcn
|
1 2
| Server = https://archlinux.ccns.ncku.edu.tw/archlinuxcn/$arch Server = https://mirror.twds.com.tw/archlinuxcn/$arch
|
1
| # pacman -S archlinuxcn-keyring
|
安裝顯卡驅動
這部份最好看每個對應的 wiki page,這邊只是我很久以前整理出來節省時間的
1 2
| # pacman -S mesa lib32-mesa xf86-video-intel vulkan-intel intel-media-driver intel-gpu-tools #
|
1 2 3 4 5 6
| # # pacman -S mesa nvidia nvidia-utils lib32-nvidia-utils libglvnd lib32-libglvnd opencl-nvidia lib32-opencl-nvidia nvidia-settings # # vim /etc/mkinitcpio.conf # mkinitcpio -P # vim /boot/loader/entries/arch.conf
|
1
| MODULES=(nvidia nvidia-modeset nvidia-uvm nvidia-drm)
|
1
| options root=... nvidia_drm.modeset=1
|
hooks
使用 nvidia-dkms 可跳過設定 hook
1 2
| # mkdir /etc/pacman.d/hooks # vim /etc/pacman.d/hooks/nvidia.hooks
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [Trigger] Operation=Install Operation=Upgrade Operation=Remove Type=Package Target=nvidia Target=linux
[Action] Description=Update Nvidia module in initcpio Depends=mkinitcpio When=PostTransaction NeedsTargets Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'
|
1
| # pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon
|
安裝 AUR Helper
我習慣的 AUR Helper 是 yay,他的用法和 pacman 一模一樣
1 2 3 4 5 6 7
| # su <username> #cd # git clone https://aur.archlinux.org/yay.git # cd yay # makepkg -si # cd .. # rm -rf yay
|
安裝桌面環境
基本的應該就這些吧
1 2
| # pacman -S plasma xorg-xinit alsa-utils bluez-utils # pacman -S --asdeps xorg-server xorg-twm xterm xorg-apps pipewire-alsa pipewire pipewire-pulse pipewire-jack
|
安裝字體
看自己要裝哪些
1
| # yay -S ttf-inconsolata nerd-fonts awesome-terminal-fonts ttf-nerd-fonts-symbols-2048-em ttf-nerd-fonts-symbols-2048-em-mono nerd-fonts-3270 noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-dejavu ttf-droid ttf-hack ttf-liberation ttf-opensans
|
安裝輸入法
1
| # pacman -S fcitx5-im fcitx5-rime
|
其他
我個人還有額外裝很多東西,不過那些等到下一篇文章再說吧,這篇只是針對安裝 ArchLinux 已經夠長了
啟動服務
1 2 3 4
| # systemctl enable NetworkManager # systemctl enable avahi-daemon # systemctl enable bluetooth # systemctl enable sddm
|
重新啟動
1 2 3 4
| # # exit # umount -R /mnt # reboot
|
參考