第一次装Arch的时候是2016年,那时候我刚当上程序员不久,对前端和后端的概念都不是很明晰。那时候Arch的安装教程对我来说和天书没什么区别,我好像装了一周。事实证明,那时候我只是机械地按照教程完成了所有的程序,并没有理解每一步的意义。所以,当我上周重新安装Arch的时候,我已经忘得一干二净,不得不重新理解。

如今,我觉得自己留下的那篇博文已没什么意义。8年过去了,有很多内容都失效了。那时候我应该学会如何安装系统——然而,对那时的我来说,光是这样一步步操作下来,已经竭尽全力了。

那么现在呢?经过了这么多年,是否有一些进步呢?

这不是一篇教程。需要教程的人可以看这一篇:Arch Linux + Windows 双系统安装教程

如何把大象装进冰箱

用最简单地步骤描述这件事是什么样呢?

  1. 制作U盘启动盘
  2. 对磁盘进行分区并格式化
  3. 进入U盘中的Linux系统
  4. 挂载实现预留的分区
  5. 给硬盘安装Linux
  6. chroot至硬盘中的Linux
  7. 给硬盘中的Linux安装必要的软件,其中最重要的是网络相关
  8. 安装引导程序,并添加windows系统选项

到这一步就基本完成了,但是需要一些其它配置。这些配置就见仁见智了,每个人都不一样。我自己做的事情是:

  1. 创建新用户
  2. 安装中文字体和中文输入法
  3. 安装桌面环境
  4. 安装防火墙

更之后的事情就每个人自己玩了。

简单地介绍一下每一步

使用U盘启动盘之后,立刻会进入一个系统,然而这个系统是留存在U盘里的,拔掉就没有了。我们的目标是把Linux系统装到硬盘里。

从这个角度来说,从windows系统安装应该是可行的,但是我没有研究过。

而分区这一步非常麻烦,但是实际上是和系统安装本身是独立的。也就是说,在windows里分好区再进行安装是完全可行的。

连接上网络之后,给硬盘安装 Arch 系统反而非常简单。在那之后,需要立刻安装引导,否则重启后无法进入刚安装的系统,只能重新通过U盘内的系统挂载对应的分区,然后 Chroot 进去。

在那之后,需要把windows的选项也加进去。否则,如果Bios较好还可以通过调整启动项进入windows,如果Bios不支持那就欲哭无泪了。

更后面的事情其实已经脱离狭义的系统安装的范畴,进入配置这一步了。

简单的分区介绍

就……蛮麻烦的,而且容易忘。

# lsblk 输出(windows 相关省略)5-boot 5-swap 7-home 8-mnt nvme0n1 ... ├─nvme0n1p5 vfat FAT32 74B8-3459 290.6M 43% /boot ├─nvme0n1p6 swap 1 eecb9f9a-dc0d-4e95-8e79-3c97e90000c3 [SWAP] ├─nvme0n1p7 ext4 1.0 283c6e38-0989-451b-86b2-82b04c778bd0 46.8G 15% /home ├─nvme0n1p8 ext4 1.0 a1317814-b119-45af-832c-f34937192020 1G 92% / ... # 挂载命令(以我自己的分区为例) mount /dev/nvme0n1p8 /mount mount /dev/nvme0n1p7 /mount/home mount /dev/nvme0n1p5 /mount/boot # 挂载后的目录结构 /mnt # 挂载mnt 分区 /mnt/boot # 挂载boot 分区(可以共用) /mnt/home # 挂载home 分区

由此可见 mnt 是根目录。

有一个swap分区,没有在这里挂载,使用指令开启。

再结合安装的指令,可以更好地理解安装这一行为:

pacstrap /mnt base base-devel linux linux-firmware nano vim e2fsprogs ntfs-3g

如果对挂载和硬盘缺乏概念,会不知道这到底是在干嘛,就像8年前的我一样。

同时,linux是离硬件更近的系统,有这样的感觉。这句话可能比较抽象,但是这样装过系统的人应该可以明白我在说什么。

这一次遇到的坑

系统分区

既然 windows 有Boot分区,我理所当然的希望复用。我这台电脑的windows Boot 分区是256M。我本以为够了,后面发现根本不够。虽然不至于安装不了 linux,但是引导程序文件无法生成。最后不得不使用一个单独的 Boot 分区。

然后,使用单独的Boot分区的话,需要挂载windows分区才能被 os-prober 扫到。这是我这一次遇到的最大的坑,然而这个在 Arch linux 的 wiki中有写(

安全启动,快速启动和Bitlock

安全启动是一定会关掉的,我们做的事情基本上就是和这个选项冲突的。

快速启动是推荐关掉的。我很讨厌那种“帮你做决定”,或者“偷偷做一些事情”的做法。我想让系统休眠的时候会自己这样做,我想让系统关机就是想让系统关机。实际上我觉得这是一种欺骗。

Bitlock是我没想到的事情。安装arch后,如果从arch的引导程序进入,会遇到 Bitlock 锁定。

随后,我解除了硬盘的 Bitlock。我的数据还没有重要到这种程度。不过我有点好奇类似“八爪鱼”这种东西有办法绕过 Bitlock 吗?

折腾日志

按照完 gonme 后常常卡死,遂放弃,换用KDE,也可能用窗口管理器。

KDE 倒是没卡死问题,但是小Bug有点多


~~删 gonme 之后发现系统无法检驱动网卡,正在解决~~

重启后好了 = =; 唯一想到的是之前 enable 了 iwd;


checking keys in keyring issue卡死

sudo rm -rf /etc/pacman.d/gnupg sudo pacman-key --init sudo pacman-key --populate archlinux

到目前为止已经达到了一个我比较满意的状态,我认为可以满足我的日常使用了。

  1. 安装了中文输入法
  2. 安装了 clash, 虽然流量管理还有些问题,不过我打算等真的需要终端或者游览器访问外网的时候再去解决
  3. 找了个顺眼的桌面和icon包
  4. 安装了 cnlinux 源,在此基础上安装了yay,这一点非常重要
  5. 安装了开发环境,安装了 chrome 和 vscode
  6. 安装了防火墙

非要说的话,我的windows一般锁80%的电量,这个可能搞以下

然后,我使用的双拼不支持辅码,这让我很难受

~~现在在折腾 窗口管理器。~~ 折腾个屁,就用 xorg 的 kde

不过我的mac倒是用上了amethyst,好用的


突然发现华硕有专门的 package,可以理解为一个丐版的...奥创?

sudo pacman -S asusctl

电源电量和win的设置一样锁了80%

顺便装了办公软件 LibreOffice,别想了,我肯定是用主流软件的稳定分支版本,不折腾就是王道。

sudo pacman -S libreoffice-still libreoffice-still-zh-cn

现在感觉一般使用完全没有问题了。好像只有玩游戏有必要切换到 win 的样子。


安装的软件越来约多了...

  • 日语输入法:sudo pacman -S fcitx5-mozc
  • Monitor:sudo pacman -S conky
  • 背单词软件,近期可能会写一篇语言学习的感想:sudo pacman -Syu anki
  • anki 依赖的播放器:sudo pacman -S mpv
  • 以及正在试用的 Markdown 编辑器:wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash

2024.12.29

折腾的次数比想象中多太多,从本次开始加上每次折腾的时间。

  • 简单的记事本:kwrite
  • 有些字形显示错误:最明显的是“复”这个字,会显示成半个字符,看起来像是被压扁了一样。检查了一下发现系统设置的字体不是中文字体,重新设置了一下就好了。但是在网页上还是有这个问题,可能游览器有自己的设置?
  • 接显示器希望分别设置dpi scale. 这个很好解释,笔记本屏幕太小,需要放大才能看清;外接显示器如果按同等比例放大有效信息太少。这个 xinit 无法做到,所以切换成了 wayland. 指令更换为:startplasma-wayland,同时增加了别名,否则每次都要打这一长串我可受不了。
  • 性能监控:conky. 安装这个主要是因为即使系统负载很地,风扇也会维持一定的转速。如果可能我还想知道笔记本在从哪里取点,因为我在用联想的140W PD 充电器供电
  • 随后我发现 apifan 显示结果为 no fan?,好家伙...

2025.01.06

  • CHM阅读器:不要问我为什么会用到 chm. 一些古老的社群养成了使用chm编纂文档的习惯,这一趋势很难流转。老实说我觉得这实在是遗祸无穷。
    • xchm 无法打开对应的CHM 文件
    • kchmviewer
  • 截屏软件:flameshot

2025.01.07

  • DB viewer
    • Beekeeper 看起来不错,但是备份要收费,删除。
    • DBeaver UI设计不太友好,能用
    • 最后还是用回了熟悉的 Navicat. Navicat Lite 免费,对我来说够用了。

2025.04.04

蓝牙

从装好到现在,第一次发现自己没有装蓝牙 - -

sudo pacman -Syu bluez bluez-utils

安装好之后,需要启动 bluetooth.service, 这里就直接 enable 了。

systemctl enable bluetooth.service

如果还有问题,可以查看 wiki

btusb 内核模块是通用蓝牙驱动。检查模块是否已加载。如果还没有,先加载模块。

一个小小的疑惑: pacman -Syu 到底是干什么的?

  1. arch linux 的发版策略: arch 使用滚动更新(rolling release)策略,持续更新软件库,没有发行版本(如 Ubuntu 24.04)。系统版本由当前安装的软件包版本动态决定。这也意味着,用户需要时常同步包版本。
  • 另:arch 没有实现 delta 更新,所以常常会出现仅仅需要更新几十M,却不得不下载几个G的文件的情况 - -!
  1. pacman -Syu 是更新系统的标准流程。
  • -y:更新本地包数据库(--refresh),从服务器获取最新的软件包列表。
  • -u:升级系统中已安装的所有包(--sysupgrade)。
  • -S:同步(Sync)操作,从软件仓库安装或更新包。

这样就可以理解这个指令在做什么:从服务器拉取最新包数据,更新数据库并升级。

如果只执行 pacman -S,会直接使用本地缓存的包数据库(/var/lib/pacman/sync/ 中的文件)安装包。

# 假设本地数据库中的 Firefox 版本是 120.0,而仓库已更新到 121.0 sudo pacman -S firefox # 会安装本地数据库记录的 120.0 版本

如果执行 pacman -Sy, 会更新数据库后安装,但不会升级装包。然而该操作强烈不推荐,这会导致部分更新,可能会出现预料外的问题。

# 危险操作:仅更新数据库后安装新包,未升级系统其他组件 sudo pacman -Sy firefox # 此时若 firefox 121.0 依赖 glibc 2.38,但系统中 glibc 仍为 2.37 # 可能导致 Firefox 无法启动或崩溃!

2025.04.19

升级之后开启桌面环境,结果蓝牙鼠标虽然可以连接但是无法使用。更新 bluez bluez-utils 重启之后解决。无法确定 root cause.


2025.05.10

修复引导程序

在 5.1 期间,升级了 windows 系统,结果 arch 开机引导就丢掉了。Fuck Microsoft。

总得来说,就是重复安装教程中,mount 分区,然后 install grub 这一项。 没想到之前做的 U盘 启动盘还会派上用场。

在文章主体上留下了分区记录,省得之后再遇到这种情况记不得分区了。

又一次折腾包升级

这一次升级系统时遇到了 AUR 包依赖冲突的问题。yay升级会帮忙升级 pacman, 蛮好。然而,我的 mnt 分区被缓存文件占满了。目前看来,我给 mnt 分区的空间太小了,最初应该调换一下 home 分区和 mnt 分区空间的分配的。只能先忍着了吧。

查看缓存和清理:

ls -lh /var/cache/pacman/pkg | wc -l # 查看包数量 du -sh /var/cache/pacman/pkg # 查看总大小 sudo du -h -d1 /mnt | sort -hr # 查看给定目录的文件占用情况,/mnt 请依据自己的情况替换。 sudo pacman -Sc # 清理未安装版本的缓存包 sudo pacman -Scc # 清理所有缓存(更彻底)

顺带一体,引发冲突的包 electron32 更新需要 clone 一个 10G 左右的仓库,从名称来看应该是游览器。由于实在想不起来为何安装了这个包,我选择将这个包直接删除。不把用户的带宽和储存空间当人是吧。

关于声卡

在设置的 Sound 选项,可以看到两张未激活的音频设备卡(准确来说是我手动禁掉的)。AI 对此的解释是:

AD107 High Definition Audio Controller

→ 这通常是你的 NVIDIA 显卡 所带的 HDMI/DisplayPort 音频输出接口(AD107 是 NVIDIA Ada Lovelace 架构的芯片编号,例如 RTX 4060 等)。

Rembrandt Radeon High Definition Audio Controller

→ 这是你 AMD APU 或独显 所带的音频输出,同样用于 HDMI/DisplayPort。Rembrandt 是 Ryzen 6000 系列 APU 的代号。

AI 同时解答了,为什么接到这两张卡上会没有声音:

这是因为这两张卡都不是内建声卡,它们输出的音频信号是通过 显卡的 HDMI/DP 输出 到外接显示器或电视设备的。

如果你没把音频信号接到支持音频输出的 HDMI 显示器或电视上(而且显示器要能播放声音),那么这些设备自然“没声音”。

而你真正的音频输出设备,比如笔记本的喇叭、耳机插孔,应该是另一张 内建声卡(通常是 Realtek 或 AMD/Intel Audio Device)。

关于声卡的指令:

pactl list short sinks pactl info