⚠️ This post was last updated on July 5, 2020 and the content may be OUTDATED!
If you encounter any issues, please feel free to reachout to me!
前言
自从 3 月份从 Arch 换到 Fedora 系统之后,刚开始感觉还不错,因为大部分东西都已经帮你搞定了,自己只要会用就可以了,但是用的久了,感觉 Fedora 的软件包管理器真心不如 Arch 的 pacman 好用,有些中文软件在仓库中根本找不到,自己配置起来很麻烦,但是如果用 Arch 的话,构建起来就很简单了,所以最终还是决定重新拥抱 Arch。
刚一开始我还准备按照我之前总结的安装记录进行安装,毕竟当时记录的还是很详细的,但是没想到刚进入 Live 系统就碰到了一个难题:wifi-menu
命令不存在! ! EXCUSE ME?? 我明明验证过镜像完整性的,没问题啊,这是怎么回事?还好,机智的我知道这里面有问题,查阅了一点资料之后就发现(这里不得不吹一波 Arch 的用户社区,真心给力,盲猜是最活跃的 Linux 发行版社区)原来是官方弃用了,改用iwd
+systemd-networkd
来管理网络了,莫得办法,那就换吧,查了查 iwd 的基本命令使用,发现还挺简单的,一次配置,永久使用,比 wifi-menu
用起来要流畅许多!
archlinux 的 iso 镜像文件自 2020.06.01 开始改了很多东西,大概就这几个方面:
- archiso 默认的 shell 是 zsh,不再是 bash 了。
- archlinux 摒弃了之前的
wifi-menu
,改为使用 iwd 来管理网络。 - 对于镜像源的管理,采用 reflector 进行管理,终于不用去手动更改镜像源的位置了,使用 reflector 一条命令就搞定了。
必需条件
- 一台可以使用的电脑
- 一个 4G 以上内存的 USB 存储器
- 一个可以查看本文的电子设备:)
制作 USB 启动盘
- 首先在这里找一个延迟低的官方镜像站下载 ArchLinux 的 iso 镜像,我下载的是最新版本,参数如下:
- Current Release: 2020.07.01
- Included Kernel: 5.7.6
- ISO Size: 647.0 MB
-
在镜像站下载 PGP 签名,然后使用
gpg
验证签名确保镜像完整性以及安全性,命令如下:gpg --keyserver-options auto-key-retrieve --verify archlinux-version-x86_64.iso. sig
-
然后使用磁盘烧录工具将镜像写入你的 USB 存储器。 Linux 系统建议使用
dd
这个神器。 Windows 系统的话,建议使用开源软件rufus
,最好不要使用那个 UltralISO,很容易出问题。
开始安装
验证启动模式
进入 Live 环境然后验证你的机器的启动模式是 UEFI 还是 BIOS 模式,以下方式二选一:
# 有输出说明是UEFI模式
ls /sys/firmware/efi/efivars
# 输出64/32说明是对应的UEFI模式,否则是BIOS模式
cat /sys/firmware/efi/fw_platform_size
连接网络
前面已经说过了,Archiso 的默认的无线网络管理改为iwd
了,所以这里就讲一下如何使用 iwd
连接 wifi,如果想深入了解一下iwd
,可以参考我写的另一篇文章
iwd的使用教程
- 在终端中输入
iwctl
进入 iwd 提示符:
[root@archiso~] iwctl
[iwd#]
- 在
[iwd#]
中输入device list
查询机器的网卡设备。 - 使用以下命令查询附近可用的 wifi 网络:
[iwd#] station <devicename> scan
[iwd#] station <devicename> get-networks # 显示扫描的结果
- 在提示符中输入
station <devicename> connect <wifi-ssid>
连接 wifi 网络,如果 wifi 加密,会提示你输入密码
更新系统时间
使用timedatectl
命令来确保时间是同步的:
timedatectl set-ntp true
timedatectl status # 确保设置成功
磁盘分区
首先使用lsblk
或者其他磁盘工具(例如fdisk
)查看磁盘设备:
lsblk
// or
fdisk -l
然后使用fdisk
或者cfdisk
创建磁盘分区,这里有一点要注意的是,在创建分区的时候, 必需要确保有一个 root 分区/
,此外,对于 UEFI 模式的设备还需要一个额外的 EFI 系统分区,我的分区方式如下:
挂载点 | 分区类型 | 大小 |
---|---|---|
/mnt/boot | EFI system partition | 1G |
/mnt | Linux x86-64 root | 32G |
swap | Linux swap | 16G |
/home | Linux home | Remainder of the device |
无论是fdisk
还是cfdisk
,用起来都很简单,所以这里不再具体介绍了,想要具体了解的可以查阅fdisk 官方文档、cfdisk 官方文档。对于新人小白,个人推荐cfdisk
,有一个伪图形界面,很容易上手。
格式化分区
按照上面的步骤建立好分区之后,我们需要将每个分区用对应的文件系统进行格式化。
我的分区名称对应的挂载点
挂载点 | 分区名称 |
---|---|
/mnt/boot | /dev/sda1 |
/mnt | /dev/sda2 |
swap | /dev/sda3 |
/home | /dev/sda4 |
对于 root 分区、home 分区等直接使用ext4
文件系统进行初始化:
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda4
如果你的机器是 UEFI 启动模式,使用以下命令初始化 EFI 系统分区:
mkfs.fat -F32 /dev/sda1
对于交换分区,不能使用上述命令进行格式化,而需要使用mkswap
将其初始化:
mkswap /dev/sda3
挂载分区
首先挂载root
分区:
mount /dev/sda2 /mnt
对于其他分区(swap 分区除外,不需要),需要自己手动创建挂载点:
mount --mkdir /dev/sda1 /mnt/boot
mount --mkdir /dev/sda4 /mnt/home
挂载交换分区:
swapon /dev/sda3
选择镜像源
文件/etc/sudo pacman.d/mirrorlist
定义了软件包会从哪个镜像源下载。在 Live 启动的系统上,所有的镜像都被启用。 在列表中越前的镜像在下载软件包时有越高的优先权。你可以相应的修改文件/etc/sudo pacman.d/mirrorlist
,并将地理位置最近的镜像源挪到文件的头部来保证下载速度。而且这个文件接下来还会被 pacstrap 拷贝到新系统里,在这里设置好之后就可以一劳永逸了。
手动修改文件或者可以使用 reflector
,执行下面的命令会自动修改mirrorlist:
reflector -c cn -p https --ipv4 -l 5 --save /etc/sudo pacman.d/mirrorlist
NOTE
感觉这一步其实现在可以省略了,因为现在在 live 环境中使用reflector
进行镜像的管理,貌似你一连接网络,live 系统会自动执行 reflector 命令来帮你选择镜像源,默认的是根据下载速率进行排序,感兴趣的小伙伴可以自己确认一下(连接网络之前备份一下/etc/sudo pacman.d/mirrorlist
文件,然后连接网络之后,使用diff
对比前后两个文件的差异)。
安装必需软件包
使用 archiso 内置的脚本pacstrap
安装一些基本的软件包、内核及常规的硬件固件:
pacstrap /mnt base linux linux-firmware base-devel
这里要注意的是,上面的命令并不包括所有的基本程序,如网络管理程序、文本编辑器等,如果你想安装这些程序,可以将名字添加到
pacstrap
后,并用空格隔开。你也可以在 Chroot 进新系统后使用pacman
手动安装软件包或组。
配置系统
生成 fstab 文件
用以下命令生成fstab
文件,其中-U
选项用来设置 UUID:
genfstab -U /mnt >> /mnt/etc/fstab
然后使用cat /mnt/etc/fstab
命令检查以下文件是否正确(每个分区占一行,查看是否包含所有分区)
进入到安装的系统
arch-chroot /mnt
安装文本编辑器
现在的新系统连默认的文本编辑器nano
都没有了,所以需要自己手动安装一个,不然后面的一些配置无法实现,所以我选择最强的vim
:
pacman -S vim
时区
使用下面的命令设置时区:
ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
然后使用hwclock
生成/etc/adjtime
文件:
hwclock --systohc
本地化设置
本地化的程序与库若要本地化文本,都依赖Locale,后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准等等。在下面两个文件设置:
locale.gen
与locale.conf
。
- 首先编辑
/etc/locale.gen
文件,然后将需要的地区的注释移除,建议将en_US UTF-8
和zh_CN UTF-8
都取消注释。 - 执行
locale-gen
命令生成 locale。 - 创建
locale.conf
文件并编辑LANG
这一变量(将系统 locale 设置为en_US.UTF-8
,系统的Log
就会用英文显示,这样更容易问题的判断和处理。):
LANG=en_US.UTF-8
这里最好不要设置为中文 locale,会导致 TTY 乱码
网络设置
- 创建
/etc/hostname
文件设置主机名 - 配置
/etc/hosts
文件,将以下内容添加进去:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
note: 如果系统有一个永久的 IP 地址,请使用这个永久的 IP 地址而不是 127.0.1.1。
设置 root 密码
使用passwd
命令设置 root 密码即可。
这里不得不说一句,使用 arch 是真的让人舒服的一批,不会出现一些令人无语的问题,我还记得第一次使用 linux 的时候,用的是 fedora,当时想要使用su
进入 root,但是发现需要密码,但是我不记得安装的时候设置过 root 密码啊,后来查阅了一些资料才发现,fedora 并没有设置 root 密码,需要自己手动设置(使用sudo passwd root
)。
安装及配置引导程序
IMPORTANT
安装引导程序之后才能进入系统
微码更新
安装GRUB之前建议安装对应CPU的ucode,例如我的是amd的CPU,所以安装的是:
pacman -S amd-ucode
# 如果是Intel的CPU
pacman -S intel-ucode
这样在下面生成GRUB的配置文件的时候,会包含进去这部分。
GRUB 引导程序
我用的引导程序是GRUB,首先安装必要的软件包:
pacman -S grub efibootmgr
这里详细介绍一下 UEFI 系统如何安装配置 GRUB:
- 首先使用以下命令安装到系统:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux
note: 因为我的 EFI 分区在/boot
目录下,所以上述命令的--efi-directory
参数就设置为/boot
- 使用
grub-mkconfig
生成 grub 配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
安装 wifi 网络管理工具
推荐使用iwd
,命令简单方便又强大:
pacman -S iwd
重启
- 输入
exit
或按Ctrl+d
退出chroot
环境 - 用
umount -R /mnt
手动卸载被挂载的分区 - 执行
reboot
重启系统
再配置新系统
因为还没有设置普通用户,所以重启后需要使用
root
来进入新系统
添加普通用户
- 使用以下命令添加一个用户
useradd -m -G "附加组" -s "登陆shell" "用户名"
其中:
-m
/--create-home
:创建用户主目录/home/[用户名]-G
/--groups
:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始同名组。-s
/--shell
:用户默认登录 shell 的路径
- 赋予用户 root 权限
- 安装 sudo 软件包:
sudo pacman -S sudo
- 在
/etc/sudoers
文件中的root ALL=(ALL) ALL
行下添加yourname ALL=(ALL) ALL
,如果是多用户,可以加入wheel
组,赋予该组成员sudo
权限:%wheel ALL=(ALL) ALL
配置网络
如果你没有安装 wifi 网络管理工具,或者你安装的工具需要 gui 支持,那么恭喜你,你的系统还是无法联网,恭喜你可以重新体验一次完整的 archlinux 安装流程:),则需要重新USB进入安装系统,arch-chroot
新系统然后安装一个 Wi-Fi
网络管理工具。
如果你按照我上面写的安装了 wifi 工具iwd
,那么你还需要做一些额外的工作才能正常使用它:
- 启动 iwd 服务,为了以后的使用,建议直接设置为开机自启动,详细方法可以参考systemd
systemctl start iwd.service # 启动服务
systemctl enable iwd.service # 开机自启动服务
- 因为
iwd
默认使用的是系统的DHCP和DNS服务器,所以你还需要启动systemd-networkd.service
和systemd-resolved.service
才行,因为新系统默认不会自启动这两个服务,需要你手动开启。当然,你也可以使用iwd
内置的DHCP服务器,开启方法可以参考我之前写的一篇文章。
到这里你才能正常使用iwd
这个工具,具体使用方法可以参考前文网络设置部分
安装显示服务器
因为个人比较喜欢 i3,所以我安装的是 xorg,你也可以选择新的显示协议wayland
。
使用下面的命令安装开源的 xorg
# 安装所有xorg相关包
sudo pacman -S xorg
# 以下命令可以只安装必要的xorg包,可以避免不必要的包的安装,
sudo pacman -S xorg-server
# 但是有些可能其他功能需要的包会缺失,导致功能不完善
# 所以如果你不太理解这其中的关系,建议除了xorg-server之外,也安装xorg-apps包组
sudo pacman -S xorg-server xorg-apps
安装显卡驱动
我的机器使用的是ASUS的AMD显卡6700XT-TUF
。
对于 AMD 显卡,安装开源的amdgpu驱动:
sudo pacman -S xf86-video-amdgpu
p.s. AMD的显卡驱动有点问题,会导致系统不稳定黑屏/卡死/卡顿等问题,所以可能需要一些额外的配置,这部分我会单独写出来
对于 NVIDIA 显卡,安装开源驱动nouveau
即可:
sudo pacman -S mesa xf86-video-nouveau
安装桌面环境
前面说了,我比较喜欢 i3,所以我通常不会安装类似gnome,kde这种集成的桌面环境。
安装窗口管理器
安装 i3-wm
包组:
sudo pacman -S i3-wm
# 推荐安装i3lock,可以很方便的集成锁屏功能
sudo pacman -S i3lock
TODO:配置
安装显示管理器
WARNING
如果使用wayland协议的管理器,推荐安装sddm
由于只安装了一个窗口管理器i3,并不包含显示管理器(DM),所以还需要自己选择一个 DM 进行安装,我选择的是lightdm
:
- 安装lightdm和greeter:
sudo pacman -S lightdm
# 安装默认的greeter
sudo pacman -S lightdm-gtk-greeter
- 设置为开机自启动:
systemctl enable lightdm.service
TIP
如果你安装的不是lightdm-gtk-greeter
,还需要额外的配置,编辑/etc/lightdm/lightdm.conf
设置默认的 greeter:
[Seat:*]
...
greeter-session=<lightdm-greeter-name>
...
个性化系统
TIP
如果你使用的是i3,第一次登录进入gui之后,会提示你初始化一个配置,选择mod键(一路回车mod是win键)。打开命令行的默认快捷键是$mod + return
。
快捷键/自启动的配置都是基于i3
的配置。
安装AUR助手
因为有一些软件包并没有收录进官方的仓库里,所以为了安装方便,最好安装一个AUR助手,推荐paru
,rust语言写的,用起来很方便,性能也很好。
#首先安装一些构建软件必需的包
sudo pacman -S --needed base-devel
git clone https://aur.archlinux.org/paru.git
cd paru
makepkg -si
之后,就可以使用paru
来安装一些非官方的包了,命令行参数和官方的pacman
基本一致。
安装中文输入法
archlinux 中文输入法框架有fcitx
/ibus
/fcitx5
,其中fcitx5
貌似是刚刚出现的,之前没见过,所以我就试了试,安装配置起来还挺简单的:
- 安装
fcitx5
软件包 - 创建
~/.pam_environment
并配置环境变量:
GTK_IM_MODULE DEFAULT=fcitx
QT_IM_MODULE DEFAULT=fcitx
XMODIFIERS DEFAULT=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
安装中文输入法引擎fcitx5-rime
sudo pacman -S fcitx5-rime
安装雾凇拼音词库(optional),该词库并没有在官方仓库,需要在AUR仓库安装:
paru -S rime-ice-git
安装浏览器
sudo pacman -S firefox
note: 安装Firefox浏览器的时候会让你选择一种字体以及jack音频连接套件,我选择的是ttf-dejavu
和pipewire-jack
(选这个是因为我的音频配置是基于pipewire
的)。
安装Terminal
i3默认的是xterm
,功能简单,外观一般,推荐alacritty
或者kitty
,还有一个wezterm
,和alacirtty
一样都是rust的,性能方面没的说,配置用的lua,不过我用习惯了alacritty
懒得换了。
sudo pacman -S alacritty
安装字体
# 英文字体
sudo pacman -S ttf-dejavu ttf-ibm-plex ttf-roboto ttf-fira-code ttf-fira-sans
# 中文字体
sudo pacman -S noto-fonts-cjk
# 表情符号
sudo pacman -S noto-fonts-emoji ttf-joypixels
编程字体推荐:
手动安装,在这个网站里选择自己喜欢的nerdfonts
下载下来,放入~/.local/share/fonts/
目录下,个人比较喜欢FiraCode
,Hack
,Jetbrains
系列。
Vercel
新开源的字体也很不错,推荐使用,在这里下载。
安装 zsh
安装一个好看而且功能强大的 shell 很有必要,比如说 zsh。配置 zsh 的话,我推荐使用oh my zsh这个框架个性化 zsh,配置 zsh 起来简单方便。
- 安装 zsh
- 使用 curl 安装 ohmyzsh,这个脚本还可以帮你自动更改默认的 shell
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
p.s. 手动更换默认 shell 的方法:sudo chsh -s /usr/bin/zsh <username>
自定义配置 zsh,推荐使用Oh My Zsh
框架,简单易上手,具体可以参考 ohmyzsh 的官方 wiki。
安装文件管理器
我个人比较喜欢thunar
(XFCE的内置文件管理器,很轻便,功能也很强大,支持分屏,F3
是分屏快捷键)。
sudo pacman -S thunar
配置相关特性
thunar还有两个推荐安装的feature插件thunar-archive-plugin
和thunar-volman
,分别用来处理压缩包和硬盘分区。
sudo pacman -S thunar-archive-plugin thunar-volman
安装压缩插件还需要一些压缩/解压缩工具:
sudo pacman -S zip p7zip unzip
推荐安装一个图形化压缩工具,用来文件管理器的右键菜单,推荐xarchiver
,gnome的file-roller
,二选一即可:
sudo pacman -S xarchiver file-roller
自动检测及挂载设备功能:
sudo pacman -S gvfs
缩略图功能:
sudo pacman -S tumbler
程序启动器 rofi
相比于i3
默认的dmenu
,更美观的程序启动器,高度自定义
sudo pacman -S rofi
修改i3
配置文件,添加快捷键:
bindsym $mod+d exec rofi -show drun
状态栏 polybar
窗口状态栏,比i3内置的功能更强大,自定义化程度超高。
sudo pacman -S polybar
加入 i3
自启动
exec_always --no-startup-id polybar barname
复制示例模板:
sudo cp /etc/polybar/config.ini ~/.config/polybar/config.ini
然后基于模板自定义,具体可以参考官方 wiki
页面。
安装截图工具
推荐flameshot
,操作简单且功能强大。
sudo pacman -S flameshot
配置快捷键:
bindsym $mod+Shift+x exec flameshot gui
默认显示系统托盘图标(与polybar无痛衔接)
配置音频
使用pipewire
框架,安装相关包:
sudo pacman -S pipewire pipewire-audio pipewire-pulse pipewire-alsa pipewire-jack
其中蓝牙相关的功能在pipewire-audio
中。
会话管理器和GUI工具:
sudo pacman -S wireplumer helvum
pulse音频管理器:
sudo pacman -S pavucontrol
系统主题
WhiteSur
系列主题,包含鼠标/图标/GTK主题。
可以在GitHub下载/freedesktop.org下载
手动下载并放入对应路径下:
主题 | 路径 |
---|---|
鼠标 | ~/.icons |
GTK | ~/.themes |
图标 | ~/.icons |
Sooner or later, everything ends.