Arch Linux迁移计划
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图形界面会使人变得不幸。而我只是个恰好走过这一段路的人(幸运人?发烧客?)
过往退坑经历回顾:
联想拯救者R7000 2020版 Manjaro/Arch 安装N卡驱动
如果对Linux操作系统不熟悉的话,可以先看看工具怎么用
Linux选型
请注意,Linux选型问题历来都属于行业内的饭圈问题,本部分只讲述个人选型经历,没选上不代表系统不优秀,不代表专业意见,请勿采一捧一!!!
我个人对Linux的需求是:能使用安全行业常用的安全套件,能运行Office,QQ等常见聊天办公工具,支持Nvidia原生驱动(优先选择2022年4月Nvidia的开源驱动)为科学计算做支撑,最好有LTS版,能在网上搜到该系统下常见的问题解决方案。
Arch
不提供LTS版本,但是想要的绝大部分软件都能通过Pacman+AUR的组合找到。系统滚挂的问题没有大家想的那么突出,如果是个人使用的话不会有太大问题,而且网上踩坑的人很多。Arch的Wiki应该是我见过本地化做的最好的,内容详细,具备可操作性。
安装麻烦,可以玩玩(但没想过,最后真的装了这个)
Steam Deck的系统也是基于Arch Linux的,可以期待未来的游戏性能
详细安装教程可以看后面章节
在Windows下Vmware试着安装了Arch,下面是相关记录
虚拟机内使用Arch的配置
1 | sudo bash |
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://archlinuxstudio.github.io/ArchLinuxTutorial/
Arch Linux安装+KDE桌面+双显卡驱动一站式解决方案
虚拟机配置
KVM
请不要在笔记本上随意配置KVM显卡直通
因为你永远也不会清楚笔电的BIOS到底能不能处理好英伟达显卡的电源管理
Arch下的KVM win10客户机与宿主机使用samba共享文件的步骤
我选择的的是这个配置
1 | sudo pacman -S qemu libvirt ovmf virt-manager bridge-utils dnsmasq |
bridge-utils 负责网络桥接
kvm底层需要 qemo和libvirt
ovmf :解决UEFI启动问题
dnsmasq :负责处理网络相关
ebtables 网络配置管理 非必须
开启libvirt服务
1 | systemctl enable libvirtd |
加入用户组
1 | usermod -a -G kvm username |
kvm 有一个专门针对 windows 的 virtio 的驱动, 不知道你用了这个没, 如果以传统的 ide 方式添加的硬盘,io 性能会特别的慢。
每次启动前都要手动开网络
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
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
注意,有一步需要修改
系统安装与后续维护
安装教程
我本人是用archinstall脚本安装的(仅支持UEFI安装)
安装KDE
在 Arch Linux 中安装和配置 KDE Plasma 桌面
Manjaro KDE 调教配置及美化(2022.01.23)
双系统安装
网上教程很多,建议是在有线网络下安装
KDE安装
1 | pacman -S --needed xorg sddm |
关机慢
我这里的KDE不时会遇到SDDM关不下的情况,就会造成关机过慢的情况
vim /etc/systemd/system.conf
1 | DefaultTimeoutStopSec=10s |
校园网下面安装
配置U盘镜像
Ventoy 1.0.15启动不了Arch的安装盘,但2022年后的Ventoy都能启动
运行到tty3
切换,但是图形界面会挂在后台
1 | ctrl+alt+f3 |
只保留命令行,图形界面会彻底关闭,但是这种情况中文显示有问题(待填坑)
1 | systemctl isolate multi-user.target |
systemd-boot
当时没安装GRUB,只安装了这个,不知道怎么调整成双系统,后面也没去动了
KDE系统分区
后期可用这种办法吧/home目录分离出去
1 | sudo pacman -S filelight |
可以把新的硬盘挂载到/home的文件夹下面,新买硬盘的话,扩容起来十分方便
分区助手有个小bug,如果想要运行二进制文件,你必须先要勾选“不允许执行二进制文件”,保存完以后再取消勾选才能生效
根源解决方案是:fstab后面给盘符添加exec
参考这篇文章:
没有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 |
解决蓝牙耳机麦克风没法用的问题
需要修改配置方案才能使用,只有在这种模式下,才没有杂音
听音乐的时候记得改回去,不然音效贼渣
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 | 错误:无法提交处理 (有冲突的文件) |
目前唯一的解决方案,就是挨个删除以上文件
麻了,确实找不到其他方法了
输入法
ctrl + . 全角与半角切换
Aur软件包回滚
社区经常有人在那边瞎折腾,没经过验证就把包送到了社区(当然还是要感谢他们的努力,不然Arch的社区就不可能这么活跃,也没有那么多好用的包),也有直接删包跑路的人。Aur的包都是用Git管理配置文件的,要回滚其实也很简单
找到yay缓存的地方(一般是.cache/yay)进入对应的软件,回滚Git记录,然后参考Arch_wiki Arch User Repository 安装即可
1 | makepkg |
命令行浏览器
图一乐,毕竟现在都在用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 | sudo pacman -S usbutils |
配合dmesg(display message)检查到底有没有启动成功
1 | sudo dmesg |grep -i usb |
选择格式,挂载对应U盘
1 | mount -t vfat /dev/sdb1 /mnt/usb |
1 | ip link set dev wlp3s0 up // 用来将无线网卡接口启用 |
救砖
希望没机会用上,但还是要准备上以防万一
1 | mount /dev/nvme0n1p2 /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 | sudo rm -R /var/lib/pacman/sync |
软件升级/降级问题
如果遇到软件滚挂的情况(我刚安装第二天,Telegram就滚挂了)安装downgrade
downgrade完那个被降级的包就会被添加IgnorePKG里面
问题不对,立马降级
1 | pancman -S downgrade |
软件不升级
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 |
参考:
无效或已损坏的软件包
1.首先更新一下密钥,如果没有安装archlinux-keyring,请及时安装
1 | sudo pacman-key --refresh-keys |
2.重新加载相应的签名密钥
1 | sudo pacman-key --init |
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的要好很多
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源默认配备,无需代理即可下载
- 安装完毕后 v2rayA 默认不会设置开机自动启动,需要手动启动相关服务,参考命令
systemctl enable --now v2raya.service
。点击V2ray快捷方式无法启动V2ray #234
conky
资源显示
https://wiki.archlinux.org/title/Conky_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
貌似不支持wayland,只能放弃
Terminal 美化
音频转码
当然是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里面提到了补丁解决方案,实测有效
2023年1月更新
相关Issue已经在2022年10月关闭,看样子英伟达不准备处理这个问题
要注意的是,编码器只能选择H.264而不能是HEVC(至于为什么是这样,我也不知道)
腾讯会议
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 | docker pull secfa/docker-awvs |
修改镜像源
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 |
安装完以后,可以直接在设置页面使用
如果给的是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 | cd $zsh |
中文字体配置
1 | sudo pacman -S ttf-jetbrains-mono |
比较喜欢jetbrain的字体,编程比较舒服
思源黑体作为系统的默认字体,但是无论哪种字体,Arch下面缩小都不好看
fc-match 查看当前默认字体
fc-list : file 输出所有字体位置
参考这一篇进行字体修改(记得备份fonts.conf)
上课要求的Time NewRoman
1 | yay -S ttf-times-new-roman |
emoji
1 | sudo pacman -S noto-fonts-emoji |
科学计算
有些Python需要C包的需要的到系统支持
1 | pacman -S python-opencv |
如果发现包全在外边(外挂硬盘映射到本地就会出现这种情况),用下面这个指令
1 | python -m pip install |
miniconda
大的anaconda在archlinuxcn的更新不及时,所以选了miniconda
1 | pacman -S miniconda |
上来就遇到conda启动不了的事情属实气人
给当前zsh添加变量miniconda环境变量
1 | vim ~/.zshrc |
虚拟环境记得要调整地方,不然Pycharm会卡权限
参考北外源的操作
https://mirrors.bfsu.edu.cn/help/anaconda/
软件开发
Python
在AUR下载旧版本的Python,Pacman的Python默认是最新版本
Python (简体中文)/Virtual environment (简体中文)
根据路径找到解释器就能创建Python3.6的virualenv
还需要手动安装pip,windows转过来还真不习惯
1 | sudo pacman -S python-pip |
Nodejs
NodeJS的版本更新和新特性太多了,必须装nvm控制版本
1 | yay -S nvm |
默认用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 |
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 | git config --global --unset http.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
买了司马的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 | sudo pacman -S metasploit |
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 | sudo pacman -S foremost |
volatility3
community包里就有这个
1 | sudo pacman -S volatility3 |
使用的时候输入vol
1 | ➜ ~ vol |
请注意,想要使用还需要自行去Github找对应系统的symbols,解压到特定目录才能使用!!!
16进制编辑器
1 | sudo pacman -S okteta |
感觉不如010editor,但也没办法就是了
吾爱上面有010editor的破解,但那个缩放DPI真的要眼瞎
crunch
快速生成爆破字典
1 | sudo pacman -S crunch |
使用教程:
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方式嵌入的隐藏信息
我没怎么用过,做隐写时看到就装上了
zip修复
缺一个头部或尾部的情况下会自动修复
1 | zip -FF 2.zip --out 22.zip |
每到这个时候,就会怀念万能的WinRAR
Web安全
Burpsuite和Sqlmap
Burpsuite社区版对我这种菜鸡来说够用了(能装插件就行)
1 | sudo pacman -S burpsuite |
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 |
可以轻松定制中间攻击脚本
教程:
逆向
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(通过添加内核模块配置文件的方法)
英伟达开源驱动安装
截止到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).
装完以后还需要一个nvidia-settings验证到底有没有驱动成功
1 | sudo pacman -S nvidia-settings |
感觉这个耗电量应该是没法控制了
查询默认使用的显卡:
1 | glxinfo | grep "OpenGL renderer" |
来张图证明能用(没想到最早用上的竟然是Wine版微信)
相关新闻:
https://www.linuxmi.com/linux-nvidia-open-sources-gpu-driver.html
查看显卡信息
1 | lspci -k | grep -A 2 -E "(VGA|3D)" |
nvdia显卡工作情况
1 | nvidia-smi |
一些好玩的东西
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的人写的)
Linux 败局已定——驳 FreeBSD 大败局 (还是FreeBSD的人写的)