玩转Arch Linux是一件非常有成就感的事情,尤其是自己动手一步步安装它、配置它、折腾它,把它打造成自己理想的操作系统。刚开始看似很难,官方提供的镜像就是一个没有任何桌面环境的bare system。但这正是Arch Linux的闪光点——高定制性,所有的组件均可以通过官方镜像,来给目标系统安装上,想要什么组件就装什么组件,系统归你掌握。
近日,我成功给我的上古ThinkPad X200装上了Arch Linux,并配置好了KDE,把经验总结如下。
下载Arch Linux镜像
Arch Linux的镜像可从官方网站下载:https://www.archlinux.org/download/
页面中提供了磁力链接、BT种子,而往下拉可以找到HTTP直链下载,其中包括中国大陆镜像源,如163、中科大、清华TUNA。推荐宽带用户选择163的源,教育网用户选择中科大的源。
下载完成后,用Rufus把镜像刷写到U盘中,然后用它启动电脑,进入安装环境。
连网
Arch Linux的安装需要全程联网,建议使用启用了DHCP的有线网,插上网线就可用,无需额外配置,且相对稳定。当然也可采用WLAN,但配置会复杂一些,可以参考一下这个。
插上网线后,如果无法联网,则可重启一下DHCP客户端dhcpcd:
systemctl restart dhcpcd
如果还不行,则重新启用一下以太网接口:
# 查看网络接口状态,列表中以太网接口前缀是enp,如enp0s25
ip link
# 重新打开网络接口
ip link set enp0s25 up
准备安装分区
Arch Linux搭配KDE,建议至少20GB的磁盘空间(如果要安装KDE全家桶)。
如果要与现在的系统共存,可在Windows的“磁盘管理”中,压缩出一个分区。新硬盘建议用图形化的cfdisk分区,同时支持GPT与MBR。老鸟可用命令行的fdisk与parted。我的老笔记本是给整个硬盘都装上,所以直接给它重新分区。
笔者的分区方案
由于ThinkPad X200年代久远,不支持UEFI,所以只能选择MBR分区。110GB的固态硬盘,分区方案如下表。其中,系统、引导和用户文件放在同一个分区中。
分区用途 | 大小 | 设备路径 | 备注 |
---|---|---|---|
目标分区 | 104GB | /dev/sda1 |
主分区,活动分区 |
交换分区 | ≈6GB | /dev/sda5 |
逻辑分区 |
格式化并挂载
分区的文件系统选择上,通常用EXT4和BtrFS较多,老电脑+SSD建议选择BtrFS,BtrFS有专门的SSD优化选项,可在挂载时打开;而EXT4会因不明原因,时常导致笔记本死机。
格式化目标分区,然后挂载到/mnt
。/mnt
就是我们系统安装的目标目录:
# 格式化目标分区为BtrFS
mkfs.btrfs /dev/sda1
# 挂载目标分区,并打开SSD优化
mount -t btrfs -o ssd /dev/sda1 /mnt
启用Swap
# 初始化交换分区
mkswap /dev/sda5
# 启用交换分区
swapon /dev/sda5
# 检查交换分区使用情况
free
预安装过程
分区准备并挂载完成后,就可以开始安装了。安装过程用到的核心工具有pacstrap
和arch-chroot
。
pacstrap
用于把指定的包安装在指定目录,是pacman
的离线版;而arch-chroot
则用于把当前系统环境切换到指定的目录,通常是我们挂载目标分区的/mnt
,由此可允许我们以新装系统的名义进行操作。
arch-chroot
后,我们就可以向管理真实系统一样管理目标分区中的系统(目标系统),例如直接使用pacman
等常用工具。运行exit
可退回安装环境。
注意:
- 安装基础组件后,
pacstrap
可在arch-chroot
切换后,被pacman
取代。其他一些操作也可以在目标系统中完成,只是要注意命令参数的变化。
提示:配置文件默认用vim打开。vim的基本操作方法:
- 方向键移动光标;
- 按<kbd>i</kbd>键进入编辑模式;
- 按<kbd>v</kbd>键进入可视模式。此模式下按方向键可控制选区,<kbd>y</kbd>键复制。
- 按<kbd>ESC</kbd>退出以上模式,返回一般模式;
- 一般模式下,按<kbd>p</kbd>键粘贴,<kbd>x</kbd>键退格,按两下<kbd>d</kbd>键删除整行;
- 一般模式下,输入
:<命令>
后回车,可执行内部命令。常用命令有:w
(保存)、:x
(保存并退出)、:q
(直接退出)、:q!
(不保存文件退出)。- 一般模式下,键入
/
,后跟关键字,可快速定位。
使用中国大陆镜像源
Arch Linux的默认服务器在国外,因此需要切换到中国大陆的服务器,以实现满速下载,提高效率。
使用Vim打开镜像源配置文件:
vim /etc/pacman.d/mirrorlist
然后在文件中定位到# China
开头的项目(可输入),例如163(推荐,可满速)。可视模式下把它们所在的行复制,再粘贴到文件开头。下次就可以使用该镜像源进行下载。
安装基础组件
系统基础组件由三个包组成:核心包(base)、Linux内核(linux)与固件(linux-firmware)。安装后即可构成一个最基本的Arch Linux:
pacstrap /mnt base linux linux-firmware
添加用户
包括Arch Linux在内,裸安装的Linux发行版默认使用Root用户,显然不安全,因此要添加用户。(这与VPS中安装的Linux差不多。)
第一,安装sudo。没错,sudo并不是系统预装的组件,还是要用户手动安装的。顺便把vi和vim装上,用于编辑配置文件:
pacstrap /mnt sudo vim vi
第二,授予普通用户sudo权限。先打开sudo配置文件:
# 切换到目标系统中才能进行操作
arch-chroot /mnt
# 打开配置文件。默认用vi打开
visudo
然后取消下面这行的注释,即删掉前面的#
符号。这行语句允许wheel组的用户获取root权限。
取消注释以下指定行,并保存。
## Uncomment to allow members of group wheel to execute any command
# ↓ 就是下面这行 ↓
%wheel ALL=(ALL) ALL
第三,再新建一个新用户:
# -G参数设置用户组,-m开关建立用户目录,username为你的用户名
useradd -G wheel -m username
给新用户设置密码。密码要输入两次,没有回显:
passwd anclark
然后检查一下/home
目录下有没有自动新建的用户主目录,如果没有,则手工创建。需要注意的是,主目录权限不当会导致很多组件运行异常,因为它们要读写主目录中的配置文件。
# 创建用户目录,并设定权限
mkdir /home/username
chown -R username /home/username
# 设置用户主目录
usermod -d /home/username username
# 退回安装环境
exit
OK,下次即可用我们的新用户来登录。
安装启动器
Arch Linux可选的启动器有若干种,首选Grub。由于笔者的X200不支持UEFI,因此只能以MBR的形式安装。首先安装Grub软件包:
# 安装Grub
pacstrap /mnt grub
然后把Grub启动器安装到硬盘中。注意最后一个参数为目标的磁盘设备,而不是分区。
# 配置Grub以实现硬盘启动(MBR)
# 参数--target设置安装模式,值i386-pc为默认值,表示MBR安装
# 参数--root-directory设置安装目标磁盘的根目录。省略则表示当前根目录
grub-install --target=i386-pc --root-directory=/mnt /dev/sda
最后切换到目标系统,生成配置文件。实际上,前一步也可以在目标系统中进行,只需去掉--root-directory
参数即可。
# 生成配置文件
arch-chroot /mnt
grub-mkconfig -o /boot/grub/grub.cfg
exit
EFI用户参照ArchWiki。
生成fstab
genfstab工具可把当前挂载磁盘的状态保存到fstab中,方便系统自动挂载。磁盘的参数也会保存于其中。
genfstab /mnt > /mnt/etc/fstab
安装图形环境
接下来就是安装Xorg图形环境。xorg
包包含了所有可能用到的组件,在此基础上再安装显卡驱动组件。
# 安装Xorg
pacstrap /mnt xorg
# 安装显卡组件
pacstrap /mnt xf86-video
xf86-video
貌似已经失效,可参考Arch Linux安装文档来决定安装哪个驱动。常见的选项如下:
# 英特尔
pacstrap /mnt xf86-video-intel
# AMD/ATI
pacstrap /mnt xf86-video-amdgpu
pacstrap /mnt xf86-video-ati
# NVIDIA开源驱动
pacstrap /mnt xf86-video-nouveau
# NVIDIA闭源驱动
pacstrap /mnt nvidia
pacstrap /mnt nvidia-390xx
安装网络组件
Arch Linux默认没有预装网络组件,因此也需要手动安装。一般安装三个组件即可:
- dhcpcd:DHCP客户端。
- wpa_supplicant:无线网服务端。
- networkmanager:网络管理器前端,KDE等桌面环境依赖它来管理网络,若不启用则会使KDE的网络管理器无法运作。
# 这三个包是网络的核心组件
pacstrap /mnt dhcpcd wpa_supplicant networkmanager
# 启用上述组件。重启后一般可直接生效
arch-chroot /mnt
systemctl enable dhcpcd
systemctl enable wpa_supplicant
systemctl enable NetworkManager
exit
安装声音支持
KDE等桌面环境使用PulseAudio作为音频后端,配合ALSA模块即可解决声音问题。
pacstrap /mnt alsa-utils pulseaudio pulseaudio-alsa
安装KDE Plasma
接下来就是安装KDE Plasma桌面环境,Plasma本身就是一个软件包。
首先安装桌面环境本体,以及桌面管理器SDDM:
# Plasma桌面环境
pacstrap /mnt plasma-meta sddm
然后,启用SDDM窗口管理器,以实现开机自动进入登录界面。
# 切换到已安装好的系统里
arch-chroot /mnt
# 开启SDDM的服务
systemctl enable sddm
进入系统后显示的所谓登录界面,实际上就是SDDM本身,通过登录验证后就由它来启动Plasma桌面环境。相应地,退出登录后就终止了Plasma,重新打开SDDM,以显示登录界面。在Linux发行版中切换用户时,会退回字符界面,屏幕上会显示一堆日志,就是因为这个过程。基于这个特性,SDDM还可以启动其他的桌面环境,例如OpenSUSE预装的OpenBox。
安装Konsole
值得一提的是,Plasma只是一个桌面环境,没有包含任何其他的KDE应用(如文件管理器等),这些应用独立于Plasma,需要用户手动安装。我们见到的Kubuntu、Manjaro等包含的应用实际上是开发团队为我们事先装好的。
也正因如此,一些常用的应用需要我们手动安装,比如重启系统后要经常用到的Konsole终端。
pacman -S konsole
如果不安装终端,就只能在进入Plasma后,按<kbd>Ctrl+Alt+F2/F3/F4</kbd>切换到TTY中操作。
重启后安装其他组件
经过以上的设置,重启电脑并由硬盘启动后(建议拔掉启动盘),就能看到登录界面了,用我们新建的用户即可直接登入系统。之后我们就可以在安装好的系统中,进行后续的操作。
安装KDE全家桶
KDE组织旗下开发了大量的软件,涵盖系统应用的方方面面。用户可按自己的实际需要安装,或者安装下面这个包,迎来KDE全家桶:
sudo pacman -S kde-applications-meta
全家桶的体积非常大,包含各类应用,甚至涵盖了不少游戏和教育软件。大部分软件难以用上,因此虚拟机用户不建议安装,而以按需取用其中一个组件来代替。
虚拟机用户应至少安装一个终端、一个文件管理器和文本编辑器:
sudo pacman -S konsole dolphin kate
安装中文字体
中文字体默认没有安装。若不安装,会在中文显示的地方显示Unicode占位符。
# 安装思源黑体
sudo pacman -S noto-fonts-cjk
安装Fcitx
Fcitx是最常用的输入法框架之一。
第一,先安装Fcitx所需的包。注意安装过程可能会提示选择安装哪个fcitx核心组件,建议先选fcitx-qt5。fcitx-qt5、fcitx-gtk2、fcitx-gtk3这三个包是为了能在对应环境开发的APP中正常使用输入法。
sudo pacman -S fcitx fcitx-im kcm-fxitx fcitx-qt5 fcitx-gtk2 fcitx-gtk3 fcitx-configtool
第二,设置fcitx作为我们默认的输入法框架。创建并编辑/home/用户名/.xprofile
,然后在里面添加以下内容:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
重新登录生效。
启用网络支持
若网络管理不起作用,KDE设置里网络管理部分显示为空白,且任务栏上没有网络图标,则手工启用网络管理器。立即生效。
sudo systemctl start NetworkManager
sudo systemctl start wpa_supplicant
启用蓝牙组件
Plasma会装上蓝牙服务程序Bluez,但默认不会启用,导致系统提示“找不到蓝牙适配器”。
先启用Bluez Daemon:
sudo systemctl enable bluetooth
sudo systemctl start bluetooth
安装蓝牙音频支持:
sudo pacman -S pulseaudio-bluetooth
高级玩家还可以安装高级蓝牙管理器:
sudo pacman -S blueman
Blueman可激活电脑蓝牙的隐藏功能,如把电脑当手机的蓝牙音箱、串口通信。需内核支持。
安装媒体组件
基本的媒体组件包括硬件加速库libva,以及媒体播放器。libva同时支持英特尔和NVIDIA的显卡(后者使用NVIDIA专有的VDPAU技术)。而在媒体播放上,Arch Linux首推VLC。
# 安装硬件加速库libva
sudo pacman -S libva libva-intel-driver libva-vdpau-driver libva-utils
# 检查硬件加速库状态,会显示libva库的版本与显卡信息
vainfo
# VLC和SMPlayer,按需取用。VLC已包含在KDE全家桶中
sudo pacman -S vlc smplayer
配置好休眠文件(可解决自动休眠时的卡死问题)
X200有一定机率会在关机时长时间挂起,在文字界面下可见,关机过程卡在以下地方:
[*** ]A stop job is running for device dev-disk-by/uuid-b072209d-279a-41cd-b4b3-16eab1a84d60.device. (1min 30s)
检查了一下fstab,发现日志中的UUID正是Swap分区的UUID,检索资料后查明是与休眠相关的参数没配置好。而此前偶有出现系统闲置时会莫名其妙卡死,疑为与自动休眠相关,自动休眠可能正触发了这个问题。
解决方法就是修改Grub默认配置文件。用Vim打开/etc/default/grub
:
sudo vim /etc/default/grub
把以下参数加进GRUB_CMDLINE_LINUX_DEFAULT
字段里,注意包裹在原有的引号中:
resume=UUID=<Swap分区的UUID>
其中,要获取Swap分区的UUID,可打开/etc/fstab。
最后重新生成配置文件,重启后生效:
sudo grub-mkconfig -o /boot/grub/grub.cfg
禁用蜂鸣器
默认情况下,进行一些操作时,电脑的蜂鸣器会响起,发出很刺耳的嘟嘟声,例如在TTY中光标的始末处按方向键或退格键。这时可以考虑禁用蜂鸣器。
蜂鸣器默认作为内核模块加载,因此只需把相应的模块加入黑名单中禁用即可。
# 切换到Root用户下
sudo -i
# 卸载蜂鸣器模块
rmmod pcspkr
# 把蜂鸣器模块添加到黑名单中,重启即可彻底禁用之
echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf