起因 ———— wsl2 和虚拟机无法使用

8月初,因为网络、操作系统和 gpu 的问题,我的计算机各方面的学习都举步维艰。
在 windows11 上,wsl2因为神秘原因,一直在报如下的错误,导致依赖于他的 docker 也无法正常运行。

wsl2_bug.png

在安装成功 archlinux 之后,才找到解决方案:
在用户目录 %USERPROFILE% 下创建一个配置文件.wslconfig,写入内容:[experimental] networkingMode=mirrored

热身 ———— 在华硕中安装 debian

我的华硕是一台上古机子,基本无法作为日常工作使用,但是因为双硬盘,所以就拿来作双系统安装的练手。

正式开始 ———— 安装 archlinux

我是参考这篇文章来安装 arch 的:arhclinux简明安装

补充:Arch Linux + Windows 双系统安装教程

进入 bios 界面

华为电脑进入 bios 界面的方法是:在电脑启动键盘高亮时,狂按 f2 键,进入 bios 界面。

网络

我在安装 debian12 和 arch 时,都是连的家庭网络,在无图形化界面连接网络时,除了家里网真的太差以外,没什么问题。而之后帮助朋友安装 arch 时,是在学校。连接校园网需要打开浏览器来进行认证,认证完毕后,才能连接到校园网。但是现在的 arch 还没有图形界面,所以是无法连接校园网的,还得是手机热点。不过还有网络名字中文的问题,arch 刚开始时还没有中文输入法,所以网络名字如果有中文还得先改成英文。

分区,格式化与挂载

按照简明安装教程安装 arch 的过程中,最容易出问题的就是这一部分。
由于教程并没有明确说明要挂载在哪一个分区,我和朋友在挂载时,都误将 /boot 挂载到和 / 与 /hoem 同一个分区上,导致在输入grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch命令时,提示 /boot 目录不是 efi 分区。(此时 exit 退出环境重新分区)
由于我的华为电脑是单硬盘,装系统划分 efi 分区的话可以让两个系统共用一个 efi 分区(但千万不要格式化这一 efi 分区)。但是我的 windows11 使用的 efi 分区已经满了,所以只能再建一个 efi 分区。于是,正常来说,arch 应该分到一个 efi 分区,一个 swap 分区,还有一个根分区,其下应该挂载 / 和 /home 目录。

lsblk_f.png

在 grub 界面加入 windows 启动项

记修复 Arch Linux grub + Windows Boot Manager 双系统 UEFI 引导

声音

按照简明安装教程安装后,我的 arch 是发不出声音的,在该教程的常见问题派出与解决里有这一块说明。但按照教程操作之后还是发不出声音。经过排查,发现在 alsamixer中,我的headphone是静音状态,只要使用命令alsamixer init,就能正常发声。

alsamixer.png

但是每次重启headphone项就会变成静音状态。最后只能加一个开机自动启动脚本来解决。

alsamixer_init.sh.png

虽然它显示执行失败,但实际上这个命令的确执行了,声音也能发出来。

alsa_init.png

蓝牙

华为蓝牙鼠标可以连接三个设备。

mouse.png

第三个亮点已经配对了 win 的蓝牙,第二个亮点匹配了 arch 的蓝牙。

耳机因为在发声前配对了 arch 的蓝牙,在声音问题解决后,显示已配对但是连接不上 arch,解决方法是删除该配对再连接一次,

快照

我使用的是 timeshift 来进行快照。但是我在进行恢复快照操作重启后,发现系统无法启动,提示 /home 目录无法正常挂载。

home挂载.png

在查看系统日志文件后得到解决方法:在 /etc/fstab 文件中,删去/home 那行 subvolid项。

fstab.png

代理

我选用的是 nekoray + mitce ,只开启 tun 模式。对于我来说,只开启系统代理或者系统代理+tun模式都不太行(有概率)。但目前的方案在晚上依然很卡。
之后登陆校园网时,无法打开浏览器还是得关掉代理。

9月15日,mitce寄了。

于是还是安装了魔法猫咪 clash verge。订阅机场:八戒机场
clash verge 可谓是我所有用过的代理中配置最简单的了。
Archlinux 中 clash 配置教程

博客

在迁移博客时,首先是要安装 node ,然后安装 npm ,最后安装 hexo 。
但是因为 node 版本过高(22),hexo 使用时会报一个punycode废弃的错。查文档找到的解决方案都不管用,最后决定降低 node 版本到20。
但是sudo pacman -S nodejs命令下载的 node 版本无法通过 n 来降低版本。最终整个解决方案是这样的:
sudo pacman -S nodejs
sudo npm install -g n
n 20.12.2
sudo pacman -R npm
在删除由 pacman 安装的 npm 之后,n 所下载的 node 就可以发挥作用了。
之后hexo clean等一系列命令在 linux 下都要加个 nvm 。于是我加了一系列别名来解决这个问题。

alias.png

由于各类插件体积实在太大,我的插件是从 package.json 文件中导出来,然后放在脚本文件里执行再安装的。

github 登陆

因为 2fa 的存在,我的 github 登陆在linux下无法用指纹登陆。所以采用了浏览器的 2fa 插件。

身份验证器.png

解压缩

从 windows 传文件到 linux 下,zip格式普通的解压缩会出现一堆乱码,需要使用unzip -O GBK *.zip

Linux 命令

lnav 用来查看日志文件。
journalctl 用来查看系统日志。
dmesg 用来查看系统日志。
strace 用来跟踪系统调用。
pyflakes 用来静态检查 python 代码中的错误。
mypy 用来静态检查 python 代码中的类型错误。
tac 用来反转文件内容。
perf 用来分析系统性能。
htop 用来查看系统进程。
ncdu 用来查看磁盘使用情况。
broot 用来浏览文件系统。
stress 用来测试系统性能。
helix 用来测试系统性能。
hyperfine 用来测试系统性能。
pdflatex 用来编译 latex 文档。
git 用来管理代码。
curl 用来下载文件。
wget 用来下载文件。
crond 用来定时执行任务。
screen 用来创建会话。