Arch Linux迁移计划

食用指北

如果是从零开始安装,建议直接跳到 大佬教程 章节,无需看完正文内容

对于Linux的苦难哲学论述感兴趣的,可以翻到文章结尾去找

善用 Ctrl+F 可以事半功倍

后续还会不定期填坑更新

本文的Arch Linux安装于2022年6月,不保证有关Arch Linux内容在一年后依然有效

前言

自由的代价总是昂贵的,但未必使人感到幸福
自由必然是需要代价的,你要求的自由度越大,实现的难度系数越高,代价就越大
阳光之下总有阴影
不自由才能衬托自由
人类是群居动物,社会规则之外争取到的自由,格外珍贵,当然昂贵

2023.1.30最后更新

由于Arch Linux更新kernel 6.18的时候,硬件管理出现问题(电源灯闪烁,CPU频率大幅度降低),外加调试KVM显卡直通时对硬件造成的影响,重新用回Windows了

开始

这是一项我长期计划的一个任务:使用Linux完成Windows的替代

随着学校大创项目的顺利解题,使我有机会告别那些优化垃圾的专属开发软件(Keil,Multisim),外加Nvidia开源了GTX 20系的驱动,扫清了之前退坑的问题。外加国产固态性能的提升,使得我有意愿+机会把Linux安装到新买的硬盘上。我周围也有使用Linux作为主力的同学,并且也使用了一年左右无恶意问题,这些因素都极大促成了这个计划的进行。

于是,就有了这篇文章,用于记录Linux安装,选型,后续维护

这次回归并不是特别顺利的,因为即使在2022年,要想舒服的使用Linux,依然需要使用者的精细化调整,远不如Windows和MacOS的傻瓜与鲁棒性

这即是Linux的苦难哲学,使用Linux图形界面会使人变得不幸。而我只是个恰好走过这一段路的人(幸运人?发烧客?)

image.png

过往退坑经历回顾:

联想拯救者R7000 2020版 Manjaro/Arch 安装N卡驱动

Windows的WSL2+Docker初探

如果对Linux操作系统不熟悉的话,可以先看看工具怎么用

Linux工具快速教程

Linux选型

请注意,Linux选型问题历来都属于行业内的饭圈问题,本部分只讲述个人选型经历,没选上不代表系统不优秀,不代表专业意见,请勿采一捧一!!!

我个人对Linux的需求是:能使用安全行业常用的安全套件,能运行Office,QQ等常见聊天办公工具,支持Nvidia原生驱动(优先选择2022年4月Nvidia的开源驱动)为科学计算做支撑,最好有LTS版,能在网上搜到该系统下常见的问题解决方案。

Arch

不提供LTS版本,但是想要的绝大部分软件都能通过Pacman+AUR的组合找到。系统滚挂的问题没有大家想的那么突出,如果是个人使用的话不会有太大问题,而且网上踩坑的人很多。Arch的Wiki应该是我见过本地化做的最好的,内容详细,具备可操作性。

怎样才能尽量避免archlinux滚挂?

安装麻烦,可以玩玩(但没想过,最后真的装了这个)

Steam Deck的系统也是基于Arch Linux的,可以期待未来的游戏性能

联想拯救者R7000安装ArchLinux所遇到的坑

详细安装教程可以看后面章节

在Windows下Vmware试着安装了Arch,下面是相关记录

虚拟机内使用Arch的配置

1
2
3
4
5
6
7
8
9
sudo bash
pacman -Sy gtkmm net-tools
pacman -Sy open-vm-tools
pacman -Sy xf86-video-vmware
pacman -Sy xf86-input-vmmouse #安装VMWare的一些优化软件
systemctl enable vmtoolsd.service #设置开机启动
————————————————
版权声明:本文为CSDN博主「大灰狼时间」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zxcv960924/article/details/62229972

EndevourOS

我同学在用的,基于Arch Linux,只不过个人有些排斥这样的小社区系统,所以最终没有选择这个

好像提供图形安装界面,也适合爱折腾的人试试。

Ubuntu

拯救者R7000 2020/GTX 1650 安装 ubuntu 20.04 双系统

周围有同学买了固态上Ubuntu,但一个搜狗输入法装了半节课还没装上就有些尴尬,使用AUR就没有这个问题。

由于没有查明Ubuntu对Nvidia开源驱动的合并情况,所以最终也没考虑

Pop_os

基于Ubuntu,一度成为我选择清单上的优先选择,因为其包含了良好的闭源驱动支持(也能解决我当时的退坑问题)

最后没选上纯粹是学校网太慢,即使挂代理也要下载很久,而我那时候已经把虚拟机里面的Arch玩起飞了,所以自然落选了。

由于2022年4-5月老黄放出了开源驱动,那闭源驱动自然就没有吸引力了

Kali

做安全必备的系统,内置常用安全工具,要是能作为主力的话就不用开虚拟机或WSL开Kali了,可以用Blackarch实现部分替代

Blackarch

黑客用Arch,相关软件源与Arch是通用的,选了Arch也能享受到Blackarch的好处

大佬教程

绝大部分有关Arch的需求都可以在这些地方找到:

Arch的官方Wiki

https://arch.icekylin.online/

https://archlinuxstudio.github.io/ArchLinuxTutorial/

释放 Linux 系统预留的硬盘空间

Arch Linux安装+KDE桌面+双显卡驱动一站式解决方案

虚拟机配置

KVM

请不要在笔记本上随意配置KVM显卡直通

因为你永远也不会清楚笔电的BIOS到底能不能处理好英伟达显卡的电源管理

Arch下的KVM win10客户机与宿主机使用samba共享文件的步骤

Archlinux下使用KVM代替Vmware

ArchLinux/Manjaro 配置KVM环境

我选择的的是这个配置

1
sudo pacman -S qemu libvirt ovmf virt-manager bridge-utils dnsmasq

bridge-utils 负责网络桥接

kvm底层需要 qemo和libvirt

ovmf :解决UEFI启动问题

dnsmasq :负责处理网络相关

ebtables 网络配置管理 非必须

开启libvirt服务

1
2
systemctl enable libvirtd
systemctl start libvirtd

加入用户组

1
usermod -a -G kvm username

kvm 有一个专门针对 windows 的 virtio 的驱动, 不知道你用了这个没, 如果以传统的 ide 方式添加的硬盘,io 性能会特别的慢。

Arch的KVM运行镜像

每次启动前都要手动开网络

1
sudo virsh net-start --network default

win7特殊准备

2022年,win7连kvm驱动都不给了,virto-win得自己去翻镜像才能找到

1
latest supported for win7: 0.1.173-4

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

翻到了也没法安装成功

spice直通win7

参考这两篇

https://blog.csdn.net/fjh1997/article/details/121204224

spcice硬盘剪贴板复制

Vmware

ArchLinuxCn配备了软件,但下完linux-headers以后,dkms始终挂不上,只能推迟解决

VirtualBox

官方源就有,按照wiki做的基本没有大问题

QEMU

做ARM64的实验,查看QEMU版本

1
qemu-img -V

可能还需要配合busybox制作img使用

但如果我只是偶尔跑一下arm64程序,没必要这么麻烦,安装qemu-user就行

1
sudo pacman -S qemu-user

ctrl+A+X 是关闭qemu

参考国外的写法,把树莓派的系统跑起来了(看我写的另外的文章)

https://gist.github.com/Ch0pin/191007e621e806a6283d5ec5416b8847#file-rasp

注意,有一步需要修改

系统安装与后续维护

安装教程

Arch Installation guide

我本人是用archinstall脚本安装的(仅支持UEFI安装)

2022.5 archlinux详细安装过程

安装KDE

在 Arch Linux 中安装和配置 KDE Plasma 桌面

Manjaro KDE 调教配置及美化(2022.01.23)

双系统安装

网上教程很多,建议是在有线网络下安装

2021 Archlinux双系统安装教程(超详细)

KDE安装

Arch安装后的配置(超详细)

1
2
3
4
5
pacman -S --needed xorg sddm
pacman -S --needed plasma kde-applications
sudo systemctl enable sddm
sudo systemctl enable NetworkManager
sudo nano /usr/lib/sddm/sddm.conf.d/default.conf

关机慢

我这里的KDE不时会遇到SDDM关不下的情况,就会造成关机过慢的情况

ArchLinux关机慢的问题

vim /etc/systemd/system.conf

1
DefaultTimeoutStopSec=10s

校园网下面安装

Arch Linux安装笔记(1)——校园网环境下基础安装

配置U盘镜像

Ventoy 1.0.15启动不了Arch的安装盘,但2022年后的Ventoy都能启动

运行到tty3

切换,但是图形界面会挂在后台

1
ctrl+alt+f3

只保留命令行,图形界面会彻底关闭,但是这种情况中文显示有问题(待填坑)

1
2
systemctl isolate multi-user.target
systemctl isolate graphical.target

systemd-boot

当时没安装GRUB,只安装了这个,不知道怎么调整成双系统,后面也没去动了

KDE系统分区

后期可用这种办法吧/home目录分离出去

1
2
sudo pacman -S filelight 
sudo pacman -S partitionmanager

可以把新的硬盘挂载到/home的文件夹下面,新买硬盘的话,扩容起来十分方便

分区助手有个小bug,如果想要运行二进制文件,你必须先要勾选“不允许执行二进制文件”,保存完以后再取消勾选才能生效

根源解决方案是:fstab后面给盘符添加exec

参考这篇文章:

ubuntu 磁盘挂载权限导致该分区无法执行二进制文件

没有ifconfig与nslookup

ifconfig,route在net-tools中,nslookup,dig在dnsutils中,ftp,telnet等在inetutils中,ip命令在iproute2中

1
sudo pacman -S net-tools dnsutils inetutils iproute2

systemctl

设置系统启动的连接关系

systemctl enable 命令用于在上面两个目录之间,建立符号链接关系。 如果配置文件里面设置了开机启动, systemctl enable 命令相当于激活开机启动。 与之对应的, systemctl disable 命令用于在两个目录之间,撤销符号链接关系,相当于撤销开机启动。

Nvidia开源驱动管理

查看版本

1
cat /proc/driver/nvidia/version

解决蓝牙耳机麦克风没法用的问题

需要修改配置方案才能使用,只有在这种模式下,才没有杂音

image.png

听音乐的时候记得改回去,不然音效贼渣

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

删掉之前认证的指纹即可

1
vim ~/.ssh/known_hosts 

环境变量配置

提供几个位置可供修改

~/.bashrc:

该文件包含专用于单个人的bash shell的bash信息,当登录时以及每次打开一个新的shell时,该该文件被读取。

单个用户此文件的修改会影响到他以后的每一次登陆系统和每一次新开一个bash。因此,可以在这里设置单个用户的特殊的环境变量或者特殊的操作,那么每次它新登陆系统或者新开一个bash,都会去获取相应的特殊的环境变量和特殊操作。

1
export PATH=/usr/local/bin:$PATH

/etc/profile:

此文件为系统的环境变量,它为每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置。

这个文件,是任何用户登陆操作系统以后都会读取的文件(如果用户的shell是csh、tcsh、zsh,则不会读取此文件),用于获取系统的环境变量,只在登陆的时候读取一次。

备份

全盘备份方案

1
dd if=/dev/sda | gzip > sda.img

有人说用Clonezilla,但具体也没有实操用过

文件描述符

文件描述符到底是啥?

Linux 中一切都可以看作文件,包括普通文件、链接文件、Socket 以及设备驱动等,对其进行相关操作时,都可能会创建对应的文件描述符

当一个应用程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。POSIX标准要求每次打开文件时(含socket)必须使用当前进程中最小可用的文件描述符号

检索工具

在Windows下面有好用的Everything,在Linux下面

我用fsearch进行替代,在体验上还是不如Everything

1
yay -S fsearch

目前的情况是无法输入中文,需要在其他地方编辑好以后复制上去。

命令行的话,建议fzf

Man文档

大名鼎鼎的Man手册,大部分想要的Linux相关指令资料都能在上面找到,提供中文版本阅读

1
sudo pacman -S man-pages-zh_cn

Pahole更新失败

pahole和linux-headers是捆绑的,可经常是headers升级,但是pahole一升级就会出错

1
2
3
4
5
6
7
8
9
10
错误:无法提交处理 (有冲突的文件)
pahole: 文件系统中已存在 /usr/lib/libdwarves_reorganize.so
pahole: 文件系统中已存在 /usr/lib/libdwarves_reorganize.so.1
pahole: 文件系统中已存在 /usr/lib/libdwarves_reorganize.so.1.0.0
pahole: 文件系统中已存在 /usr/lib/python3.10/site-packages/__pycache__/ostra.cpython-310.opt-1.pyc
pahole: 文件系统中已存在 /usr/lib/python3.10/site-packages/__pycache__/ostra.cpython-310.pyc
pahole: 文件系统中已存在 /usr/lib/python3.10/site-packages/ostra.py
pahole: 文件系统中已存在 /usr/share/dwarves/runtime/Makefile
pahole: 文件系统中已存在 /usr/share/dwarves/runtime/ctracer_relay.c
发生错误,没有软件包被更新。

目前唯一的解决方案,就是挨个删除以上文件

麻了,确实找不到其他方法了

输入法

ctrl + . 全角与半角切换

Aur软件包回滚

社区经常有人在那边瞎折腾,没经过验证就把包送到了社区(当然还是要感谢他们的努力,不然Arch的社区就不可能这么活跃,也没有那么多好用的包),也有直接删包跑路的人。Aur的包都是用Git管理配置文件的,要回滚其实也很简单

找到yay缓存的地方(一般是.cache/yay)进入对应的软件,回滚Git记录,然后参考Arch_wiki Arch User Repository 安装即可

1
2
makepkg
sudo pacman -U package_name-version-architecture.pkg.tar.zst

命令行浏览器

图一乐,毕竟现在都在用Vue,React的这一类工具的话,命令行浏览器根本就不可能渲染。命令行浏览器的效果就跟拿诺基亚老手机上网的效果差不多

一开始选择的是lynx

1
pacman -S lynx

发现lynx不支持中文后,改用w3m

1
pacman -S w3m

也就应急用一下吧

玩原神

七圣召唤启动器(bushi)

没有什么是AUR无法解决的问题

1
yay -S an-anime-game-launcher-bin

使用flatpak

替换国内源
sudo flatpak remote-modify flathub –url=https://mirror.sjtu.edu.cn/flathub
增加启动器源
flatpak remote-add –if-not-exists launcher.moe https://gol.launcher.moe/gol.launcher.moe.flatpakrepo
安装启动器
flatpak install launcher.moe moe.launcher.an-anime-game-launcher-gtk

隔离沙箱

bubblewrap

Flat使用的轻量沙箱

1
pacman -S bubblewrap

firejail

没用过,另外一款沙箱工具,操作看起来更傻瓜化

1
pacman -S firejail

USB命令行配置

Arch真的是一穷二白,我以为有的有关硬件的命令一个都没有

1
2
sudo pacman -S usbutils
sudo pacman -S iw #配置无线网卡

配合dmesg(display message)检查到底有没有启动成功

1
sudo dmesg |grep -i usb

选择格式,挂载对应U盘

1
mount -t vfat /dev/sdb1 /mnt/usb
1
2
3
ip link set dev wlp3s0 up // 用来将无线网卡接口启用
iw dev wlp3s0 scan // 用来扫描周围的无线热点
iw dev wlp3s0 connect "your_essid" // 此命令可以直接连接没有加密的热点

救砖

希望没机会用上,但还是要准备上以防万一

Arch Linux系统修复指南

1
2
3
mount /dev/nvme0n1p2 /mnt
mount /dev/nvme0n1p1 /mnt/boot #请将分区号换成你自己的
arch-chroot /mnt

将设备联网后更新内核

日志

journalctl

dmesg

pacman配置问题

取消掉一些不想要源

发现pacman默认是从第一个源下载数据,之前一直用的是哈工大源,但哈工大源2022年10月的时候有点抽风,导致我无法收到Virtualbox 6.1的更新。换成阿里源以后更骚包,一堆软件警告我版本高于源。只好换成北外源

1
sudo vim /etc/pacman.d/mirrorlist

archlinuxcn配置

https://developer.aliyun.com/mirror/archlinuxcn

在福建的话,阿里源只有200kb/s,换成北外源可以达到20MB/s,于是就换成北外源了

1
Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch

错误:GPGME 错误:无数据

校园网的登录依赖HTTP劫持,经常出现这种问题

1
2
sudo rm -R /var/lib/pacman/sync
sudo pacman -Syu

软件升级/降级问题

如果遇到软件滚挂的情况(我刚安装第二天,Telegram就滚挂了)安装downgrade

downgrade完那个被降级的包就会被添加IgnorePKG里面

问题不对,立马降级

1
2
pancman -S downgrade
sudo downgrade firefox

软件不升级

ArchLinux 配置pacman.conf不升级某个或多个软件包

DNS配置

查看当前dns状态

1
systemd-resolve --status

对照network manager修改即可

NetworkManager#/etc/resolv.conf

有时后dns服务会被systemd-resolved接管走,有空再去查

Paccache 清理包缓存

pacman的包经常带有缓存以方便回滚,paccache则是用来清理长期永远用不上的包,可以节省不少空间

查看缓存占用的空间

1
du -sh /var/cache/pacman/pkg/

清理除 3 个最新版本之外的所有软件包

1
sudo paccache -r

删除已卸载软件包的所有缓存版本

1
sudo paccache -ruk0

参考:

Arch Linux 中清理包缓存的推荐方法

无效或已损坏的软件包

1.首先更新一下密钥,如果没有安装archlinux-keyring,请及时安装

1
sudo pacman-key --refresh-keys

2.重新加载相应的签名密钥

1
2
sudo pacman-key --init
sudo pacman-key --populate

3。清除pacman 的缓冲文件

1
sudo pacman -Scc

4.更新或者安装系统即可

1
sudo pacman -Syu

日常软件

VScode

可以去AUR找微软的二进制包,但我选择开源的Code-OSS

1
sudo pacman -S code

这种软件用的不是微软的插件仓库,我找的时候发现找不到腾讯云函数的开发工具,在不用微软二进制包的情况下,可以去AUR找钩子,实时替换插件仓库

1
yay -S code-marketplace

建议如果有商业插件需求的(比如说copilot),还是老老实实用AUR的微软二进制包

1
yay -S vscode-bin

PDF浏览

KDE自带的Okular

pdf转换操作,用pdftk

https://archlinux.org/packages/community/any/pdftk/

就没有图形化方案么(没有图形化反倒更好操作了?)

网易云音乐替代

yesplaymusic 第三方网易云 看起来比deepin的要好很多

image-20220624211942811.png

Ctrl+ALt+left/right 上一首/下一首

Ctrl+ALt+up/down 软件内音量up/down

但没有电台就有些烦躁(听不了初弦大佬收集的明日方舟电台),还得用deepin打包的版本

1
sudo pacman -S netease-cloud-music

能用,就是缩放的问题

rar解压缩

kde默认是用Ark

原生自带是不支持RAR解压缩的,还需要到Pacman手动添加rar软件包才支持rar解压

OCR

白描OCR进行替代

pandaocr能跑的起来,用CrossWine就显得很傻(由于在虚拟机里跑的英文,pandaocr字体乱了,改成utf’8可以解决)

本地部署的话,就用trocr

网盘挂载

使用Rust版本的阿里云盘Webdav+Dolphin,实现云端同步

1
yay -S aliyundrive-webdav-bin

真同步还是要用rclone

example

1
sync /home/mocus/文档/blog/source/_posts Aliyun:blog --dry-run

v2raya

archlinuxcn源默认配备,无需代理即可下载

conky

资源显示

https://wiki.archlinux.org/title/Conky_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

貌似不支持wayland,只能放弃

Terminal 美化

archlinux安装oh my zsh

音频转码

当然是ffmpeg啦

当时装处理nvidia nvenc手误装了这个,看起来也还不错,带GUI,能用

1
yay -S handbrake-nvenc

图片编辑

可以用Krita和GIMP

感觉GIMP有些操作不太顺,也许到时候换Krita

1
sudo pacman -S krita

录屏软件

目前我唯一知道的可行方案是OBS

1
sudo pacman -S obs-studio

屏幕录制

从27.0开始OBS才支持wayland屏幕的录制,但还需要安装其他包

xdg-desktop-portal

xdg-desktop-portal-kde

pipewire

pipewire-media-session

参考: How to get OBS Studio fully working with Wayland and KDE!

nvenc无法使用的问题

nvidia-open 开源驱动的锅,截止到2022年7月,仍处在修复状态

相关Issue: nvenc not available

issue里面提到了补丁解决方案,实测有效

image.png

2023年1月更新

相关Issue已经在2022年10月关闭,看样子英伟达不准备处理这个问题

要注意的是,编码器只能选择H.264而不能是HEVC(至于为什么是这样,我也不知道)

pSng8II.png

腾讯会议

1
yay -S wemeet-bin

截止到2022年7月,腾讯会议还不支持Wayland的屏幕共享,需要通过虚拟摄像头来曲线救国

方案1:OBS屏幕采集+虚拟摄像头

方案2:v4l2loopback-dkms摄像头

详情见AUR仓库

或者直接选择桌面时降到X11,这样就能直接屏幕共享

Docker

1
pacman -S docker

添加当前用户到docker用户组($USER)记得自行替换

1
sudo usermod -aG docker $USER

然后重启就ok了(系统也要重启)

1
sudo systemctl restart docker

如果不想设置为系统默认启动,每次开启前就要手动输入

1
systemctl start docker

docker-desktop

arch下面也可以用docker-desktop,但是没有意义

https://docs.docker.com/desktop/linux/install/archlinux/

docker-compose

不用处理什么奇奇怪怪的链接,一键安装,舒服

1
sudo pacman -S docker-compose

测试

拖一个AWVS来玩一下

1
2
3
4
5
6
docker pull secfa/docker-awvs
docker run -it -d -p 13443:3443 secfa/docker-awvs
Then visit https://YOUR_IP:13443/
//账户密码如下
Username:admin@admin.com
password:Admin123

修改镜像源

1
sudo vim /etc/docker/daemon.json

阿里的话可以来这里申请

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

申请完以后重启即可

要注意,镜像必须是可访问的才行,不然在启动阶段机会报错!!!

使用docker info检验是否安装正确

QEMU虚拟化

把multiarch/qemu-user-static特权提升后,就可以使用其他架构的镜像

1
docker run --rm --privileged multiarch/qemu-user-static --reset --persistent yes

DBeaver

用于连接数据库,位于Arch的Community库

数据库

PostgresSQL

https://wiki.archlinux.org/title/PostgreSQL

1
pacman -S postgresql

开启日志

1
pg_ctl -D /var/lib/postgres/data -l 日志文件 start

通过守护进程启动

1
systemctl start postgresql.service

PostgreSQL Server 的配置文件是 postgresql.conf。此文件在数据库数据目录中,通常在 /var/lib/postgres/data。这个目录也包含其他主要的配置文件,包括 pg_hba.conf

详细还是要看wiki

1
\list

显示所有数据库

1
createtable xxx

在bash下创建数据库

1
dropdb xxx

在bash下删除数据库

MySQL

https://wiki.archlinux.org/title/MySQL_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

一般就是mariadb,甲骨文的版本可以在AUR找到

1
pacman -S mariadb

初始化

1
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

启动

1
sudo systemctl start mariadb

主要,一定要配置密码(为什么这帮造数据库的密码配置这么麻烦)

1
sudo mysql_secure_installation

登入

1
mysql -p -u root

聊天工具

icallinggua++

第三方QQ,在官版QQ出来之前一直在用

archlinuxcn收录

1
pacman -S icalingua++ 

官版QQ

2023年QQ得到了腾讯的原生支持(Electron大法好),Aur已收录

1
yay -S linuxqq

沙箱隔离方案:

1
yay -S linuxqq-nt-bwrap

Wine-qq

使用deepin-wine-tim(还停留在deepin-wine5)

KDE的话需要额外配置xsettingsd

To solve this problem, you need to install xsettingsd, and then set /usr/bin/xsettingsd to autostart, see Autostarting#On desktop environment startup.

This problem will be solved after re-login.

微信

微信的话就deepin-wine-wechat(已升级到deepin-wine6)

CrossOver也能直接使用微信,微信支持的反倒比qq要好

腾讯会议

2022年5月后yay有腾讯会议的包,支持聊天界面,基本能用,还不支持视频本地录制

wine版的腾讯会议目前是用不了的

Andriod虚拟机

目前linux平台上,除了谷歌虚拟机,其他虚拟机都不能很好的运行ARM架构的程序,我Anbox没有运行起来,但Waydroid运行起来,而且看起来还不错

Waydroid

如果不愿意编译内核,那就只能用anbox-modules-dkms的组件,然后用DKMS加入到内核

1
yay -S anbox-modules-dkms-git

剩下的看ArchWiki即可

二维码生成

1
sudo pacman -S qrencode

OpenVPN

总是会遇到绕过校园网,连接hack the box这样的问题,这时候就需要这样的东西

1
sudo pacman -S openvpn NetworkManager-openvpn

image.png

安装完以后,可以直接在设置页面使用

如果给的是ovpn文件,则需要手动导入

1
sudo nmcli connection import type openvpn file ***.ovpn

导入生成的文件会放在

1
/etc/NetworkManager/system-connections

参考

在命令行使用 NetworkManager 配置使用 OpenVPN

如果只是连接但不代理的话,参照网上连接Hack the box的教程

1
sudo openvpn starting_point_Mocus\ \(1\).ovpn

这很nice,不给狗比宿舍网交钱

1
nmcli connection modify eno1 ipv6.method "disabled" 

vivaldi开启Doh

需要从Chrome的设置里面进入,vivaldi单独包装的设置没有用

chrome://settings/security

Oh My Zsh更新失败解决

csdn的git镜像时常发生证书过期问题,这实在忍不了,查找原因发现是镜像站迁移了,需要手动修改远程仓库

1
2
cd $zsh
git remote set-url origin 'https://gitcode.net/mirrors/ohmyzsh/ohmyzsh.git'

中文字体配置

官方Wiki

Arch Linux中文乱码解决

1
sudo pacman -S ttf-jetbrains-mono   

比较喜欢jetbrain的字体,编程比较舒服

思源黑体作为系统的默认字体,但是无论哪种字体,Arch下面缩小都不好看

fc-match 查看当前默认字体

fc-list : file 输出所有字体位置

参考这一篇进行字体修改(记得备份fonts.conf)

archlinux 下修改系统默认字体

上课要求的Time NewRoman

1
yay -S ttf-times-new-roman

emoji

1
sudo pacman -S noto-fonts-emoji

科学计算

有些Python需要C包的需要的到系统支持

1
2
pacman -S python-opencv
pacman -S python-numpy

如果发现包全在外边(外挂硬盘映射到本地就会出现这种情况),用下面这个指令

1
python -m pip install

miniconda

大的anaconda在archlinuxcn的更新不及时,所以选了miniconda

1
pacman -S miniconda

上来就遇到conda启动不了的事情属实气人

给当前zsh添加变量miniconda环境变量

1
2
vim  ~/.zshrc 
source /opt/miniconda3/etc/profile.d/conda.sh

虚拟环境记得要调整地方,不然Pycharm会卡权限

参考北外源的操作

https://mirrors.bfsu.edu.cn/help/anaconda/

软件开发

Python

在AUR下载旧版本的Python,Pacman的Python默认是最新版本

Python (简体中文)

Python (简体中文)/Virtual environment (简体中文)

根据路径找到解释器就能创建Python3.6的virualenv

还需要手动安装pip,windows转过来还真不习惯

1
sudo pacman -S python-pip

Nodejs

NodeJS的版本更新和新特性太多了,必须装nvm控制版本

1
2
yay -S nvm 
echo 'source /usr/share/nvm/init-nvm.sh' >> ~/.zshrc

默认用LTS版

1
nvm install --lts

换cnpm

1
npm install -g cnpm --registry=https://registry.npmmirror.com

解决在nvm下面vscode找不到node的情况

一个治标不治本的方案:

macbook:vscode 插件Code Runner报错:/bin/sh: node: command not found

后面找到了问题根源,Vscode Code Runner 默认是从/usr/bin/node里去找node,用了nvm铁定找不到,必须创建链接

1
sudo ln -s /home/mocus/.nvm/versions/node/v16.15.1/bin/node /usr/bin/node

这样的话,nvm切换环境的时候记得要换掉

Andriod Studio

archlinuxcn源配了这个

1
sudo pacman -S android-studio

配置kvm硬件加速

Gradle有时候会把socks代理变成http,这时候就要这么解决

新建项目下Gradle sync报错Plugin was not found in any of the following sources

Go

1
sudo pacman -S go

配置国内代理

1
go env -w GOPROXY=https://goproxy.cn,direct

Git

一般需要配置代理,不然Github会非常慢

一般是存成bash命令,随时可以切换

开启:

1
git config --global http.https://github.com.proxy socks5://127.0.0.1:20171

关闭:

1
2
git config --global --unset http.proxy 
git config --global --unset https.proxy

Java

Tomcat

1
sudo pacman -S tomcat9

记得添加用户组权限(用户名和服务记得替换)

1
gpasswd -a mocus tomcat9

配置IDEA的Tomcat Home时填入:

1
/usr/share/tomcat9

开启:

1
systemctl start tomcat9

注意,使用IDEA开发的时候,不需要启动,环境配置好直接启动即可

PHP

这里选了php74,只能在aur里面找到,从源码层面编译,安装速度很慢

1
yay -S php74 php74-cli php74-fpm

也可以直接从官方仓库拉取,但默认只提供当前最新版本

1
sudo pacman -S php php-fpm

如果不想要安装Nginx,Apache,可以用PHP自带的服务器临时顶替

启动当前目录下的服务

1
php -S 0.0.0.0:8888 -t .

Windows兼容层

能不用就不用,因为这会显得你很蠢,但事实就是国产电脑软件还是Windows多

秉持实用性原则,还是准备了这一章的内容,如果运行不畅,那还是老实上虚拟机比较好

wine

wine是wine is not emulator的递归缩写

在~/.wine文件夹,会有一个名为drive_c的文件夹。该文件夹里面有三个熟悉的子文件夹:

•Program Files

•users

•windows.

proton

Valve开发的用来打游戏的,有人用这个开发出了能运行其他软件的插件

使用ptrotrencaller运行你想要的任意软件

https://github.com/caverym/Proton-Caller/

CrossOver

解决CrossOver中文乱码问题

买了司马的79元CrossOver 21(后来看V2EX说官网经常有低价车,准备有机会上)

奇技淫巧

在Linux系统中设置CrossOver无限试用15天的办法

crossover的时间验证信息写在每一个winebottle容器中,相互是完全隔离(不是写在全局配置中)。即使一个容器过期了,依然可以创建新的容器,并重新计算试用期,所以不需要重装软件本身。

即使重装程序,已经过期的容器依旧不能用,不过可以删除该容器,或者删除容器下的.eval文件

需要把multilib的注释去掉(qq那些程序还运行在32位)

相关资源

https://haxsoft.com/crossover-mac-linux-crack-2021/#CrossOver_2110_MacLinux_Crack_Key_Free_Download

密码1234

https://spsoftwares.com/crossover-key/

密码123

https://miraclecrack.com/crossover-mac-crack/

密码1234

官方FAQ

Linux Knowledge Base | Knowledge Base | CodeWeavers

CrossOver 如何运行单个 Windows.exe 文件

网络安全软件安装

内网渗透

Metasploit

BlackArch源提供了metasploit的包

1
2
sudo pacman -S metasploit
sudo msfconsole

nmap

好用的端口扫描,安装了nmap也顺带安装了ncat

1
sudo pacman -S nmap

Netdiscover

内网服务扫描

1
sudo pacman -S netdiscover

使用指令

1
sudo netdiscover -i wlp4s0 -r 10.101.153.0/24

fscan

blackarch源

支持主机存活探测、端口扫描、常见服务的爆破、ms17010、redis批量写公钥、计划任务反弹shell、读取win网卡信息、web指纹识别、web漏洞扫描、netbios探测、域控识别等功能

1
pacman -S fscan

evil-winrm

用于登陆winRM的,blackarch版本的死活用不了,只能求助aur

1
yay -S ruby-evil-winrm

responder

用来接获NTLM hash的工具,做HTB的时候用到了

1
pacman -S responder

linux-exploit-suggester

Linux提权工具箱,在BlackArch源

1
pacman -S linux-exploit-suggester

Misc+forensic

kali有的Arch绝大部分都会有

foremost和binwalk

1
2
sudo pacman -S foremost
sudo pacman -S binwalk

volatility3

community包里就有这个

1
sudo pacman -S volatility3

使用的时候输入vol

1
2
3
4
5
6
7
➜  ~ vol        
Volatility 3 Framework 2.0.1
usage: volatility [-h] [-c CONFIG] [--parallelism [{processes,threads,off}]] [-e EXTEND] [-p PLUGIN_DIRS] [-s SYMBOL_DIRS] [-v] [-l LOG]
[-o OUTPUT_DIR] [-q] [-r RENDERER] [-f FILE] [--write-config] [--clear-cache] [--cache-path CACHE_PATH] [--offline]
[--single-location SINGLE_LOCATION] [--stackers [STACKERS ...]] [--single-swap-locations [SINGLE_SWAP_LOCATIONS ...]]
plugin ...
volatility: error: Please select a plugin to run

请注意,想要使用还需要自行去Github找对应系统的symbols,解压到特定目录才能使用!!!

16进制编辑器

1
sudo pacman -S okteta

感觉不如010editor,但也没办法就是了

吾爱上面有010editor的破解,但那个缩放DPI真的要眼瞎

crunch

快速生成爆破字典

1
sudo pacman -S crunch

使用教程:

crunch(kali密码生成工具)—-介绍与使用

crunch详细指南

john

密码爆破工具

Kali中John的使用方法

使用zip2john爆破zip

有一个GUI版本名称叫做johnny,停留在QT4的版本

1
sudo pacman -S johnny

常见用法

–single single crack模式,使用配置文件中的规则进行破解
–wordlist=FILE–stdin 字典模式,从 FILE或标准输入中读取词汇
–rules 打开字典模式的词汇表切分规则
–incremental[=MODE] 使用增量模式
–external=MODE 打开外部模式或单词过滤,使用 [List.External:MODE]节中定义的外部函数
–stdout[=LENGTH] 不进行破解,仅仅把生成的、要测试是否为口令的词汇输出到标准输出上
–restore[=NAME] 恢复被中断的破解过程,从指定文件或默认为 $JOHN/john.rec的文件中读取破解过程的状态信息
–session=NAME 将新的破解会话命名为 NAME,该选项用于会话中断恢复和同时运行多个破解实例的情况
–status[=NAME] 显示会话状态
–make-charset=FILE 生成一个字符集文件,覆盖 FILE文件,用于增量模式
–show 显示已破解口令
–test 进行基准测试
–users=[-]LOGIN UID[,…]
–groups=[-]GID[,…] 对指定用户组的账户进行破解,减号表示反向操作,说明对列出组之外的账户进行破解。
–shells=[-]SHELL[,…] 对使用指定 shell的账户进行操作,减号表示反向操作
–salts=[-]COUNT 至少对 COUNT口令加载加盐,减号表示反向操作
–format=NAME 指定密文格式名称,为 DES/BSDI/MD5/BF/AFS/LM之一
–save-memory=LEVEL 设置内存节省模式,当内存不多时选用这个选项。 LEVEL取值在 1~3之间

hashcat

md5离线爆破,没有意义,但还是要装

1
sudo pacman -S hashcat 

爆破md5的指令:

1
hashcat –m 0 2-key.txt 

建议是要配上字典使用

rarcrack

使用教程

https://zhuanlan.zhihu.com/p/433192259

hashseep

文件完整性校验,出md5和sha256

1
sudo pacman -S hashdeep

wireshark

抓包必备

1
sudo pacman -S wireshark-qt

参照wiki添加到用户组即可使用

https://wiki.archlinux.org/title/Wireshark_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

tshark是wireshark的命令行形式,会跟随wireshark一起被安装

stegdetect

1
sudo pacman -S stegdetect

Neils Provos的开发通过统计分析技术评估JPEG文件的DCT频率系数的隐写工具Stegdetect,它可以检测到通过JSteg、JPHide、OutGuess、Invisible Secrets、F5、appendX和Camouflage等这些隐写工具隐藏的信息,并且还具有基于字典暴力破解密码方法提取通过Jphide、outguess和jsteg-shell方式嵌入的隐藏信息

我没怎么用过,做隐写时看到就装上了

图片隐写——stegdetect

zip修复

缺一个头部或尾部的情况下会自动修复

1
zip -FF 2.zip --out 22.zip

每到这个时候,就会怀念万能的WinRAR

Web安全

Burpsuite和Sqlmap

Burpsuite社区版对我这种菜鸡来说够用了(能装插件就行)

1
2
sudo pacman -S burpsuite
sudo pacman -S sqlmap

whatweb

网络指纹识别

1
sudo pacman -S whatweb

长亭xray

证书安装无法按照官方的做法

将 /usr/local/share/ca-certificates/*.crt 改为 /etc/ca-certificates/trust-source/anchors/

运行 trust extract-compat 后完成认证

POCsuite

知道创宇POCsuite3,已录入AUR仓库

1
yay -S pocsuite3

MitmProxy

1
sudo pacman -S mitmproxy

可以轻松定制中间攻击脚本

教程:

mitmproxy教程

逆向

jadx

安卓解包

1
sudo pacman -S jadx

jd-gui

安卓class文件反汇编

1
sudo pacman -S jd-gui

drozer

一款面向 Android 的综合安全评估和攻击框架,BlackArch提供

1
sudo pacman -S drozer

Detect it easy(DIE)

Github开源的,先用appimage顶上

查明软件有无加壳

字典

rockyou

rockyou字典,很多靶场都能跑出来

1
yay -S rockyou

seclist

必备经典字典,用过kali的基本都不错过这个

需要BlackArch源

1
pacman -S seclists

硬件相关

触摸板手势

最后并没有用上

https://ericclose.github.io/libinput-gestures-on-Arch-Linux-with-KDE.html

关掉关机beep

Arch下永久去掉响铃—Beep(通过添加内核模块配置文件的方法)

Kernel module (简体中文)

英伟达开源驱动安装

截止到2022年7月,还停留在a测,但是可以通过pacman直接安装,这点上很大程度上比debian列方便

https://archlinux.org/packages/testing/x86_64/nvidia-open/

For the Turing (NV160/TUXXX) series or newer the nvidia-open package may be installed for open source kernel modules on the linux kernel (On other kernels nvidia-open-dkms must be used).

https://blogs.gnome.org/uraeus/2022/05/11/why-is-the-open-source-driver-release-from-nvidia-so-important-for-linux/

装完以后还需要一个nvidia-settings验证到底有没有驱动成功

1
sudo pacman -S nvidia-settings

感觉这个耗电量应该是没法控制了

查询默认使用的显卡:

1
glxinfo | grep "OpenGL renderer"

来张图证明能用(没想到最早用上的竟然是Wine版微信)

image.png

相关新闻:

https://www.linuxmi.com/linux-nvidia-open-sources-gpu-driver.html

查看显卡信息

1
2
lspci -k | grep -A 2 -E "(VGA|3D)"
lspci | grep -i vga

nvdia显卡工作情况

1
nvidia-smi

一些好玩的东西

Linux中那些没用但好玩的命令

cmatrix

应该很多地方介绍过了,黑客帝国的效果

1
sudo pacman -S cmatrix

figlet

将文字变为控制台符号

1
sudo pacman -S cmatrix

已知问题

睡眠后唤醒失败

Linux知识补充

关于内核头的知识

https://www.cnblogs.com/dyllove98/archive/2013/07/20/3202824.html

https://www.zhihu.com/question/21319166

概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译内核,相应的问题往往与内核头文件有关。那么,什么是内核头文件,为什么需要更新内核头文件?

简单说,就好像“你买手机充电线要先看看自己的手机充电口是micro-usb、usb-c还是别的什么,买错了就没法用”一样,无论我们写的程序要调用内核提供的什么功能、还是我们本身要开发内核模块,首先就得保证我们写的程序能够和内核的数据结构以及函数接口匹配,对吧?

kernel headers就是Linux内核的接口规格书

分区知识

主要遵照Linux FHS(Filesystem Hierarchy Standard)。如果是NixOS的话有另外一套方案。

分区名称 作用
/ 根分区目录,其他所有分区目录都位于其下。
/boot/ 存放系统启动时所需的各种文件。
/root/ 系统管理员 root 用户的主目录。
/home/ 普通用户的主目录。
/etc/ 配置文件的目录。平常通过系统包管理命令安装的各种软件,它们的配置文件默认都在此目录下。
/bin/ 系统核心命令的存放目录。
/usr/ 系统默认软件的安装目录和共享资源目录。通过系统包管理命令安装的软件,大多都位于这里。
/opt/ 用户软件的安装目录。
/var/ 存放软件运行时生成的一些文件,比如日志,运行中的进程 ID 文件等。
/tmp/ 系统临时文件的目录。每次系统关机时,此目录中的所有文件都会清除。
Swap 这不是目录,是一个特殊的 Linux 分区,通过文件系统的方式模拟物理内存,以应对物理内存使用时的不足。

可以单独新建一个分区,并挂载到 /home 目录。如果可以的话,添加一个新的硬盘专门挂载到 /home 也没问题

Linux苦难哲学

有关

王垠(作品《完全用 Linux 工作》的作者)

Linux 与苦难哲学(FreeBSD的人写的)

GNU Linux-Libre 内核 5.16 已经发布

Linux 败局已定——驳 FreeBSD 大败局 (还是FreeBSD的人写的)