[心得] 2021 07 ArchLinux 安裝紀錄
大家好 前幾天又重裝了一次 ArchLinux 並且寫了一些安裝的心得
以下是 Hackmd 原文照搬的版本 因為是 markdown 所以傷眼的話還請見諒
圖文並茂版:https://hackmd.io/@Zeng/2021-07-ArchLinuxInstall
請各位不吝指教
# 2021 07 ArchLinux 安裝紀錄
> 基於種種因素,導致我大約 2~3 個月就會重灌一次 ArchLinux ,有陣子甚至一個月一
次,一直想找時間寫個安裝紀錄,現在終於要來寫了。
> 在此之前還是跟網路上的大家說得一樣,因為 Arch 的 iso 每個月都會更新,所以還
是以 [wiki](https://wiki.archlinux.org/title/installation_guide) 上的為準。
## 事先準備
+ 燒好 Arch iso 的 USB
+ 一台可以查資料的筆電 or 手機(想當初第一次灌的時候就只有一隻小手機在那邊查,
相當克難)
## 進入 iso
### 網路
以 iso 開機後直接選擇第一個進入。
第一個要做的就是手動掛上網路,有線或無線網路都可以:
+ 有線網路
```sh
root@archiso ~ # ip link
```
此時會列出一些介面的名字,並且 state 都會是 DOWN ,找到自己捅網路線的那個
介面然後掛上它,例如我的叫做 enp3s0 。
```sh
root@archiso ~ # ip link set enp3s0 up
```
這時候再下一次 `ip link` 應該會看到它的 state 變成 UP 。
+ 無線網路
請參閱 [iwctl](https://wiki.archlinux.org/title/Iwd#iwctl) 因為基本上很少
用所以就先不寫了。
掛好網路之後可以測試一下是否可以正常連線
```sh
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
```
### 系統時鐘
```sh
root@archiso ~ # timedatectl set-ntp true
```
### 相關配置雜談
[Arch Linux - Wikipedia](https://zh.wikipedia.org/wiki/Arch_Linux)
> Arch Linux 是由二進位軟體包組成的,這些軟體包會針對 x86-64 最佳化以配合目前
的硬體。類似 Ports/ebuild 也在 Arch Linux 上發展,即「Arch Build System」。
[Arch Build System](https://wiki.archlinux.org/title/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 時要加的參數,預
設是關閉的:
```sh
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](https://wiki.archlinux.org/title/pacman) 在 6.0 以後正式支援平行下載
,對於要下載很多小套件的時候相當有幫助,需要手動開啟。
pacman 相關的配置放在 `/etc/pacman.conf`
```sh=31
# Misc options
#UseSyslog
Color
#NoProgressBar
CheckSpace
#VerbosePkgLists
ParallelDownloads = 6
ILoveCandy
```
+ Color: 有顏色看起來比較舒服對吧?
+ ParallelDownloads: 平行下載
+ ILoveCandy: pacman 的彩蛋,開就對了。
```sh=76
[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](https://wiki.archlinux.org/title/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](https://wiki.archlinux.org/title/Fdisk#Create_a_partition_table_and_partitions)
可以得到電腦上硬碟的相關資訊,並且配置磁區,關於切法網路上也滿多了,甚至可以先
開個有 GUI 的 OS 先切好,這邊不贅述。
切好之後就分別將各磁區格式化
```sh
root@archiso ~ # mkfs.ext4 /dev/sda3
root@archiso ~ # mkfs.vfat -F32 /dev/sda2
root@archiso ~ # mkswap /dev/sda1
```
切好之後就掛上去
```sh
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](https://wiki.archlinux.org/title/Fstab_(正體中文))
> `/etc/fstab` 這個檔案提供了檔案系統的資訊。他定義了儲存設備和磁區如何初始化
和如何聯接至整個系統。
```sh
root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab
```
製作好之後可以確認一下裡面的內容(每個地方都這樣寫也沒跟你講要怎麼確認)
```sh
# 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](https://wiki.archlinux.org/title/Solid_state_drive) 功
能
簡單來說就是確認硬碟及檔案系統都支援之後在 options 的最後面多加一個
`discard`
## 安裝基本系統
掛載好之後就可以開始裝 ArchLinux 了,把你需要的套件包進去。
```sh
archiso@root ~ # pacstrap /mnt base base-devel linux linux-firmware vim
```
備註:wiki 上面只有寫 base linux linux-firmware 而已
### Chroot 與基本配置
安裝好之後就可以切進去基本系統進行配置了
```sh
archiso@root ~ # arch-chroot /mnt
[root@archiso /]# _
```
進來之後可以先再設定一次 [相關配置雜談](#相關配置雜談)
然後是時區
```sh
[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
```
硬體時鐘
```sh
[root@archiso /]# hwclock --systohc
```
### 地區語系
這邊建議先設定為英文就好,等之後有桌面環境再新增中文的,如果用中文的環境安裝桌
面環境的話 [XDG user
direcotries](https://wiki.archlinux.org/title/XDG_user_directories) 會變成中文
的,在 terminal 切換的時候會非常不方便。
先到 `/etc/locale.gen` 將需要的語言和編碼取消註解
```
en_US.UTF-8 UTF-8
```
建立一個檔案 `/etc/locale.conf` 並加入以下內容
```
LANG=en_US.UTF-8
```
設定好之後下指令
```sh
[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 使用者密碼
```sh
[root@archiso /]# passwd
```
### Bootloader
通常都用 [GRUB](https://wiki.archlinux.org/title/GRUB)
```sh
[root@archiso /]# pacman -S os-prober grub efibootmgr
[root@archiso /]# os-prober
```
[os-prober](https://archlinux.org/packages/?name=os-prober) 可以自己檢測硬碟內
其他的作業系統,如果不想要噁心的 Windows 出現在開機選單或是沒有其他系統的話可
以不用裝。之後如果想要開其他系統的話可以在 GRUB 的開機選單進去 SHELL 介面輸入
exit 就會自動去找下一個開機順序了。
安裝好相關套件之後先確認硬碟分割是 GPT/UEFI 還是 BIOS/MBR ,可以用 `fdisk -l
/dev/sdX` 來確認。
#### GPT/UEFI
基於前面的磁碟切法所以指令這樣下
```sh
[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
```sh
[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 安裝。
新增使用者
```sh
[root@archiso /]# useradd user
```
設定使用者密碼
```sh
[root@archiso /]# passwd user
```
給使用者 superuser 權限
```sh
[root@archiso /]# usermod user -G wheel
```
然後到 `/etc/sudoers` 取消以下的註解
```sh=81
## Uncomment to allow members of group wheel to execute any command
%wheel ALL=(ALL) ALL
```
#### 網路套件
建立完使用者之後重新開機便可以用剛剛建立的 user 登入了,但是在重新開機之前最好
先裝好網路相關套件,省得一些麻煩事。
```sh
[root@archiso /]# pacman -S net-tools wpa_supplicant wireless_tools
networkmanager
[root@archiso /]# systemctl enable NetworkManager
```
其中最重要的就是
[NetworkManager](https://wiki.archlinux.org/title/NetworkManager) 了,堪稱網路
神器,從簡單到複雜都能設定,不裝對不起自己阿。
#### 開始前
在裝 DE 之前,一定要安裝 ArchLinux 的精髓, [AUR
Helper](https://wiki.archlinux.org/title/AUR_helpers) , Wiki 上面有很多可以選
擇,個人習慣用 [yay](https://github.com/Jguer/yay) :
```sh
$ 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](https://www.gnome-look.org/browse/) 上面找
喜歡的主題、圖示、游標,或是用 [Gnome
Extensions](https://extensions.gnome.org/) 一鍵安裝喜歡的擴充功能,都非常棒,
但是後來因為記憶體太常吃滿以及手癢的關係換到 i3wm 去了,這邊提供 Gnome 的安裝
方法及個人偏好。
```
$ sudo pacman -S xorg xorg-server
$ sudo pamcan -S gnome gnome-extra gnome-tweaks
$ sudo systemctl enable gdm
```
之後會有一些選項,如果看不懂或是不知道怎麼選的話就都用預設,全部裝就對了,反正
硬碟很便宜。
裝好之後重開機就可以進入桌面環境了。
:::spoiler **Gnome Shell Extensions**
裝 Extensions 之前記得先在 gnome-tweaks 裡面開啟 `User themes` 選項。還有一些
繁瑣的設定請自行 [Google](https://bfy.tw/RIzi) 。
+ [Arch Linux Updates
Indicator](https://extensions.gnome.org/extension/1010/archlinux-updates-indicator/)
![](https://extensions.gnome.org/extension-data/screenshots/screenshot_1010_gUt2hpK.png)
+ [Coverflow
Alt-Tab](https://extensions.gnome.org/extension/97/coverflow-alt-tab/)
![](https://extensions.gnome.org/extension-data/screenshots/screenshot_97_7.png)
+ [Vitals](https://extensions.gnome.org/extension/1460/vitals/)
![](https://extensions.gnome.org/extension-data/screenshots/screenshot_1460_TyM83Ic.png)
+ [Gnome 40 UI
Improvements](https://extensions.gnome.org/extension/4158/gnome-40-ui-improvements/)
![](https://extensions.gnome.org/extension-data/screenshots/screenshot_4158_zScCHj7.png)
+ [Hide Top Bar](https://extensions.gnome.org/extension/545/hide-top-bar/)
![](https://extensions.gnome.org/extension-data/screenshots/screenshot_545_3pF5sZG.png)
+ [Night Light
Slider](https://extensions.gnome.org/extension/1276/night-light-slider/)
![](https://extensions.gnome.org/extension-data/screenshots/screenshot_1276_gNya1IO.png)
:::
#### i3wm + lightdm
i3wm 的各種分支:
+ [i3-wm](https://archlinux.org/packages/community/x86_64/i3-wm/) 一般的i3
+ [i3-gaps](https://archlinux.org/packages/community/x86_64/i3-gaps/) 視窗與視
窗之間有間隔的版本([有些人認為這樣比較炫泡
](https://www.reddit.com/r/i3wm/comments/7xpviq/what_is_i3gaps/))
+
[i3-gaps-rounded-git](https://aur.archlinux.org/packages/i3-gaps-rounded-git/)
不只多了間隔,還有圓角矩形的視窗
```sh
$ sudo pacman -S i3 xorg xorg-server lightdm lightdm-gtk-greeter picom
alacritty rofi
$ sudo systemctl enable lightdm
```
簡單說明一下上面的配置:
+ i3 :不用多做說明了吧,就是我們想裝的 WM 。
+ xorg : i3 是基於 [X 視窗系統](https://zh.wikipedia.org/zh-tw/X視窗系統) 的
。
+ lightdm : 幫助我們有一個 GUI 的介面可以登入,如果你喜歡配置 xinitrc 之類的
東西也可以不裝。
+ picom : Compositor ,負責動畫繪圖等效果,參見下面說明。
+ alacritty : 使用 GPU 加速的終端模擬器,可以換成其他自己想要的。
+ rofi : 程式的起動器,方便我們快速啟動某個程式。
X11 的運作模式:
![](https://www.secjuice.com/content/images/2018/06/x-architecture.png)
[X Window 設定介紹](http://linux.vbird.org/linux_basic/0590xwindow.php)
[Wayland vs Xorg](https://www.secjuice.com/wayland-vs-xorg/)
如果看完上面的比較喜歡 Wayland 的話可以選擇相容 i3 的
[Sway](https://wiki.archlinux.org/title/Sway) 。
安裝好之後你會發現自己的家目錄下面沒有 Desktop 之類的目錄,這時候只需要設定前
面提過的 [XDG user
directories](https://wiki.archlinux.org/title/XDG_user_directories) ,就好,方
法也很簡單:
```sh
$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update
```
執行完之後就會看到熟悉的桌面和下載等目錄了。
順便分享一下自己的 dotfiles:
[asas1asas200/dotfiles](https://github.com/asas1asas200/dotfiles)
如果想試試看 i3 但又怕不習慣的話可以先裝好 Gnome ,然後再裝 i3 ,裝好重開機後
在 GDM 的登入頁面右下角可以選擇 i3 ,真的不習慣再換回來就可以了。
#### ibus-chewing
如果你是 Gnome 的使用者,基本上可以直接跳過這邊,因為 Gnome 都幫你處理好了。
我自己習慣用 ibus 的新酷音輸入法,先安裝相關套件:
```sh
$ pacman -S ibus ibus-chewing libibus libchewing
```
然後設定 ibus daemon 在每次進入桌面環境時啟動,在 `~/.config/i3/config` 加入這
行:
```sh
exec --no-startup-id ibus-daemon -drxR
```
最後編輯 `/etc/environment` :
```sh
GTK_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
```
### 顯卡驅動
基本上 intel 和 AMD 的都沒什麼太大的問題,所以這邊不提,主要是當初搞 Nvidia 搞
到心力憔悴,所以在這邊分享一些相關的東西。
{%youtube _36yNWw_07g %}
ArchLinux 裝 Nvidia 的驅動非常簡單:
```sh
$ sudo pacman -S nvidia nvtop
```
**nvtop** 是一個像 htop 的套件,可以監控顯卡目前的運作狀態。
裝好之後你會發現系統開機時不會自己啟動 Nvidia 模式(如果有的話當然是最好,就不
用另外調整了),此時可以透過
[Bumblebee](https://wiki.archlinux.org/title/bumblebee) 之類的軟體去讓某些應用
程式以 Nvidia 的顯卡啟動,不過這個方法我後來就不用了,主要是因為有點麻煩,我希
望我的所有程式可以的話都用 Nvidia 的顯卡去加速運算,這時候就有一個更好用的套
件 [optimus-manager](https://github.com/Askannz/optimus-manager) ,多虧了 AUR
現在只要兩個指令就可以擁有它:
```sh
$ yay -S optimus-manager
$ sudo systemctl enable optimus-manager
```
另外也有 qt 的版本可以安裝 `optimus-manager-qt` 、 `optimus-manager-qt-git`
然後在 `/etc/optimus-manager/optimus-manager.conf` 裡面編輯:
```sh
startup_mode=nvidia
```
這樣登入的時候就會用 Nvidia 模式執行了,可以在開機後執行 `nvtop` 來確認,應該
會有一些程式執行。
--
_ _ _ _ _ _ _
/\ | | (_) | | | | | | | | | |
/ \ _ __ ___| |__ _ ___ | |_| |__ ___ | |__ ___ ___| |_| |
/ /\ \ | '__/ __| '_ \ | / __| | __| '_ \ / _ \ | '_ \ / _ \/ __| __| |
/ ____ \| | | (__| | | | | \__ \ | |_| | | | __/ | | ) | __/\__ \ |_|_|
/_/ \_\_| \___|_| |_| |_|___/ \__|_| |_|\___| |_.__/ \___||___/\__(_)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.243.149 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1626719840.A.60B.html
推
07/20 03:09,
3年前
, 1F
07/20 03:09, 1F
推
07/20 04:28,
3年前
, 2F
07/20 04:28, 2F
推
07/20 05:49,
3年前
, 3F
07/20 05:49, 3F
推
07/20 05:51,
3年前
, 4F
07/20 05:51, 4F
推
07/20 13:14,
3年前
, 5F
07/20 13:14, 5F
推
07/20 13:17,
3年前
, 6F
07/20 13:17, 6F
→
07/20 13:18,
3年前
, 7F
07/20 13:18, 7F
→
07/20 14:47,
3年前
, 8F
07/20 14:47, 8F
→
07/20 17:20,
3年前
, 9F
07/20 17:20, 9F
→
07/20 17:20,
3年前
, 10F
07/20 17:20, 10F
→
07/20 17:21,
3年前
, 11F
07/20 17:21, 11F
→
07/20 17:35,
3年前
, 12F
07/20 17:35, 12F
→
07/20 17:38,
3年前
, 13F
07/20 17:38, 13F
→
07/20 17:39,
3年前
, 14F
07/20 17:39, 14F
→
07/20 17:40,
3年前
, 15F
07/20 17:40, 15F
推
07/21 01:34,
3年前
, 16F
07/21 01:34, 16F
推
07/22 00:43,
3年前
, 17F
07/22 00:43, 17F
推
07/22 02:05,
3年前
, 18F
07/22 02:05, 18F
→
07/22 02:05,
3年前
, 19F
07/22 02:05, 19F
→
07/22 02:12,
3年前
, 20F
07/22 02:12, 20F
→
07/22 02:12,
3年前
, 21F
07/22 02:12, 21F
推
07/22 20:46,
3年前
, 22F
07/22 20:46, 22F
推
07/23 00:43,
3年前
, 23F
07/23 00:43, 23F
→
07/23 00:43,
3年前
, 24F
07/23 00:43, 24F
推
07/23 08:34,
3年前
, 25F
07/23 08:34, 25F
→
07/23 08:35,
3年前
, 26F
07/23 08:35, 26F
→
07/23 08:36,
3年前
, 27F
07/23 08:36, 27F
推
07/24 08:58,
3年前
, 28F
07/24 08:58, 28F
推
07/24 10:30,
3年前
, 29F
07/24 10:30, 29F
→
08/08 19:56, , 30F
08/08 19:56, 30F
推
10/11 16:48, , 31F
10/11 16:48, 31F
Linux 近期熱門文章
23
129
PTT數位生活區 即時熱門文章
-1
12