[爆卦]arch linux安裝是什麼?優點缺點精華區懶人包

為什麼這篇arch linux安裝鄉民發文收入到精華區:因為在arch linux安裝這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者asas1asas200 (廢文製造者)看板Linux標題[心得] 2021 07 ArchLi...



大家好 前幾天又重裝了一次 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
ikaros0327: 推 07/20 03:09
deflife: 看起來好好玩 想裝一次XD 07/20 04:28
holishing: Cool! 07/20 05:49
holishing: 好奇有沒有人真的去測試 ArchInstall 那工具 07/20 05:51
hangsauxp: arch 真的好玩 試了其他發行版 還是喜歡arch~~ 07/20 13:14
hangsauxp: 安裝arch 大概有兩個地方注意 grub 跟 網路 07/20 13:17
hangsauxp: 現在也在嘗試玩i3 還不習慣QQ 07/20 13:18
CP64: grub 真的要注意 裝到現在還是會忘掉 XDDDD 07/20 14:47
idisnothing: "pci=nommconf"這個參數應該要加在/etc/default/grub 07/20 17:20
idisnothing: 裡才對 你直接修改/boot/grub/grub.cfg 下次一執行 07/20 17:20
idisnothing: grub-mkconfig 你的修改就又失效了 07/20 17:21
idisnothing: 然後xorg這個package group本身就包含xorg-server了 07/20 17:35
idisnothing: 所以安裝X只需要下pacman -s xorg 07/20 17:38
idisnothing: 想省點空間的人可只裝xorg-server 套件有缺的話日後 07/20 17:39
idisnothing: 再補就好 07/20 17:40
bamchisu: 推 07/21 01:34
holishing: 推用 package group 空間換取時間法 07/22 00:43
Hurricaneger: 17F,h大,看不懂空間換取時間的意思?方便教我一 07/22 02:05
Hurricaneger: 下嗎我謝謝 07/22 02:05
Bellkna: 大概是直接套件群組安裝就省得記一些有的沒的XD 07/22 02:12
Bellkna: 不過這樣比較吃硬碟空間就是 07/22 02:12
holishing: 對就是這個意思XD 07/22 20:46
dzwei: 原來conf檔還可以開顏色以及同時下載多個檔案,還有abs可以 07/23 00:43
dzwei: 用-j nproc,用了好幾年arch 第一次知道 07/23 00:43
s8321414: SSD trim那邊現在也可以用fstrim.service代替,不一定要 07/23 08:34
s8321414: 在fstab加discard,另外Nvidia那邊如果是混合顯卡的話, 07/23 08:35
s8321414: 現在有https://wiki.archlinux.org/title/PRIME可以用了 07/23 08:36
supremexiii: 推薦用archcraft 的iso 來安裝,查資料會方便不少 07/24 08:58
yupog2003: 沒看這篇還不知道有nvtop,感謝樓主分享 07/24 10:30
s9041200: 之前用ansible 裝是真的有趣,不過需要up網卡嗎 08/08 19:56
chongzi138: 感覺有難度,我還是先熟悉使用Manjaro好了XD 10/11 16:48

你可能也想看看

搜尋相關網站