Arch Linux 的安装与配置

Arch Linux 的安装与配置

早就听闻Arch邪教的大名,Arch的维基对于新手入门Linux有很大的帮助,无论是在用哪个发行版;我也曾带着各种各样的奇怪问题,从搜索引擎、serverfault和各种论坛来到ArchWiki
最开始我是抱着折腾到底的心态才想来尝试Arch的,毕竟我实在是太会折腾了。作为一个经历过FedoraDebian的长期Ubuntu用户,最近因为期末了没时间,只是浅尝了一下Arch的一个衍生发行版Manjaro
Manjaro身上虽已经有了许多Arch的特征(毕竟是衍生发行版嘛),但因为其预装了许多可能不必要的软件,还是比较臃肿(顺着本文安装Gnome桌面后空间占用只有6GB左右;如果再适当精简部分软件或使用xfce桌面的话会更小)

要说Arch相较于其他发行版有什么优点呢?对于操作系统的评价不仅在于其本体,整个生态系统都应纳入评价参考的范围:

  • 高度自定义化,自己选择各个组件,真正接近属于自己的“定制”系统
  • 滚动升级,没有了版本号,至少不用操心跨级系统升级了
  • AUR(Arch User repository),一个由用户主导的软件仓库,据说是Arch最大的优势之一,再也不用安装大量的外部软件库了,还可以快速体验到最新发布的软件(当然对立面就是兼容性问题,又来考验你是否愿意折腾了)
  • 拥有非常活跃的用户社区,从绝无仅有丰富且质量高的wiki即可看出
  • 与商业公司脱钩,发展不会受类似的制约

这里就较为详细地介绍一下VMware Fusion下Arch Linux的安装和配置。实体机的安装可能磁盘和显卡驱动部分还需要额外配置,这里就跳过了。

P.S. 这个教程的启动引导使用的是UEFI,传统BIOS引导固件的安装步骤在启动分区、挂载和后面引导程序的安装有较小的的区别,这里就不再作阐述了。

首先去官网下载live镜像。比较小,只有600多兆,各个系统组件还需在安装过程中下载。

使用刚下好的镜像新建虚拟机,配置使用CD启动,就可以顺利进入live环境(自动登录root)。

若使用的是Parallels Desktop,在新建虚拟机时选择操作系统是其他Linux,并且需要手动在虚拟机配置中添加引导标记 vm.bios.efi=1 来使用EFI模式启动,如下图:

文件系统配置

先使用下列命令查看磁盘信息:

lsblk
lsblk -f

图中sda即为新建虚拟机时分配的虚拟磁盘。

分区

使用Live环境自带的分区工具cgdisk进行分区表的编辑和写入。

cgdisk /dev/sda

检测到无分区表的清洁硬盘会提示“Non-GPT or damaged disk detected”,直接按任意键跳过即可,进入分区表编辑界面。

使用左右键选择屏幕下方的选项为New并回车。

要创建一个新分区,cgdisk会依次要求4个回复:

  • First sector - 起始扇区位置(默认2048即可)
  • Size in sectors - 分区大小(例如9728M8G等)
  • Type code hex/GUID - 分区类型(常用三个:默认 Linux filesystem 8300、EFI分区 ef00和swap交换分区 8200
  • Partition name - 卷标(可不用设置)。

因为这里要设置分配一个EFI启动分区,我这里给系统留了9GB,在询问分区大小时输入9G,其余直接回车。

移动光标行至剩下的free space,创建EFI分区,默认使用掉剩余的1GB空间,设置分区类型ef00

P.S. 这里也可以通过设置分区类型8200来创建一个swap交换分区,但我觉得虚拟机中使用交换分区灵活度不高,分配内存大时也不太用得着,就在后面介绍一下分区文件的创建与配置吧。

配置完成应该如下图:

可以看到新增了一个大小为1023.0MiB,类型为EFI system partition的分区和一个大小为9.0GiB,类型为Linux filesystem的分区。

若有配置错误,上下键移动光标行至目标分区,左右键选择Delete后重新配置即可。
最后确认无误左右光标选择Write将分区表写入至硬盘后Quit

在次使用lsblk命令查看,分区成功后就应该像下图这样:

格式化与挂载

根据刚才lsblk命令的输出知道,Linux filesystem位于/dev/sda1EFI system partition位于/dev/sda2,依次使用下列命令将刚才的分区格式化为不同的文件系统:

mkfs.ext4 /dev/sda1
mkfs.vfat /dev/sda2

没有异常的输出应该像下面这样:

确认无误后使用mount命令进行挂载:

mount /dev/sda1 /mnt
mkdir /mnt/boot
mount /dev/sda2 /mnt/boot

基本组件与必要依赖的安装

换源

和其他系统一样,安装软件包前换镜像源。
在第一次执行pacman -Syy刷新软件源,pacman(Arch Linux 的包管理器)可以自动使用reflector选择并配置速度最快的镜像站。事实证明有时不太顶用,那就手动nano /etc/pacman.d/mirrorlist,手动添加下列几个国内镜像源(live环境没vim的哦):

Server = http://mirrors.163.com/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch

pacman fetch时顺序从上到下,所以直接在所有源的最前面添加镜像源即可,不用删除后面的源地址。

ctr+x y Enter保存退出后顺手pacman -Syy刷新,这下速度就快许多啦。

安装基本组件和依赖

base为基础软件包;base-devel是常用的开发工具包,包含编译、打包等工具,可以选择性安装(最好装上,以后一定会用的)。

接下来选择内核:

  • linux(当前稳定版本)
  • linux-lts(长期支持版本)
  • linux-hardened(安全优化版本)
  • linux-zen(整体优化版本,据说性能要好不少

安装部分常用软件:

  • htop - 最下面有附图,好用的进程管理器
  • nano
  • vim - 比上面那个好用的多
  • e2fsprogs - 文件系统工具

安装软件前最好先使用下面的命令更新一下公钥链:

pacman -Sy archlinux-keyring

避免部分开发者密钥更新后还保留着旧公钥的系统在软件包完整性校验时报错。

然后使用pacstrap命令安装到/mnt

pacstrap /mnt base base-devel linux-zen #那就是你了
pacstrap /mnt nano vim e2fsprogs

根据官方安装指南,虚拟机中不需要安装固件包,所以可以直接跳过linux-firmware

系统配置

生成fstab文件

使用genfstab命令生成“用于定义磁盘分区,各种其他块设备或远程文件系统应如何装入文件系统”的 fstab文件

genfstab -U /mnt >> /mnt/etc/fstab

进入本地环境

接下来的配置需要进入本地环境;执行命令:

arch-chroot /mnt /bin/bash

这时,你会发现原本的

root@archiso ~ #

变成了

[root@archiso /]#

成功进入本地环境后base、base-devel中没有包含的lsblkcgdisk等软件就没法使用了,但也可以使用前面安装的vim了哦。

设置时区与硬件时钟

ln -s /usr/share/zoneinfo/Asia/Hong_Kong /etc/localtime
hwclock --systohc --utc

设置区域化

如果不打算安装桌面环境,那么就可以在这设置区域了(安装桌面环境前提前设置区域会遇到区域冲突的问题,建议在安装桌面环境后再设置区域)。
vim /etc/locale.gen进入区域化配置文件,?keyword + Enter分别找到以下几条

#en_US.UTF-8 UTF-8
#zh_CN.UTF-8 UTF-8
#zh_HK.UTF-8 UTF-8
#zh_TW.UTF-8 UTF-8

光标移到#处按x键删掉注释符,ctrl+c :wq存盘退出,并执行

locale-gen

命令来生成配置。
执行命令

echo LANG=en_US.UTF-8 > /etc/locale.conf

使系统日志以英文产生,方便维护的同时又避免乱码带来的麻烦。

安装引导程序GRUB并生成配置文件

pacman -S efibootmgr dosfstools grub os-prober
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub --recheck
grub-mkconfig -o /boot/grub/grub.cfg

若在此处遇到

EFI variables are not supported on this system.
grub-install: error: efibootmgr failed to register the boot entry: No such file or directory

这样的错误,说明当前启动用的不是UEFI模式,那就需要重新使用UEFI模式启动。

安装网络管理程序

pacman -S networkmanager
systemctl enable NetworkManager
systemctl restart NetworkManager

P.S. 部分桌面环境也会提供此程序或类似替代品;若要安装桌面环境,可以在桌面安装完后再决定是否安装此程序。

用户与权限配置

passwd设置root密码,然后安装sudo

pacman -S sudo

visudo进入配置文件后?eel ALL=(A找到下面这行

# %wheel ALL=(ALL) ALL

去掉前面的#,以后即可将用户添加到wheel组来赋予root权限。

创建sudo用户并设置密码

useradd -m -G wheel twikor
passwd twikor

Good Ending 1

恭喜,无桌面环境的Arch Linux的安装到这里就结束了,如果你只是想将其作为服务器的话。执行ctrl+d reboot来重启并进入新系统吧。
推荐在这里进行快照的拍摄,之后可能会非常有用的哦!
你也可以接着配置桌面环境。

桌面环境的安装与配置

这里使用Gnome,支持并拥有活跃的插件开发社区使其扩展性较强的同时能拥有轻量的特性。

安装桌面环境

首先安装X Server和Gnome套件

pacman -S xorg xorg-server gnome

如果想要使用Gnome附带的整套软件包,则还需安装gnome-extra,而你可以通过序号选择安装其中的部分或直接回车默认安装包内所有软件。
然后启用桌面环境管理工具gdm

systemctl enable gdm

这时会自动启动桌面环境,登录进入环境来完善设置吧。

安装VMware tools

虽然这个操作不是必须的,但如果你要在VMware中轻松地实现宿客共享、自动调节分辨率等功能,可能离不了它。

我按照平时安装Ubuntu的熟练操作,依次点击菜单栏中虚拟机->安装VMware tools,将虚拟光驱中的安装包解压到/root中,执行vmware-install.pl,一路回车到底就该成了,可我看了看我这篇文章,还剩这么长,不见得简单。
果然,到了第四步左右,安装向导温柔地提示我,你该自己创建init.d目录了。
我:。。。从前的你不是这样的好吧?但还是照做了:

for x in {0..6}; do mkdir -p /etc/init.d/rc$x.d; done

安装成功后,向导自动进行运行初配置;嗯,好像又有问题了:

Distribution provided drivers for Xorg X server are used,后面又紧跟着Skipping X configuration because X drivers are not included
这。。。那到底有没有驱动呢?扫了一眼,这好像是个Warning,不是Error,照例不管。

Arch大概是自定义程度太高了吧,守护进程的配置都还需要自己动手,即便这个倒挺熟练的:
新建/etc/systemd/system/vmware-tools.service,编辑systemd配置文件:

[Unit]
Description = VMWare Tools Daemon

[Service]
ExecStart = /etc/init.d/vmware-tools start
ExecStop = /etc/init.d/vmware-tools stop
PIDFile = /var/lock/subsys/vmware
TimeoutSec = 0
RemainAfterExit = yes

[Install]
WantedBy = multi-user.target

存盘退出,顺手三连:

systemctl daemon-reload
systemctl enable vmware-tools
systenctl restart vmware-tools

本以为蒙在屏幕上的一层毛玻璃会在restart后消失,可是它却无动于衷。
P.S. 这时vmware-tools已经支持宿客主机共享等功能了,只是显示方面的自动化设置还没有。

看来确实少了什么,可ArchWiki没有介绍要额外安装什么X Server的驱动啊?
网上搜了一会儿,最终通过一个6年前未被回答的问题中的链接找到了在VMware官方帮助社区一个五年前的帖子,了解到的确还应该装个名字类似于xorg-x11-drv-vmware的驱动。
不能再依赖Google了,直接去pacman搜了搜:

pacman -Ss xorg | grep "vmware" | less

居然只有这一个,而且名字里有个感觉怪怪的video。抱着试一试的心态装了这个驱动:

pacman -S xf86-video-vmware

然后再重启守护进程:

systemctl restart vmware-tools

屏幕一黑,再亮起来时,毛玻璃消失了。

结束了么?结束了。

P.S. 如果你使用的高分屏,可以使用下面的命令来设置默认放大2倍的比例:

gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "[{'Gdk/WindowScalingFactor', <2>}]"
gsettings set org.gnome.desktop.interface scaling-factor 2

Good Ending 2

桌面环境的安装也告一段落了,剩下的无非就是软件、插件的安装、主题图标等的自定义。
这里简单给出几个我自己的配置和优化。

Dash to Panel 替换 Dock

推荐插件Dash to Panel,替换掉你桌面左边的dock

是不是整洁许多?
不过在安装插件前,你得先安装tweaks,中文译作优化

pacman -S gnome-tweaks

安装完成后可以去插件商店下载、解压到个人目录里、更改配置文件将其加载进Extensions
为了简化上述操作使你可以在插件商店(网页)上一键安装插件,你可以选择安装Firefox(或Chromium)、chrome-gnome-shell(现在使用browser connector来替代此插件了;可以使用下面的命令来安装):

# 安装 firefox (或 chromium)
pacman -S firefox

# 安装 browser connector
git clone https://aur.archlinux.org/gnome-browser-connector.git
cd gnome-browser-connector
makepkg -si

然后安装浏览器插件Chrome Shell Integration,然后。
安装完成后变可以在Gnome extensions上直接启用了:

zsh 替代 bash

推荐将bash替换为zsh,并配置其插件,可以让你的终端使用高效不少,在这篇文章中有详细安装步骤,给个效果图吧:

开启 Swapfile

root下依次执行下面的命令:

dd if=/dev/zero of=/swapfile bs=1M count=512 #创建大小为512MB的交换区
chmod 600 /swapfile #更改权限,重要
mkswap /swapfile #格式化
swapon /swapfile #启用交换文件

vim /etc/fstab, 添加:

/swapfile none swap defaults 0 0

存盘退出,打开htop,可以在Mem下观察到Swp了。

缩减 GRUB 选择等待时间

vim /etc/default/grub,选择性更改下面这两行:

GRUB_DEFAULT=0 #默认选中项,从上往下从0开始
GRUB_TIMEOUT=5 #默认等待时间

这个界面主要是给多系统和特殊启动使用的。当然,如果将默认时间设为0则会直接跳过交互界面,但最好留个1s,因为说不好哪天更新完内核你的系统就可能启动不了
存盘退出,执行下列命令更新配置文件:

grub-mkconfig -o /boot/grub/grub.cfg

重新启动来观察效果,是不是觉得人生又多了几秒呢?

最后

想唠叨几句。。。
不会再 折腾发行版的选择 困于无休止的选择中 了。

数不清自己有多少次没多大意义的折腾啦。
就拿博客软件来说:静态网页生成 -> Wordpress -> Typecho -> Bludit -> 自己写渲染框架 -> Ghost -> Kirby -> Ghost,最后因为高度自定义的特点回到了现在使用的Kirby(这点和Arch很相像呢)。
软件选择完成了,开始折腾主题,我在成百上千的Wordpress主题中寻觅着一个轻量而又符合自己审美的主题,最后迁移出了现在正在使用的Maker,然后各种魔改,根据Api文档和自己的习惯来让博客程序更贴合自己。算到现在,打造博客用时已经远大于写博客用时的一半了。“便于今后的使用”的前提是不耽搁使用,否则它就理所当然是一个借口而已。

在v站上看到过一句话,大意是,人生苦短,与其将大把时间花在最好的工具之选择上,不如用次好的工具做出更好的作品。折腾有度,希望和我一样的朋友能够理解到它的意思并有所改变,共勉呢。


参考:

  1. 为什么 Arch Linux 如此“难弄”又有何优劣?
  2. ArchWiki - AUR
  3. ArchWiki - Installation guide
  4. ArchWiki - Officially supported kernels
  5. VMware Community - Skipping X configuration because X drivers are not included.
  6. Gnome extension - Dash to Panel
  7. ArchWiki - Swap