作者asas1asas200 (废文制造者)
看板Linux
标题[心得] 2021 07 ArchLinux 安装纪录
时间Tue Jul 20 02:36:25 2021
大家好 前几天又重装了一次 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/)

+ [Coverflow
Alt-Tab](
https://extensions.gnome.org/extension/97/coverflow-alt-tab/)

+ [Vitals](
https://extensions.gnome.org/extension/1460/vitals/)

+ [Gnome 40 UI
Improvements](
https://extensions.gnome.org/extension/4158/gnome-40-ui-improvements/)

+ [Hide Top Bar](
https://extensions.gnome.org/extension/545/hide-top-bar/)

+ [Night Light
Slider](
https://extensions.gnome.org/extension/1276/night-light-slider/)

:::
#### 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 的运作模式:

[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://webptt.com/cn.aspx?n=bbs/Linux/M.1626719840.A.60B.html
1F:推 ikaros0327: 推 07/20 03:09
2F:推 deflife: 看起来好好玩 想装一次XD 07/20 04:28
3F:推 holishing: Cool! 07/20 05:49
4F:推 holishing: 好奇有没有人真的去测试 ArchInstall 那工具 07/20 05:51
5F:推 hangsauxp: arch 真的好玩 试了其他发行版 还是喜欢arch~~ 07/20 13:14
6F:推 hangsauxp: 安装arch 大概有两个地方注意 grub 跟 网路 07/20 13:17
7F:→ hangsauxp: 现在也在尝试玩i3 还不习惯QQ 07/20 13:18
8F:→ CP64: grub 真的要注意 装到现在还是会忘掉 XDDDD 07/20 14:47
9F:→ idisnothing: "pci=nommconf"这个参数应该要加在/etc/default/grub 07/20 17:20
10F:→ idisnothing: 里才对 你直接修改/boot/grub/grub.cfg 下次一执行 07/20 17:20
11F:→ idisnothing: grub-mkconfig 你的修改就又失效了 07/20 17:21
12F:→ idisnothing: 然後xorg这个package group本身就包含xorg-server了 07/20 17:35
13F:→ idisnothing: 所以安装X只需要下pacman -s xorg 07/20 17:38
14F:→ idisnothing: 想省点空间的人可只装xorg-server 套件有缺的话日後 07/20 17:39
15F:→ idisnothing: 再补就好 07/20 17:40
16F:推 bamchisu: 推 07/21 01:34
17F:推 holishing: 推用 package group 空间换取时间法 07/22 00:43
18F:推 Hurricaneger: 17F,h大,看不懂空间换取时间的意思?方便教我一 07/22 02:05
19F:→ Hurricaneger: 下吗我谢谢 07/22 02:05
20F:→ Bellkna: 大概是直接套件群组安装就省得记一些有的没的XD 07/22 02:12
21F:→ Bellkna: 不过这样比较吃硬碟空间就是 07/22 02:12
22F:推 holishing: 对就是这个意思XD 07/22 20:46
23F:推 dzwei: 原来conf档还可以开颜色以及同时下载多个档案,还有abs可以 07/23 00:43
24F:→ dzwei: 用-j nproc,用了好几年arch 第一次知道 07/23 00:43
25F:推 s8321414: SSD trim那边现在也可以用fstrim.service代替,不一定要 07/23 08:34
26F:→ s8321414: 在fstab加discard,另外Nvidia那边如果是混合显卡的话, 07/23 08:35
28F:推 supremexiii: 推荐用archcraft 的iso 来安装,查资料会方便不少 07/24 08:58
29F:推 yupog2003: 没看这篇还不知道有nvtop,感谢楼主分享 07/24 10:30
30F:→ s9041200: 之前用ansible 装是真的有趣,不过需要up网卡吗 08/08 19:56
31F:推 chongzi138: 感觉有难度,我还是先熟悉使用Manjaro好了XD 10/11 16:48