重新安装 Arch Linux

折腾Display manager把系统搞坏掉了,重新安装。这里重新记录安装教程。之前的记录有一些已经变化不适用了。之后如果有变更也会继续更新这里。

安装介质

使用一个U盘作为安装盘
Arch Linux Downloads下载安装镜像。推荐使用Magnet link下载,也可以使用网页下方的中国镜像直接下载。

Linux环境有dd命令可以直接制作安装U盘。详细说明

1
dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync

windows环境也有对应的工具。印象里直接用微软官方的Windows USB/DVD Download Tool就可以制作安装U盘。具体的步骤可以参考制作Win7安装U盘的过程

注意事项: 这个安装盘可以在日后的维护中当作系统急救盘使用,但是需要隔段时间就更新。

XPS 的 UEFI 设置

根据wiki上关于XPS 15 9560相关说明,安装前需要修改一些UEFI设置。

安装环境配置

插上U盘,重启。在出现Dell的图标的时候一直不停按F12,直到出现进度条。之后就进入Boot Menu,选择带USB字样的选项,进入安装环境。

屏幕是4K的分辨率,默认字体小。先改字体,目前只找到这个字体用的效果比较好

1
setfont latarcyrheb-sun32

安装过程需要联网,使用 wifi-menu iwctl来连接网络。具体的用法参考iwctl Usage

1
2
3
# wifi-menu
iwctl
ping t.cn -c 4

安装的时候需要通过软件仓库安装软件。开启时间同步并使用国内的镜像。

1
2
timedatectl set-ntp true
sed -i '/China/!{n;/Server/s/^/#/};t;n' /etc/pacman.d/mirrorlist

上面的修改方法已经无效了,去Pacman Mirrorlist Generator找一份最快的镜像列表,手动输入下

分区

用的是EFI,那就需要一个EFI 系统分区Arch Linux本身需要一个分区分配给根目录/。以防内存不够用计划分SWAP分区备用。

计划的分区如下表

分区大小格式路径说明
nvme0n1p1512Mfat32/EFIEFI 系统分区
nvme0n1p28G[SWAP][SWAP]交换分区
nvme0n1p3160.5Gbtrfs/根分区

使用lsblk确定SSD的磁盘名称。结果中带nvme字样的就是笔记本的SSD。其他以loop结尾的可以忽略。

然后使用parted或者cfdisk进行分区。安装的是Arch Linx单系统,直接删除原有的分区表,直接新建就可以了。

首先格式化EFI 系统分区,根据wiki上的EFI 系统分区

1
mkfs.fat -F32 /dev/nvme0n1p1

格式化交换分区

1
2
mkswap /dev/nvme0n1p2
swapon /dev/nvme0n1p2

格式化根分区,用的btrfs

1
mkfs.btrfs -L xps /dev/nvme0n1p3

格式化完成后使用lsblk查看有没有错

先挂载分区到对应路径

1
2
3
mount -o compress=zstd /dev/nvme0n1p3 /mnt
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/EFI

注意事项: 之后当作系统急救盘的来使用的时候也需要安装上面的来挂载。

安装系统

安装基础软件包组base和基础开发包组base-devel,后者用于安装AUR中的软件。Linux内核需要另外安装,已经排除在base组中了。

1
pacstrap -i /mnt base linux linux-firmware base-devel

如果有选项默认回车就可以了。
如果之前修改软件仓库服务器用了国内的镜像,安装很快就会完成。

系统基础配置

生成分区表。检查一下生成的文件是否正确

1
2
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab

使用arch-chroot进入新系统。接下来的配置都在新系统里进行

1
arch-chroot /mnt

设置时区

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步硬件时间

1
hwclock --systohc

安装编辑器
之后要编辑文件,这里先安装一个编辑器,简单的编辑用nano。安装系统后如果有复杂的编辑就直接使用vscode了。

1
pacman -S nano

区域设置

1
nano /etc/locale.gen

去除en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8前的#,保存退出nano
生成locale

1
locale-gen

设置默认 locale

1
echo 'LANG=zh_CN.UTF-8'  > /etc/locale.conf

主机名设置,这里直接设置为xps

1
2
echo xps > /etc/hostname
nano /etc/hosts

输入以下内容,保存退出

1
2
3
127.0.0.1 localhost
::1 localhost
127.0.0.1 xps.localdomain xps

设置root密码
重要,必须记住的密码

1
passwd

按提示输入密码

日常使用的话,基于安全原因不使用高权限的root用户。新建用户作为日常使用。这里以archie作为用户名。

1
2
useradd -m -g users -G wheel -s /bin/bash archie
passwd archie

按提示输入密码。日常使用就以archie用户配合设置的密码登录。日常使用中偶尔需要root权限,这里配置sudo用来临时提权

1
EDITOR=nano visudo

找到Uncomment to allow members of group wheel to execute any command这行,删除下一行的#,保存退出。
关于sudo的用法和更多配置参考

安装引导程序。这里直接使用传统的GRUB

1
2
3
pacman -S dosfstools grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/EFI --bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg

至此,Arch Linux可以算是安装完成了。根据官网的教程这个时候应该要重启了。但是并不能作为日常使用。接下来需要进行基本的配置和安装必要的软件,包括桌面环境

桌面环境

因为显示驱动的关系,开关机会挂起。

1
nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT追加acpi_rev_override=1。加完之后该行差不多就是这个样子

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet acpi_rev_override=1"

使用xorg作为图形界面的接口。这里偷懒直接全部安装了,反正存储不是特别紧张

1
pacman -S xorg-server

不要直接安装xorg软件组,里面带有一些游戏……

不喜欢gnome,所以安装KDE Plasma

1
pacman -S plasma-meta

查看plasma-meta中包含的软件,里面用不到的可以删掉。

安装显示管理器sddm

1
pacman -S sddm

sddm默认不需要配置,直接启用就可以了

1
systemctl enable sddm

这样开机就能启动图形环境了,前面已经配置了中文环境,但是没有中文字体。不安装字体就会显示“豆腐”

1
pacman -S noto-fonts-cjk noto-fonts-emoji

网络配置

XPS 15 9560没有网口,这里直接安装无线的相关包

1
pacman -S iw wpa_supplicant dialog 

安装网络管理包,这里貌似要安装gnome的才有用,原因存疑

1
pacman -S networkmanager

接下来重启进入新系统

1
2
exit
reboot

这里关机重启XPS可能会挂起,长时间无响应。长按电源键直接关机。然后按电源键开机进入新系统。

注意事项
安装用的U盘可以拔掉了

进入系统之后,会发现显示的字体特别小,而且没有无线网络。按下Ctrl+Alt+F2,进入tty2,用root帐号登录。
先按照之前的步骤设置字体。

查看端口

1
ip link show

显示的结果中带wlp项就是无线,这里以wlp3s0为例。上线无线端口,并开启管理服务

1
2
ip link set wlp3s0 up
systemctl enable NetworkManager

按下Ctrl+Alt+F1,回到图形界面。
打开系统设置->显示和监控->显示,设置缩放显示到合适的大小,4K屏的XPS设置200%差不多。确定并应用。

然后重启,应该可以看到显示的字体可以看了,也可以在默认的右下角设置无线网络连接了。

安装软件

终端模拟器

Arch Linux安装软件一般都需要连接网络。先连接网络。
现在图形环境没有终端,先安装终端。

切换到tty2,登录

安装konsole

1
pacman -S konsole

安装完后,exit退出tty2,在图形界面应该可以打开konsole。之后的命令在konsole中执行。

文件管理器、浏览器、编辑器

安装文件管理器、浏览器、编辑器。这里用火狐只是临时用用,之后最终使用的是带硬件加速的chromium-vaapi

1
pacman -S dolphin firefox code

代理

代理使用的是clash

1
pacman -S clash

下载代理的配置文件,这里放在Clash.yaml中。记得修改其中的secret,加上dashbroad的访问密码。
运行代理

1
clash -f /path/to/Clash.yaml

系统设置->网络 设置->代理中选择使用手动配置的代理服务器。输入代理地址和端口,默认配置如下

代理方式代理地址端口
HTTP 代理127.0.0.17890
HTTPS 代理127.0.0.17890
SOCKS 代理127.0.0.17891

代理默认使用的是第一个节点,切换节点打开管理网页。如果不能打开就说明当前使用的代理节点挂掉了,先取消代理系统配置。默认的端口号是9090,默认的地址是127.0.0.1。
管理页面的proxies中选择一个可用的代理节点就可以使用代理来访问了。
具体的有没有使用代理可以看connections中的Chains部分

git&AUR Helper

Arch Linux的软件一般的在pacman仓库中,还有一些在AUR中。这里安装yay作为AUR Helper用来安装AUR中的软件。yay本身在AUR中,这里依照github上的说明手动安装

1
2
3
4
pacman -S git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

yay可以方便地安装AUR中的软件。之后软件的安装和更新都可以使用yay

日常软件和配置

zsh

默认的bash使用体验一般,安装zsh来加强体验,并且使用code::stats插件。
zsh插件使用zgen来管理。直接安装zgen就可以,zsh作为依赖也会安装。

1
yay zgen

安装后,输入zsh启动,选择创建一个空的配置文件。然后在.zshrc中加入下面的配置启用zgen

1
2
# load zgen
source "/usr/share/zsh/share/zgen.zsh"

退出zsh,重新打开zsh,输入zgen确认可以使用。退出zsh,再次修改.zshrc来启用zsh的插件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# Created by newuser for 5.8

# code::stat
export CODESTATS_API_KEY="code::stats machine key"


# load zgen
source "/usr/share/zsh/share/zgen.zsh"


# if the init scipt doesn't exist
if ! zgen saved; then
echo "Creating a zgen save"

zgen oh-my-zsh

# plugins
zgen oh-my-zsh plugins/git
zgen oh-my-zsh plugins/sudo
zgen oh-my-zsh plugins/command-not-found
zgen oh-my-zsh plugins/z
zgen oh-my-zsh plugins/archlinux
zgen load zsh-users/zsh-syntax-highlighting
zgen load https://gitlab.com/code-stats/code-stats-zsh.git
zgen load romkatv/powerlevel10k powerlevel10k

# completions
zgen load zsh-users/zsh-completions src

# save all to init script
zgen save
fi

# POWERLEVEL9K theme setting
POWERLEVEL9K_LEFT_PROMPT_ELEMENTS=(dir vcs)
POWERLEVEL9K_RIGHT_PROMPT_ELEMENTS=(status root_indicator background_jobs history time battery)

再次启动zsh可能会进入powerlevel10k的初始化流程,可以直接跳过。

日常的大部分操作是在Konsole中进行的。在tty中因为缺少部分字体,显示会有不完全的现象。只在Konsole中默认启用zsh
设置->编辑当前配置方案->常规->命令中输入zsh的路径,默认是

/bin/zsh

注意事项: zsh配置文件没有发挥powerlevel10k的全部功能,感觉还有改进的空间

yay配置

这是用来安装软件的相关配置,包括了pacmanmakepkgnano的配置。

打开pacman的配置文件

/etc/pacman.conf

要做的修改是确保Color选项启用。为了之后安装steam,开启community仓库。为了方便之后的chromium-vaapi,添加Arch Linux CN仓库,关于这个仓库查看Arch Linux 中文社区仓库项目主页。仓库镜像写在另一个文件中。

1
2
[archlinuxcn]
Include = /etc/pacman.d/mirrorlistcn

mirrorlistcn中内容是Arch Linux CN的镜像地址,格式仿照其他的mirrorlist

使用前还需要更新并安装archlinuxcn-keyring

1
2
yay -Syy
yay -S archlinuxcn-keyring

AUR中的部分包需要下载源码后编译打包,在
机器内存足够而且多核CPU的情况下,修改makepkg配置经可能加快编译速度。
默认配置文件路径

/etc/makepkg.conf

主要修改是使用内存编译,并在压缩中使用多线程。

1
2
BUILDDIR=/tmp/makepkg
COMPRESSZST=(zstd -c -z -q - --threads=7)

yay默认使用diff的方式来显示PKGBUILD,修改为编辑的方式。更多的选项可以参考项目主页

1
yay --editmenu --nodiffmenu --save

nano的修改不多,主要是代码高亮。本来想加上行号的,但是跨行复制的时候会把行号也复制出来。
默认配置文件路径

/etc/nanorc

1
2
## To include all existing syntax definitions, you can do:
include "/usr/share/nano/*.nanorc"

默认的配置中高亮的格式不多,这个项目提供更多的高亮格式。

1
yay -S nano-syntax-highlighting

显卡驱动

注意事项:Nvidia的驱动一直在更新,这里的说明可能已经过期

麻烦的是安装Nvidia驱动并使用独立显卡。这里直接参考网上的教程

参考这个

只需要安装Nvidia驱动,屏蔽initramfs中的kms

  1. 安装闭源驱动

    1
    pacman -S nvidia nvidia-utils nvidia-settings
  2. 查看n卡的BusID

    1
    lspci | egrep 'VGA|3D'
  3. 修改grub
    nano /etc/default/grub

    1
    GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet initcall_blacklist=simpledrm_platform_driver_init"

kms/etc/mkinitcpio.conf里的HOOKS数组中移除,并重新生成initramfs

以下的步骤是失效的

  1. 自动生成配置文件

    1
    nvidia-xconfig

    这步我直接跳过了

  2. 启动脚本配置

1
2
3
4
$ nano /usr/share/sddm/scripts/Xsetup
======================================================================
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto

这是SDDM的配置,不同的窗口管理器设置不同

  1. 修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ nano /etc/X11/xorg.conf
======================================================================
Section "Module" #此部分可能没有,自行添加
load "modesetting"
EndSection

Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "1:0:0" #此处填刚刚查询到的BusID
Option "AllowEmptyInitialConfiguration"
EndSection
tails/91454059
  1. 解决画面撕裂问题
1
2
3
4
5
6
7
8
9
10
11
$ nano /etc/mkinitcpio.conf
======================================================================
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
======================================================================

$ nano /etc/default/grub # 此处必须是grub引导,其他引导自行百度
======================================================================
GRUB_CMDLINE_LINUX_DEFAULT="quiet nvidia-drm.modeset=1" #此处加nvidia-drm.modeset=1参数
======================================================================

$ grub-mkconfig -o /boot/grub/grub.cfg # 就算grub引导,配置文件也可能不在一个地方,请查看清楚
  1. nvidia升级时自动更新initramfs
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $ mkdir /etc/pacman.d/hooks
    $ nano /etc/pacman.d/hooks/nvidia.hook
    ======================================================================
    [Trigger]
    Operation=Install
    Operation=Upgrade
    Operation=Remove
    Type=Package
    Target=nvidia
    Target=linux
    # Change the linux part above and in the Exec line if a different kernel is used

    [Action]
    Description=Update Nvidia module in initcpio
    Depends=mkinitcpio
    When=PostTransaction
    NeedsTargets
    Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -P'

浏览器设置

内存够大,把浏览器的临时文件放到内存中。在chromium的启动命令后加上%U --disk-cache-dir=/tmp/cache

chrome使用的图形化是基于gtk的,文件选择的弹框安装kdialog

steam

Proton的加持下,用Linux玩游戏也不是不行。具体有哪些游戏支持在Linux下运行可以在ProtonDB上查询。

安装steam需要启用32位源,打开/etc/pacman.conf,启用multilib

1
yay -S steam

如果有问题,那么需要安装其他包,具体看Wiki

手柄连接

常用软件

图片查看

qView

编辑器

vscode,使用官方的visual-studio-code-bin包,或者去除微软信息的vscodium

IM

主要用的是telegram,使用telegram-desktop-userfonts包来使用系统字体。

手机同步

同步通知用的,kdeconnect

视频播放器

bomi
目前还没有找到合适的MPV前端

bomi已经处于不再维护的状态,还是换了MPV
OSC用的是uosc

MPV的配置项和插件很多,估计要另外一篇。

文件管理器

dolphin

输入法

建议使用fcitx,还是使用旧的4版本的fcitxfcitx5还是有点问题。另外还有安装fcitx-qt5来实现qt支持,安装fcitx-cloudpinyin来实现云拼音支持,安装kcm-fcitx来图形化配置工具
在用的是fcitx5,基本没问题,还有萌百的词库。

1
2
3
4
5
6
7
8
fcitx5
fcitx5-chinese-addons
fcitx5-configtool
fcitx5-gtk-git
fcitx5-material-color1
fcitx5-pinyin-moegirl
fcitx5-pinyin-zhwiki
fcitx5-qt

唯一的问题就是和浏览器vivaldi的搭配,这里使用git版本,暂时还没有出现问题。

截图工具

Spectacle

压缩工具

ark
额外的格式支持

1
2
3
4
5
lrzip (optional) - LRZ format support
lzop (optional) - LZO format support
p7zip (optional) - 7Z format support
unarchiver (optional) - RAR format support
unrar (optional) - RAR decompression support

下载工具

aria2

远程工具

freerdp

系统美化和优化

字体

参考Wiki

主题

窗口推荐使用Klassy有很多选项

安装主题breeze10-kde

应用程序风格-窗口装饰中选择Breeze10Opacity设置为 0% ,按钮大小设置为很大

工作空间行为-桌面特效 模糊 设置合适的值

锁屏时间格式

参考reddit上的这个帖子

对于登录屏幕,修改/usr/share/sddm/themes/breeze/components/Clock.qml;对于锁屏,修改/usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/components/Clock.qml

修改内容:將

1
text: Qt.formatTime(timeSource.data["Local"]["DateTime"])

替换为

1
text: Qt.formatTime(timeSource.data["Local"]["DateTime"],"hh:mm:ss")

## 输入法皮肤
安装fcitx-skin-material

关闭Baloo索引

1
balooctl disable

DOCK

latte-dock
分隔使用plasma5-applets-latte-spacer

yuzu