写给root用户

1
2
3
4
5
6
7
8
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

For security reasons, the password you type will not be visible.

系统安装

从零开始使用 archlinux

从零开始使用 archlinux bilibili

Archlinux 简明指南

按照以上步骤安装系统一般不会出问题, 但是需要注意两点:

  1. 双系统的时间不同步问题

ubuntu与windows双系统时间同步问题——简明指南里详细介绍了该问题产生的原因,即 WindowsLinuxRTC 差异处理。解决思路有两种,一是让 Linux 将硬件时钟当成系统时间,二是让 Windows 修改硬件时钟为 UTC 时间。第一种方法可能会导致 Linux 出问题,采用第二种方式较稳妥。参考 Linux Windows 双系统时间不一致 里面的修改方式,在 Windows 上以管理员打开 PowerShell, 输入 Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1,重启 Windows,联网更新时间(这一步一定要做,因为联网更新时间后,Windows会重写硬件时钟)。这样再进入 Linux 时时间即可恢复正常。

  1. 双系统的 grub 引导

多系统boot的时候比较麻烦,按照简明指南中的方式,生成 grub 所需配置文件时,使用 grub-mkconfig -o /boot/grub/grub.cfg 并没有显示出 Windows Boot Manager 的项,此时不用担心,完成安装后,拔掉u盘,重启进入安装好的系统,再次执行一遍 grub-mkconfig -o /boot/grub/grub.cfg 即可。

查看系统信息

  1. 查看版本当前操作系统内核信息 uname -a

  2. 查看当前操作系统版本信息 cat /proc/version

  3. RedHat查看版本当前操作系统发行版信息 cat /etc/redhat-release

  4. 查看CPU 信息 cat /proc/cpuinfo

还有其他一些,可参考Linux查看系统基本信息,版本信息(最全版)

字体安装

安装一些支持中文的字体

1
2
sudo yay -Syu nerd-fonts-complete
sudo pacman -Syu noto-fonts noto-fonts-cjk noto-fonts-extra noto-fonts-emoji tty-lxgw-wenkai tty-lxgw-wenkai-mono tty-nerd-fonts-symbols

系统工具

截图工具

1
2
3
4
sudo pacman -Syu flameshot

# 使用方式
flameshot gui

网络工具

1
sudo pacman -Syu net-tools

修改无线网卡名

1
2
3
4
5
6
7
8
# 获取网卡的mac 地址
cat /sys/class/net/当前的网卡名/address

# 通过 udev 来修改网卡名
sudo vim /etc/udev/rules.d/10-network.rules

# 添加下面的指令,记得换成自己的mac地址
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:e9:39:53", NAME="wlan0"

nmcli 的使用

1
2
3
4
5
6
7
8
9
10
11
# 连接wifi
nmcli dev wifi con wifi_name password wifi_pass

# 显示所有连接
nmcli con show

# 根据uuid来删除连接记录
nmcli con del fc691e11-3dff-4ab0-85d6-772aa36943d3

# 根据 name 来删除连接记录
nmcli con del "wifi_name"

如果想删除所有的 wifi 连接记录,可以使用下面的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 获取所有wifi记录的uuid
wifi_record=$(nmcli -t -f UUID c)
# 按换行符分割
uuid=$(echo "$wifi_record" | tr "\n" " ")
# 将string转为array
read -r -a uuid_arr <<< "$uuid"
# 获取数组长度
len=${#uuid_arr[*]}
# 循环删除
for((i=0; i<len; i++))
do
del_wifi=$(nmcli c del "${uuid_arr[$i]}")
echo "$del_wifi"
done

无线网卡同时连接 wifi和开启热点(目前仅在 ubuntu下测试过)。

这里需要借助一个工具 create_ap

1
2
3
4
5
6
7
sudo apt install procps hostapd iproute2 iw iwconfig haveged

git clone https://github.com/oblique/create_ap.git

cd create_ap

sudo make install

查看一下当前的网卡:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 33048 bytes 6629397 (6.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 33048 bytes 6629397 (6.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlp0s20f3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.50.101 netmask 255.255.255.0 broadcast 172.16.50.255
inet6 fe80::717b:a6f2:a78b:5d51 prefixlen 64 scopeid 0x20<link>
ether 8c:f8:c5:29:14:31 txqueuelen 1000 (Ethernet)
RX packets 21457 bytes 5514093 (5.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 13457 bytes 2818709 (2.8 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

我这台笔记本电脑没有有线网卡,只有一个无线网卡 wlp0s20f3,如果想更改网卡名,可以参考上面的内容。

测试 create_ap 是否工作正常:

1
create_ap wlp0s20f3 wlp0s20f3 test 123456789

这将会创建一个名称为 test,密码是 123456789 的热点。

常见错误排查:

  • ERROR: Failed to initialize lock。删除 /tmp/create_ap.all.lock
  • Your adapter can not transmit to channel xxx, frequency band 5GHz。参考 issues 107,将 create_ap 中的函数 is_wifi_connected 改为:
1
2
3
is_wifi_connected() {
return 1
}

重新编译安装。该方法在我这里是 work 的。

通过配置文件对 wifi 信息进行配置。编辑 /etc/create_ap.conf

该文件的解析如下:

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
CHANNEL=default         #无线热点的频道设置为默认信道。
GATEWAY=10.0.0.1 #设置无线热点的网关地址为10.0.0.1。
WPA_VERSION=2 #设置无线热点使用的WPA版本为2。
ETC_HOSTS=0 #禁用/etc/hosts文件的解析。
DHCP_DNS=gateway #设置无线热点的DHCP DNS服务器为网关地址。
NO_DNS=0 #启用无线热点的DNS服务器。
NO_DNSMASQ=0 #启用DNSMASQ服务。
HIDDEN=0 #无线热点的SSID不隐藏。
MAC_FILTER=0 #禁用MAC地址过滤。
MAC_FILTER_ACCEPT=/etc/hostapd/hostapd.accept #指定MAC地址过滤的白名单文件路径。
ISOLATE_CLIENTS=0 #不隔离连接到无线热点的客户端之间的通信。
SHARE_METHOD=nat #使用NAT方式进行无线热点的Internet共享。
IEEE80211N=0 #禁用802.11n标准。(2.4G)
IEEE80211AC=0 #禁用802.11ac标准。(5G)
HT_CAPAB=[HT40+] #启用HT40+高级设置。
VHT_CAPAB= #未指定VHT_CAPAB。
DRIVER=nl80211 #使用nl80211驱动程序。
NO_VIRT=0 #启用虚拟无线接口。
COUNTRY= #未指定国家代码。
FREQ_BAND=2.4 #设置频段为2.4GHz。
NEW_MACADDR= #未指定新的MAC地址。
DAEMONIZE=0 #不将create_ap进程置于后台运行。
NO_HAVEGED=0 #启用haveged服务。
WIFI_IFACE=wlp3s0 #指定用于创建无线热点的无线网卡接口。
INTERNET_IFACE=enp1s0 #指定用于连接到Internet的有线网卡接口。
SSID=0125 #设置无线热点的SSID为0125。
PASSPHRASE=12345678 #设置无线热点的密码为12345678。
USE_PSK=0 #禁用预共享密钥(PSK)。

如果只是开一个2.4GHZ的热点,只需要修改下面的内容:

1
2
3
4
WIFI_IFACE=wlp0s20f3
INTERNET_IFACE=wlp0s20f3
SSID=zbh #要建立的热点名称
PASSPHRASE=123456789 #密码

开启和关闭 wifi

1
2
3
sudo systemctl start create_ap

sudo systemctl stop create_ap

查看创建的热点:

1
create_ap --list-running

该指令会显示一个热点的 id。

查看连接的设备:

1
create_ap --list-clients 6138  # 该 id 可由上一步的命令查看得到

疑难问题请参考 Xubuntu16.04系统中create_ap开启5G网络的踩坑记录,这里面列出了11个大坑及解决方法,尤其是我想开一个5GHZ频段的热点开不出来的时候,是这篇文章救了我。

魔法上网

采用v2ray,客户端使用v2rayA,设置透明代理的方式翻墙

蓝牙

蓝牙问题,使用 bluetoothctl 来控制连接,但是如果是头戴耳机,还需要安装 pulseaudio,记得开启服务,systemctl --user enable pulseaudio.service

使用简明指南:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
bluetoothctl

power on

agent on

default-agent

# 扫描设备
scan on

# 配对
pair on XX:XX:XX:XX:XX:XX

# 连接设备
connect on XX:XX:XX:XX:XX:XX

# 信任设备
trust XX:XX:XX:XX:XX:XX

# 退出 bluetoothctl
quit

dwm

安装 dwm,借助插件 auto-start 来运行一些开机命令,如开机自启动fcitx5,需要新建 ~/.dwm 文件夹,在下面新建 autostart.sh ,填入 fcitx5 -d

我这里遇到个很奇怪的问题,我之前把 autostart.sh 等这些脚本文件备份到 Github中了,重装系统的时候想直接git下来把相关的脚本放到对应位置,但是 dwm 始终不去执行这些脚本,我检查过脚本的位置、权限、所属用户,都没有问题。自己把这些脚本重新新建一遍,dwm就可以执行了,甚是奇怪。

开机自动启动startx,我试过在 .xinitrc 中添加 startx 的方式,但是无效。我的做法是在~/.zshrc中加入

1
2
3
if [ -z "${DISPLAY}" ] && [ "${XDG_VNTR}" -eq 1 ];then
exec startx
fi

自定义状态栏,内存占用量、网速、音量 参考脚本

使用前安装一个 sudo pacman -Sy bc 工具用于计算网速

dwm 快捷键

具体的快捷键要看 config.def.h 中自定义的,我这边只记录自己使用的。

Win+数字,切换标签页

Win+l,两个窗口左右分屏的情况下,向左缩屏幕

Win+h,两个窗口左右分屏的情况下,向右缩屏幕

Win+Shift+c,关闭当前窗口

Win+d,窗口横向排列(上下排列)

Win+i,窗口纵向排列(左右排列)

Win+Enter,窗口位置互换

Win+j,在多个窗口之间切换(顺时针)

Win+k,在多个窗口之间切换(逆时针)

Win+t,平铺模式

Win+m,单窗口模式

Win+f,浮动模式

tty 自动登录

实现方式是使用 systemed 服务。

参考:
Arch Wiki: getty

Arch Wiki: systemed )

执行 systemctl edit getty@tty1 命令,这会生成一个 /etc/systemd/system/getty.target.wants/getty@tty1.service 文件, 输入以下内容:

1
2
3
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

注意,第二行的 ExecStart= 不能省,一定要有。

重启系统,如果还是需要手动登录的话,去检查一下生成的文件中是否有以上内容。

输入法

安装fcitx5输入法时,要记得在 /etc/environment 中添加

1
2
3
4
5
6
GTK_IM_MODULE=fcitx5
QT_IM_MODULE=fcitx5
XMODIFIERS=@im=fcitx5
INPUT_METHOD=fcitx5
SDL_IM_MODULE=fcitx5
GLFW_IM_MODULE=ibus

否则在终端、emacs等环境中无法调出输入法来。

在我安装好 emacs 后,发现一些快捷键无法使用,例如emacs 跳转到文件末尾的快捷键 M-> 无效。我开始还以为是 fcitx5 拦截了一些快捷键,在fcitx5 的各种快捷键里找了半天也没找到,直到把 fcitx5 开机自启关闭后问题仍在,我才意识到是 dwm 将 Alt 键拦截了。dwm 默认切换窗口的快捷键是 Alt+数字,导致 Alt 这个键在其他程序中失效。在 suckless 官网中找到 Change Mod1 key to the Windows key in config.h,里面提到目前已知的 GNU 程序中并没有使用 Win 键作快捷键的,因此将 Alt 键改为 Win 键盘是个较好的做法,在 config.h 中将 #define MODKEY Mod1Mask 改为 #define MODKEY Mod4Mask 即可。

这样以来,所有的 dwm 中默认使用 Alt 键的行为都改为使用 Win 键,例如切换窗口现在是 Win+数字。但是我切换输入法的键是 Win+Spec,这样一改输入法无法切换了,而 Ctrl+Spec 又与 emacs 中的块选择快捷键一致,权衡之下,只能把输入法切换的快捷键改为其他(或者去dwm的配置文件 config.h 中把含有 MODKEY+Spec 的代码行改为其他按键)。

旋转屏幕

通过 xrandr 查看当前连接屏幕的分辨率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 > xrandr                                                              09:01:26
Screen 0: minimum 320 x 200, current 2560 x 1440, maximum 16384 x 16384
DVI-D-1 disconnected primary (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 connected 2560x1440+0+0 (normal left inverted right x axis y axis) 527mm x 296mm
2560x1440 59.95*+
1920x1440 60.00
1856x1392 60.01
1792x1344 75.00 60.01
2048x1152 59.90 59.91
...
360x202 59.51 59.13
320x180 59.84 59.32
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)

DP-2是我当前的屏幕,通过下面这条命令设置屏幕旋转:

1
xrandr --output DP-2 --rotate left

--output 指定的是屏幕,--rotate 指定的是旋转方向,这个参数可以设置成:normalleftrightinverted

如果是多个屏幕,可通过下面的命令设置屏幕位置:

1
xrandr --output DP-2 --right-of DP-1

--right-of 还可以换成 --left-of--above--below--same-as

指定主屏幕:

1
xrandr --output DP-2 primary

rofi

sudo pacman -Sy rofi

更改主题:rofi-themes-collection

emacs

参考我的另一篇博客。

系统迁移

这里所说的系统迁移,不是将一块硬盘里的系统换到另一块新的较大的硬盘中,插到电脑中继续使用,而是将该系统想办法复制到一块新的硬盘中,在完全新的硬件环境中成功启动。

假设你旧电脑中的系统已经是 WinArch 的双系统了(这样我就省去了描述配置 GRUB 的步骤)。

我的 Arch Linux 使用的是 btrfs 文件系统,旧电脑的配置如下:

硬盘的分配情况如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 2.7T 0 disk
├─sda1 8:1 0 350.6G 0 part
├─sda2 8:2 0 1.5T 0 part
└─sda3 8:3 0 919.9G 0 part
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part /home/lsn/CodeHub
sdc 8:32 0 953.9G 0 disk
├─sdc1 8:33 0 500M 0 part /boot
├─sdc2 8:34 0 4G 0 part [SWAP]
└─sdc3 8:35 0 949.4G 0 part /home
/
nvme0n1 259:0 0 953.9G 0 disk
├─nvme0n1p1 259:1 0 16M 0 part
└─nvme0n1p2 259:2 0 953.8G 0 part

其中,sda 是一个 3T 的机械存储盘,sdb 是一个2T的机械存储盘,sdc1 是双系统的引导分区,sdc2Arch 的交换分区,sdc3Arch 所在的系统盘,nvme0n1Win11 所在的系统盘。

新电脑的配置如下:

硬盘的分配如下:

1
2
3
4
5
6
7
8
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476.9G 0 disk
nvme1n1 259:3 0 476.9G 0 disk
├─nvme1n1p1 259:4 0 260M 0 part /boot
├─nvme1n1p2 259:5 0 16M 0 part
├─nvme1n1p3 259:6 0 200G 0 part
├─nvme1n1p4 259:7 0 274.7G 0 part
└─nvme1n1p5 259:8 0 2G 0 part

其中,nvme1n1 是新电脑中自带的硬盘,nvme1n1p1 是启动分区, nvme1n1p3Win 11 的系统盘,nvme1n1p4 是存储盘。 nvme0n1 是在新电脑中加的新硬盘,准备将新的电脑也变成 ArchWin11 双系统。

将原来设备双系统中的 Arch 迁移到新设备上来,主要参考这几个网站:

使用 Btrfs 快照进行增量备份使用 Btrfs 快照备份archlinux 基础安装

基本思路是,将新硬盘先插入到旧电脑中,进入旧电脑的 Arch 系统中,使用 cfdisk 格式化新硬盘为 btrfs 文件系统。然后,在旧电脑的 Arch 系统中创建快照,发送到新硬盘中。之后,创建新硬盘中快照的快照(原因后面再讲)。将新硬盘插入新电脑上,进入u盘的 Arch 系统,将新硬盘中快照的快照作为子卷挂载。

在旧系统中格式化新硬盘

先将新硬盘插到旧电脑的主板上,开机进入 Arch。使用 lsblk 查看当前硬盘,假设新硬盘显示为 /dev/nvme0n1

1
sudo cfdisk /dev/nvme0n1

建立两个分区,一个作为 swap 分区,一个为 btrfs 格式的系统分区.

分别格式化。

1
2
3
sudo mkswap /dev/nvme0n1p1

sudo mkfs.btrfs -L ARCH /dev/nvme0n1p2

格式化好的分区如下所示。

1
2
3
nvme0n1     259:0    0 476.9G  0 disk
├─nvme0n1p1 259:1 0 4G 0 part [SWAP]
└─nvme0n1p2 259:2 0 472.9G 0 part

btrfs 分区挂载到 /mnt

1
sudo mount -t btrfs -o compress=zstd /dev/nvme0n1p2 /mnt

创建并转移快照

由于我们要将快照转移到新硬盘中,使用的命令是 btrfs sendbtrfs receivebtrfs send 要求待转移的快照只能是只读的,因此我们要先创建系统的只读快照

在根目录下新建 /snapshot 目录,用于存放快照

1
sudo mkdir /snapshot

新建根目录 //home 的只读快照:

1
2
sudo btrfs subvolume snapshot -r / /snapshots/root_snap
sudo btrfs subvolume snapshot -r /home /snapshots/home_snap

其中,-r 是只读的意思。

将这两个快照转移到新硬盘中:

1
2
sudo btrfs send /snapshots/root_snap | sudo btrfs receive /mnt/
sudo btrfs send /snapshots/home_snap | sudo btrfs receive /mnt/

新的快照是不占空间的,但迁移时候的速度取决于 //home 的大小。

由于这两个快照是只读的,你不能直接将新硬盘中的两个只读快照挂载为子卷,否则无法写入。因此我们要对快照再创建一个快照。

1
2
sudo btrfs subvolume snapshot /mnt/root_snap /mnt/@root
sudo btrfs subvolume snapshot /mnt/home_snap /mnt/@home

通过命令查看快照的情况:

1
sudo btrfs subvol list -p /mnt

你应该能看到4个条目,分别是 root_snaphome_snap@root@home

卸载新硬盘,将其从旧电脑的主板上拆下,安装到新电脑中。

1
sudo umount /mnt

新电脑中的系统配置

进入 u盘的 Arch ,使用 lsblk 查看硬盘,假设新硬盘显示为 /dev/nvme0n1

开始挂载子卷:

1
2
3
4
mount -t btrfs -o subvol=/@root,compress=zstd /dev/nvme0n1p2 /mnt    # 挂载根目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p2 /mnt # 挂载 home目录
mount /dev/nvme1n1p1 /mnt/boot # 挂载启动分区
swapon /dev/nvme0n1p1 # 挂载交换分区

使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:

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

然后,切换到新硬盘的系统中:

1
arch-chroot /mnt

按照新电脑的CPU来选择微码并安装:

1
2
sudo pacman -S intel-ucode # Intel
sudo pacman -S amd-ucode # AMD

为grub引导双系统作准备:

1
2
sudo pacman -S grub efibootmgr os-prober
sudo grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH

最后生成 GRUB 所需的配置文件:

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

注意,此时并不会找到 Windows Boot Manager 项,即无法将 Win 的启动项添加到 GRUB 中,原因本篇博客开始的时候有说,需要拔掉 U 盘重启系统,进入 Arch 后再执行一遍 grub-mkconfig

关于显卡驱动

2023-10-23 更新

经评论区老哥提醒,笔记本的显卡驱动有两种情况:只有独显的笔记本电脑显卡驱动的安装方式与台式机一样,独显直通屏幕;对于既有核显又有独显的笔记本电脑,绝大多数的独显将渲染后的画面送到集显,由集显输出到屏幕,因此要让独显与核显协同工作。

经摸索,使用 optimus-manager 成功切换到独显。

安装过程参考 Arch Linux 的双显卡配置optimus-managerarchlinux 显卡驱动

首先,intel cpu安装如下的驱动:

1
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

对于 Turing (NV160/TUXXX) 系列或更新的显卡,需要安装 nvidia-open 驱动。

1
sudo pacman -S nvidia-open-dkms nvidia-settings lib32-nvidia-utils # 必须安装

然后安装 optimus-manager

1
yay -S optimus-manager

注意,一定要认真阅读 optimus-managergithub 上的说明。

博客 Arch Linux 的双显卡配置 中提到,电源管理工具 bbswitch 已经很久没有更新了,对于新的电脑来说,使用它可能会出问题;acpi_call 也是一个用于电源管理的工具,但是我没研究明白怎么用的;另外,optimus-manager wiki A guide to power management options 提到:

It’s better than nothing, though not as good for power consumption as completely turning the card off.

反正我大多数时候都是插着电源使用笔记本电脑,电源管理什么的,不要也罢😆。

安装 nvidia-prime

1
sudo pacman -S nvidia-prime

安装好 optimus-manager 后,默认的显示模式还是集显, 可以通过 optimus-manager --status 查看。

如果直接在终端里切换的话,sudo optimus-manager --switch nvidia,下次重启系统还是默认集显,我们需要设置一下,让系统每次开机都自动使用独显。

PS:我这里执行这条命令还报了错,参考 issue GPU setup was initiated but Xorg post-start hook did not run,粗略的查到在执行 sudo optimus-manager --switch nvidia 之前要先执行 prime-offload。下面是我的做法:

/usr/share/optimus-manager.conf 复制到 /etc/optimus-manager 下。

1
sudo cp /usr/share/optimus-manager.conf /etc/optimus-manager/

编辑这个文件,sudo vim /etc/optimus-manager/optimus-manager.conf,将 [AMD] 有关的内容注释掉,并且修改 startup_mode=integrated 这句为 startup_mode=nvidia

该文件的注释非常详细,每条指令的含义以及可选参数都写得很清楚,按需修改。

最后,修改 ~/.xinitrc 文件,添加这句:

1
/usr/bin/prime-offload &

重启系统,通过 optimus-manager --status 查看到如下信息:

1
2
3
4
5
6
Optimus Manager (Client) version 1.5

Current GPU mode : nvidia
GPU mode requested for next login : no change
GPU at startup : nvidia
Temporary config path: no

另外,通过 nvidia-smi 查询到如下信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Mon Oct 23 15:34:31 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.113.01 Driver Version: 535.113.01 CUDA Version: 12.2 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3060 ... Off | 00000000:01:00.0 On | N/A |
| N/A 41C P8 13W / 80W | 1489MiB / 6144MiB | 33% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| 0 N/A N/A 878 G /usr/lib/Xorg 820MiB |
| 0 N/A N/A 4585 G alacritty 9MiB |
| 0 N/A N/A 8681 G /usr/lib/firefox/firefox 0MiB |
| 0 N/A N/A 36159 C+G ...1577633,13106986359740496871,262144 344MiB |
+---------------------------------------------------------------------------------------+

独显驱动安装及切换成功!

独立显卡的驱动是安装 `Arch` 时较为头疼的,我的旧电脑中的显卡是 `Nvidia GTX 1060`,新电脑的显卡是 `Nvidia RTX 3060`,直接迁移过来的系统无法启动桌面,截至本篇博客撰写的时候我仍未在新电脑中成功的装起独显的驱动。我当前的做法是在新电脑中删除一切和 `Nvidia` 相关的驱动,改用核显。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 一个一个地手动确保下面的包都被卸载
sudo pacman -R nvidia nvidia-utils nvidia-open nvidia-dkms nvidia-settings lib32-nvidia-utils

# 我的CPU是Intel,安装核显相关的包,AMD的请自己查找
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

# 在 /etc/mkinitcpio.conf 的 HOOKS 一行添加kms。
sudo vim /etc/mkinitcpio.conf

# 重新生成一次镜像
sudo mkinitcpio -P

# 删除 /etc/X11/ 下 xorg.conf 文件
sudo rm -f /etc/X11/xorg.conf

重启系统