Try   HackMD

2021 07 ArchLinux 安裝紀錄

基於種種因素,導致我大約 2~3 個月就會重灌一次 ArchLinux ,有陣子甚至一個月一次,一直想找時間寫個安裝紀錄,現在終於要來寫了。
在此之前還是跟網路上的大家說得一樣,因為 Arch 的 iso 每個月都會更新,所以還是以 wiki 上的為準。

事先準備

  • 燒好 Arch iso 的 USB
  • 一台可以查資料的筆電 or 手機(想當初第一次灌的時候就只有一隻小手機在那邊查,相當克難)

進入 iso

網路

以 iso 開機後直接選擇第一個進入。

第一個要做的就是手動掛上網路,有線或無線網路都可以:

  • 有線網路
    ​​​​root@archiso ~ # ip link
    
    
    此時會列出一些介面的名字,並且 state 都會是 DOWN ,找到自己捅網路線的那個介面然後掛上它,例如我的叫做 enp3s0 。
    ​​​​root@archiso ~ # ip link set enp3s0 up
    
    這時候再下一次 ip link 應該會看到它的 state 變成 UP 。
  • 無線網路
    請參閱 iwctl 因為基本上很少用所以就先不寫了。

掛好網路之後可以測試一下是否可以正常連線

root@archiso ~ # ping archlinux.org
PING archlinux.org (95.217.163.246) 56(84) bytes of data.
64 bytes from archlinux.org (95.217.163.246): icmp_seq=1 ttl=49 time=238 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=2 ttl=49 time=237 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=3 ttl=49 time=237 ms
64 bytes from archlinux.org (95.217.163.246): icmp_seq=4 ttl=49 time=238 ms

系統時鐘

root@archiso ~ # timedatectl set-ntp true 

相關配置雜談

Arch Linux - Wikipedia

Arch Linux 是由二進位軟體包組成的,這些軟體包會針對 x86-64 最佳化以配合目前的硬體。類似 Ports/ebuild 也在 Arch Linux 上發展,即「Arch Build System」。

Arch Build System

'ABS' may be used as an umbrella term since it includes and relies on several other components; therefore, though not technically accurate, 'ABS' can refer to the following tools as a complete toolkit:

  • Repository tree
  • PKGBUILD
  • makepkg
  • pacman
  • AUR

makepkg

/etc/makepkg.conf 裡面可以調整編譯時的選項,包含了 make 時要加的參數,預設是關閉的:

MAKEFLAGS="-j$(expr $(nproc) \+ 1)"

以上設定可以讓 make 時以 CPU 核心數 + 1 的執行緒去處理。

節錄自 man 1 make

​​​​-j [jobs], --jobs[=jobs]
​​​​    Specifies  the number of jobs (commands) to run simultaneously.  If there
​​​​    is more than one -j option, the last one is effective.  If the -j  option
​​​​    is given without an argument, make will not limit the number of jobs that
​​​​    can run simultaneously.

pacman

pacman 在 6.0 以後正式支援平行下載,對於要下載很多小套件的時候相當有幫助,需要手動開啟。

pacman 相關的配置放在 /etc/pacman.conf

# Misc options #UseSyslog Color #NoProgressBar CheckSpace #VerbosePkgLists ParallelDownloads = 6 ILoveCandy
  • Color: 有顏色看起來比較舒服對吧?
  • ParallelDownloads: 平行下載
  • ILoveCandy: pacman 的彩蛋,開就對了。
[core] Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch Include = /etc/pacman.d/mirrorlist [extra] Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch Include = /etc/pacman.d/mirrorlist #[community-testing] #Include = /etc/pacman.d/mirrorlist [community] Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch Include = /etc/pacman.d/mirrorlist # If you want to run 32 bit applications on your x86_64 system, # enable the multilib repositories as required here. #[multilib-testing] #Include = /etc/pacman.d/mirrorlist #[multilib] #Include = /etc/pacman.d/mirrorlist

如果覺得預設的鏡像站太慢的話可以用交大或其他自訂的鏡像站,或是用 Reflector 協助找出適合的鏡像站。

multilib 提供了 32 位元的套件,需要的話可以將其註解刪掉。

DNS Server

有鑑於之前被 NetworkManager 雷過的經驗,之後我只要網路有問題都會特別想過這邊。
之前遇到的問題是 Spotify 一直沒辦法登入,但是網頁版又正常,後來才發現是 DNS 的問題,反正先改掉再說,免除後患。

/etc/resolv.conf

nameserver 8.8.8.8

磁碟、檔案系統

分割與格式化

我的磁碟配法是 1TB 的 SSD 切三份,接下來會以這樣的配置為例子。

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 931.5G  0 disk
├─sda1        8:1    0    32G  0 part [SWAP]
├─sda2        8:2    0   512M  0 part /boot
└─sda3        8:3    0   899G  0 part /

使用 fdisk 可以得到電腦上硬碟的相關資訊,並且配置磁區,關於切法網路上也滿多了,甚至可以先開個有 GUI 的 OS 先切好,這邊不贅述。

切好之後就分別將各磁區格式化

root@archiso ~ # mkfs.ext4 /dev/sda3
root@archiso ~ # mkfs.vfat -F32 /dev/sda2
root@archiso ~ # mkswap /dev/sda1

切好之後就掛上去

root@archiso ~ # mount /dev/sda3 /mnt
root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/sda2 /mnt/boot
root@archiso ~ # swapon /dev/sda1

fstab

手動產生 fstab

/etc/fstab 這個檔案提供了檔案系統的資訊。他定義了儲存設備和磁區如何初始化和如何聯接至整個系統。

root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab

製作好之後可以確認一下裡面的內容(每個地方都這樣寫也沒跟你講要怎麼確認)

# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda3
UUID=fa37e6c0-2e6e-4982-9a5f-dbef1940a4f0	/         	ext4      	rw,relatime,discard	0 1

# /dev/sda2
UUID=2353-4428      	/boot     	vfat      	rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro	0 2

# /dev/sda1
UUID=e0790b4a-eb2e-42a2-a579-b4a1a6c84ed6	none      	swap      	defaults  	0 0

最簡單的方式就是下 blkid 確認一下 fstab 裡面的 UUID 跟你之前配置的一不一樣,理論上不會出錯,這邊有兩點要特別注意:

  1. 如果之前沒有 swapon 的話這邊不會出現 swap 分區
  2. SSD 可以開啟 Trim 功能
    簡單來說就是確認硬碟及檔案系統都支援之後在 options 的最後面多加一個 discard

安裝基本系統

掛載好之後就可以開始裝 ArchLinux 了,把你需要的套件包進去。

archiso@root ~ # pacstrap /mnt base base-devel linux linux-firmware vim

備註:wiki 上面只有寫 base linux linux-firmware 而已

Chroot 與基本配置

安裝好之後就可以切進去基本系統進行配置了

archiso@root ~ # arch-chroot /mnt
[root@archiso /]# _

進來之後可以先再設定一次 相關配置雜談

然後是時區

[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime

硬體時鐘

[root@archiso /]# hwclock --systohc

地區語系

這邊建議先設定為英文就好,等之後有桌面環境再新增中文的,如果用中文的環境安裝桌面環境的話 XDG user direcotries 會變成中文的,在 terminal 切換的時候會非常不方便。

先到 /etc/locale.gen 將需要的語言和編碼取消註解

en_US.UTF-8 UTF-8

建立一個檔案 /etc/locale.conf 並加入以下內容

LANG=en_US.UTF-8

設定好之後下指令

[root@archiso /]# locale-gen

網路相關

建立 /etc/hostname

myhostname

編輯 /etc/hosts

127.0.0.1    localhost
::1          localhost
127.0.0.1    myhostname.localdomain myhostname

如果是固定 IP 的網路的話記得把這邊的 127.0.0.1 換成固定 IP 的位址

Root

設定 Root 使用者密碼

[root@archiso /]# passwd

Bootloader

通常都用 GRUB

[root@archiso /]# pacman -S os-prober grub efibootmgr
[root@archiso /]# os-prober

os-prober 可以自己檢測硬碟內其他的作業系統,如果不想要噁心的 Windows 出現在開機選單或是沒有其他系統的話可以不用裝。之後如果想要開其他系統的話可以在 GRUB 的開機選單進去 SHELL 介面輸入 exit 就會自動去找下一個開機順序了。

安裝好相關套件之後先確認硬碟分割是 GPT/UEFI 還是 BIOS/MBR ,可以用 fdisk -l /dev/sdX 來確認。

GPT/UEFI

基於前面的磁碟切法所以指令這樣下

[root@archiso /]# grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
[root@archiso /]# grub-mkconfig -o /boot/grub/grub.cfg

BIOS/MBR

[root@archiso /]# grub-install --target=i386-pc /dev/sda

雜談

如果開機後 dmesg 裡面一直出現 [BADDLLP] 錯誤訊息的話可以去 GRUB 的 config 裡面 /boot/grub/grub.cfg 會發現有一行開機的參數:

	linux	/vmlinuz-linux root=UUID=fa37e6c0-2e6e-4982-9a5f-dbef1940a4f0 rw  loglevel=3 quiet

queit 的後面加上 pci=nommconf 就可以了。
如果只在開機的 GRUB 選單裡面更改的話只有該次開機有效果,這邊的設定是永久的。

基本上到這邊就完成了,但是要拿來做日常使用的話還會需要一般使用者與桌面環境。

使用者與桌面環境

建立使用者、 sudo

最新的 base-devel 已經把 sudo 包進來了,如果沒有的話可以手動用 pacman 安裝。

新增使用者

[root@archiso /]# useradd user

設定使用者密碼

[root@archiso /]# passwd user

給使用者 superuser 權限

[root@archiso /]# usermod user -G wheel

然後到 /etc/sudoers 取消以下的註解

## Uncomment to allow members of group wheel to execute any command %wheel ALL=(ALL) ALL

網路套件

建立完使用者之後重新開機便可以用剛剛建立的 user 登入了,但是在重新開機之前最好先裝好網路相關套件,省得一些麻煩事。

[root@archiso /]# pacman -S net-tools wpa_supplicant wireless_tools networkmanager
[root@archiso /]# systemctl enable NetworkManager

其中最重要的就是 NetworkManager 了,堪稱網路神器,從簡單到複雜都能設定,不裝對不起自己阿。

開始前

在裝 DE 之前,一定要安裝 ArchLinux 的精髓, AUR Helper , Wiki 上面有很多可以選擇,個人習慣用 yay

$ sudo pacman -S git
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -s

Gnome

自己用 Gnome 大概有 2~3 年左右,畢竟是 Ubuntu 的預設 DE ,到後來 Gnome40 我還是覺得不錯用,不管是到 Gnome-look 上面找喜歡的主題、圖示、游標,或是用 Gnome Extensions 一鍵安裝喜歡的擴充功能,都非常棒,但是後來因為記憶體太常吃滿以及手癢的關係換到 i3wm 去了,這邊提供 Gnome 的安裝方法及個人偏好。

$ sudo pacman -S xorg xorg-server
$ sudo pamcan -S gnome gnome-extra gnome-tweaks
$ sudo systemctl enable gdm

之後會有一些選項,如果看不懂或是不知道怎麼選的話就都用預設,全部裝就對了,反正硬碟很便宜。

裝好之後重開機就可以進入桌面環境了。

Gnome Shell Extensions

裝 Extensions 之前記得先在 gnome-tweaks 裡面開啟 User themes 選項。還有一些繁瑣的設定請自行 Google

i3wm + lightdm

i3wm 的各種分支:

$ sudo pacman -S i3 xorg xorg-server lightdm lightdm-gtk-greeter picom alacritty rofi
$ sudo systemctl enable lightdm

簡單說明一下上面的配置:

  • i3 :不用多做說明了吧,就是我們想裝的 WM 。
  • xorg : i3 是基於 X 視窗系統 的。
  • lightdm : 幫助我們有一個 GUI 的介面可以登入,如果你喜歡配置 xinitrc 之類的東西也可以不裝。
  • picom : Compositor ,負責動畫繪圖等效果,參見下面說明。
  • alacritty : 使用 GPU 加速的終端模擬器,可以換成其他自己想要的。
  • rofi : 程式的起動器,方便我們快速啟動某個程式。

X11 的運作模式:

X Window 設定介紹
Wayland vs Xorg

如果看完上面的比較喜歡 Wayland 的話可以選擇相容 i3 的 Sway

安裝好之後你會發現自己的家目錄下面沒有 Desktop 之類的目錄,這時候只需要設定前面提過的 XDG user directories ,就好,方法也很簡單:

$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update

執行完之後就會看到熟悉的桌面和下載等目錄了。

順便分享一下自己的 dotfiles:
asas1asas200/dotfiles

如果想試試看 i3 但又怕不習慣的話可以先裝好 Gnome ,然後再裝 i3 ,裝好重開機後在 GDM 的登入頁面右下角可以選擇 i3 ,真的不習慣再換回來就可以了。

ibus-chewing

如果你是 Gnome 的使用者,基本上可以直接跳過這邊,因為 Gnome 都幫你處理好了。
我自己習慣用 ibus 的新酷音輸入法,先安裝相關套件:

$ pacman -S ibus ibus-chewing libibus libchewing

然後設定 ibus daemon 在每次進入桌面環境時啟動,在 ~/.config/i3/config 加入這行:

exec --no-startup-id ibus-daemon -drxR

最後編輯 /etc/environment

GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus

顯卡驅動

基本上 intel 和 AMD 的都沒什麼太大的問題,所以這邊不提,主要是當初搞 Nvidia 搞到心力憔悴,所以在這邊分享一些相關的東西。

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

ArchLinux 裝 Nvidia 的驅動非常簡單:

$ sudo pacman -S nvidia nvtop

nvtop 是一個像 htop 的套件,可以監控顯卡目前的運作狀態。

裝好之後你會發現系統開機時不會自己啟動 Nvidia 模式(如果有的話當然是最好,就不用另外調整了),此時可以透過 Bumblebee 之類的軟體去讓某些應用程式以 Nvidia 的顯卡啟動,不過這個方法我後來就不用了,主要是因為有點麻煩,我希望我的所有程式可以的話都用 Nvidia 的顯卡去加速運算,這時候就有一個更好用的套件 optimus-manager ,多虧了 AUR 現在只要兩個指令就可以擁有它:

$ yay -S optimus-manager
$ sudo systemctl enable optimus-manager

另外也有 qt 的版本可以安裝 optimus-manager-qtoptimus-manager-qt-git

然後在 /etc/optimus-manager/optimus-manager.conf 裡面編輯:

startup_mode=nvidia

這樣登入的時候就會用 Nvidia 模式執行了,可以在開機後執行 nvtop 來確認,應該會有一些程式執行。