Arch Linux 双系统安装配置踩坑记

FINCTIVE 2020-08

内容提要:

  1. 安装 Arch Linux + Windows 双系统

  2. 安装 KDE Plasma 作为桌面环境

  3. 日常使用软件推荐以及相关配置

为了更好地学习后端开发,我把开发环境搬迁到了 Linux。为什么选择 Arch Linux ?答案是包管理器社区氛围。Arch Linux 的包管理器能让你使用到最新的 bug 软件包;对于 Gitbub 上的一些小众软件,其他发行版可能需要手动安装,而在 Arch Linux 可以一行安装命令解决。同时,Arch Linux 社群的交流氛围很棒,提问得当时,常常会得到热心前辈的帮助;Arch Wiki 上的丰富内容也是一个吸引我的亮点。

安装 Arch Linux 需要一定的 Linux 基础知识,以及坚持 Debug 的耐心。个人认为 Arch Linux 的安装过程比较难,但是对学习理解 Linux 有很大的帮助。如果你是新手,想学习 Linux, 我更推荐你使用 Ubuntu 或者 WSL

我不会详细解释所有内容,但我会把遇到的问题以及解决方案完整地记录下来、整理出相关链接;同时我还会记录额外的运行脚本、配置文件。一切从简。

在你看到这篇文章时,有些内容可能已经过时了,请以 Arch Wiki 为准。我不是 Linux 方面的专家,文章内容难免有误,欢迎交流。

系统安装

前排提醒:请在对安装过程有大致理解之后再开始动手安装。

Arch Linux Wiki 一定要看(即使可能暂时看不懂)。

我是参考 The CW 的教程安装的,真正的手把手视频教程,非常适合新手学习。注意:The CW 的教程里装的不是双系统,有的步骤不能和视频教程里一模一样(详见下文说明)。

看完视频后,可以参考这个 repo 的记录开始安装,步骤与以上视频大致相同:

我遇到的问题

(你可能需要看过一遍 The CW 的教程才能明白这部分我讲了什么)

网络连接

在安装过程中 The CW 使用无线网络。如果完全按照 The CW 的教程操作,第一次进入系统会发现没有iwlist命令。建议在这一步(7.10 安装基础工具 )多安装一个包 wireless_tools , 里面有iwlist。

在安装程序运行的时候是可以直接使用有线网络的,但安装好系统之后就不行了。可能需要安装networkmanager包 ,并运行 systemctl enable NetworkManager来自动启动。(我没有试过,我直接使用了无线网络。)

我在安装的时候还遇到了 rtnetlink answers operation not possible due to rf-kill 报错,无法连接wifi。解决方案:使用命令 rfkill unblock all 来源

双系统

The CW 的教程里装的不是双系统,为了让 Arch Linux 与 Windows 并存,我做了以下操作:

  • 在挂载(mount)环节的时候,我把 /mnt 挂载到了我想挂载的 Linux 分区上;把/mnt/efi挂载到了EFI分区(如图所示);不挂载/mnt/boot

  • 不能格式化EFI分区(4.3 定义分区格式 ,这个步骤是格式化),否则可能会破坏 Windows 的 EFI 文件。直接挂载上去就好。
  • 在执行grub-install 这一步(7.9 安装grub相关 )的时候,我在efi-directory参数填写的是 /efi

以上步骤的详细解释请看 GRUB (简体中文)-ArchWiki 。上面描述的只是方法之一,你也可以使用其他方法,比如挂载/mnt/boot。具体情况不再详述,Arch Wiki 能解答你的大部分疑惑。

Debug

如果系统安装好后出现异常,可以在 GRUB 菜单选择启动项的时候,在 Arch Linux 选项上按e修改内核启动参数。找到linux开头的一行,把quiet参数去掉,按下ctrl + x启动系统。修改后可以看到更多的输出信息,有利于排查错误或者求助其他人。

其他可能对你有帮助的资料

安装桌面环境

# SDDM桌面管理器(用于登陆)
sudo pacman -S sddm
sudo systemctl enable sddm

# KDE Plasma
sudo pacman -S xorg plasma

sudo pacman -S networkmanager
sudo systemctl enable NetworkManager

# KDE 大礼包
sudo pacman -S kde-applications

# 我喜欢保持简洁,只安装了以下几个来自 KDE 的软件
# 文件浏览器,终端,文档阅读器,图片查看器,解压软件
# sudo pacman -S dolphin konsole okular gwenview ark

重启即可自动打开桌面环境。

如果出现问题,可以使用快捷键 Ctrl + Alt + F2 切换到 tty2。tty 可以粗浅地理解成“另一个”命令行窗口。切换到tty3, tty4 等的方法同理。

解决严重问题

Nvidia独立显卡开源驱动导致死机(双显卡)

我遇到这个问题时使用的是一台游戏本(Nvidia独立显卡)。问题现象:进入桌面环境一段时间后画面冻结,无法操作;或者在命令行使用检查硬件的命令(lspci)也会卡住。这个问题可以通过禁用 Nvidia 开源驱动 nouveau 解决:同本文「系统安装 - Debug」部分添加内核启动参数的方法一样,添加参数 module_blacklist=nouveau再启动。禁用之后才能正常启动系统,进行以下操作。

解决方案一

永久禁用独显驱动nouveau,并且使用bbswitch管理。参考资料

解决方案二

Arch Wiki - NVIDIA_Optimus

在带有 Nvidia 显卡的双显卡笔记本上运行 Linux 有可能遇上难以解决的问题,或者需要你花费许多时间配置环境,毕竟…… 如果你是第一次安装 Linux 并且恰好有其他设备(比如轻薄本、AMD 显卡台式机),我更推荐你使用后者。

双系统时间不同步问题

问题现象:关闭Windows系统,打开Linux系统后(或者相反),发现时间错乱了。时间错乱会给有些软件带来致命问题。解决方案:printempw - Manjaro Linux 踩坑调教记录 - 双系统时间不同步

软件安装

包管理器

编辑镜像源列表

编辑文件 ,将速度比较快的镜像源地址放到文件最上面。比如:

添加 Arch Linux 中文社区仓库

详情请看:Arch Linux 中文社区仓库 « Arch Linux

建议使用这里 的镜像链接,我使用中国科学技术大学的镜像源,速度不错。记得安装 archlinuxcn-keyring 包。

sudo pacman -S archlinuxcn-keyring

添加 archlinuxcn 源之后,许多常用的软件能直接在pacman高速下载。

yay

Arch 用户软件仓库 (Arch User Repository,AUR)是为用户而建、由用户主导的 Arch 软件仓库。AUR 中的软件包以软件包生成脚本(PKGBUILD )的形式提供,用户自己通过 makepkg 生成包,再由 pacman 安装。创建 AUR 的初衷是方便用户维护和分享新软件包,并由官方定期从中挑选软件包进入 community 仓库。本文介绍用户访问和使用 AUR 的方法。(来源:Arch Wiki )

sudo pacman -S yay

安装……更多软件!有了 AUR,你甚至可以下载 Github 上的软件包!(如果有人写了安装脚本。)yay 是帮助下载 AUR 内容的工具,用法类似pacman.

正是由于部分软件包是从 Github 上下载的,你也许会碰上这个问题:Jguer/yay - Github Issue - Proxy env variables being ignored.

本文以下提到的软件如果无法在 pacman 安装,请试一下 yay (搜索软件包 yay -Ss keyword)

字体

# 思源黑体
sudo pacman -S adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts 
# emoji
sudo pacman -S noto-fonts-emoji

在KDE设置中修改字体即可。如果有更细致的配置需求,请参考这篇文档 Font Configuration/Chinese (简体中文)

输入法 Fcitx5

详情请看 Fcitx5 (简体中文) - ArchWiki

sudo pacman -S fcitx5-im fcitx5-chinese-addons
# 词库(可选)
sudo pacman -S fcitx5-pinyin-zhwiki fcitx5-pinyin-moegirl

修改环境变量,编辑~/.pam_environment 加入以下内容:

INPUT_METHOD  DEFAULT=fcitx5
GTK_IM_MODULE DEFAULT=fcitx5
QT_IM_MODULE  DEFAULT=fcitx5
XMODIFIERS    DEFAULT=\@im=fcitx5

设置开机启动,编辑 ~/.xprofile ,加入以下内容:

fcitx5 &

输入法启动后,在系统托盘里可用找到fcitx5的图标,右键菜单 => Configure 打开配置窗口。(或者在终端使用命令fcitx5-configtool) 添加 “Pinyin”选项,完成。(注意不是添加 Chinese 选项)

image.png

Debug方式:在终端输入 fcitx5 也可以启动输入法,而且带有log信息。

Fcitx5 也可以安装部分搜狗拼音的词库!非常方便,鼠标点几下就好了。限于篇幅,详情请 Google。

外观主题

Linux 的灵活性同时也让桌面配置变得非常有趣,推荐你到 r/unixporn 逛一逛。不过我最近更喜欢 KDE 默认主题🤣

Rofi

我用 Rofi 作为软件启动 + 窗口切换工具。

sudo pacman -S rofi

Rofi Wiki

我在 KDE 设置 Custom Shortcuts 中把 super + space 快捷键绑定到了rofi启动命令:

  • rofi -show drun 软件启动
  • rofi -combi-modi window,drun -show combi 软件启动 + 窗口切换

如图是我根据 slate 主题修改的自定义主题。

使用方法:复制以下内容保存为 .rasi 后缀的文件,移动该文件到/usr/share/rofi/themes 目录,再使用rofi-theme-selector命令切换主题即可。主题文件:

* {
  background-color: #282C33;
  border-color: #2e343f;
  text-color: #d4d4d4;
  spacing: 0;
  width: 1024px;
}
inputbar {
  border: 0 0 1px 0;
  children: [prompt,entry];
}
prompt {
  padding: 16px;
  border: 0 1px 0 0;
}
textbox {
  background-color: #2e343f;
  border: 0 0 1px 0;
  border-color: #282C33;
  padding: 8px 16px;
}
entry {
  padding: 16px;
}
listview {
  spacing:      2px ;
  scrollbar:    false;
  margin: 0 0 -1px 0;
}
element {
  border: 0 0 1px 0;
  padding: 16px;
}
element selected {
  background-color: #2e343f;
}

词典

在命令行使用词典!

  • translate-shell 谷歌翻译。
  • sdcv 星际译王命令行版本,可以搭配 Edict 使用。

其他

开机自动挂载 Windows 分区

每次在 Dolphin 打开 Windows 磁盘分区时需要输入密码,有一些麻烦。用以下方法就能让 Linux 系统在开机后自动挂载(mount)该硬盘分区。由于Windows分区使用ntfs文件系统,你可能需要安装ntfs-3g

运行命令 sudo blkid 查看磁盘情况 ,在我的输出中可以看到我想要自动挂载的两个磁盘分区的信息:

/dev/sdb2: LABEL="Data" BLOCK_SIZE="512" UUID="9C02C50E02C4EE78" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="77a6e441-bae1-4d2a-b83b-612154aeca3c"

/dev/sdb3: LABEL="Games" BLOCK_SIZE="512" UUID="2C16224116220C80" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="5bf83111-53ff-4009-9a84-c905b96d461c"

根据你的需求修改/etc/fstab,可以和 KDE 文件管理程序自动挂载到一样的文件目录。我在/etc/fstab末尾增加了以下内容:

/dev/sdb2	/run/media/finctive/Data       ntfs     defaults          0 0
/dev/sdb3	/run/media/finctive/Games      ntfs     defaults          0 0

检查并挂载新添项:sudo mount -a 。这个命令会尝试挂载/etc/fstab中的内容,如果有错误,则会提示相关信息。想了解更详细的说明,请看参考来源

交换 Esc 键和 Caps Lock 键

当然是为了愉快地使用 vim 啦!

image-20210203223333167

在 VS Code 下不起作用?请在 VS Code 的设置中加上"keyboard.dispatch": "keyCode" 来源

KDE

KDE 可以更改的设置很多,如果不喜欢一些功能,不妨打开设置看一看。

  • Touchpad(触摸板) 的默认配置很奇怪,需要自己修改。

  • 进入桌面后不启动其他程序:

应用推荐

命令行软件留到下一篇文章讲解👏

  • Markdon 编辑器 typora,这篇博客就是用它写的,做笔记也很好用。
  • 聊天软件telegram, 中文技术交流群很多(比如 Arch Linux 群组)。
  • 第三方网易云播放器 yesplaymusic,界面简约,无社交功能。
  • 跨平台的电子书阅读器 koodo reader
  • 视频播放器 mpv,界面UI很少。我参考 Youtube 的快捷键写了一套 input.conf
  • 截图应用 flameshot 或者 KDE 的 spectacle
  • 下拉终端 yakuake 或者 tilda,把终端绑定到快捷键,随手开启、收起。
  • kdeconnect 可以在局域网和手机互相传文件,无敌好用。

更多内容:

END

至此,你已经成功安装好了 Arch Linux,并且有了可以满足基本使用需求的桌面环境 🎉

欢迎加入 #archlinux-cn 群组,你可以在这里和大家交流 Arch Linux 相关的问题。

后续我可能还会更新 Linux 工具相关的博文,最后推荐一下我喜欢的相关内容: