从2019年到2022年,manjaro发行版渡过了我的整个博士生涯。最近毕业重新装了系统,依然选择了最新的manjaro KDE Plasma 21.2.4(本来装了arch,大小问题不断被劝退了😜)。基本上这台linux主机要跟着我进入人生下一阶段,作为主力台式机也不打算再折腾了。安装过程中有一些新的学习体会(坑),在这里更新记录一下,希望能帮到有需要的朋友~

三年manjaro使用感悟

总体而言,作为一个linux系统小白,我对manjaro还是相当满意的,基本上,manjaro能满足我日常工作、娱乐的需要。manjaro系统安装显卡驱动和切换内核确实简单,只需在系统设置里改变即可,此外,arch文档翔实、aur软件丰富,大部分问题和需求都能找到对应的解决方案。linux下的开发、科研等涉及编程的工作确实要比windows下爽很多,一行命令搞定一堆安装包,然后用就完了,计算速度上似乎还比window下快一点(也许是心理作用?😁)。游戏方面steam上兼容linux的游戏还是挺多的,我常玩的饥荒、博德之门3等游戏都还能运行,偶尔有问题的话去protonDB上查一查还是能找到解决方案的,Valve不愧是要搞Steam Deck,估计这方面的兼容性支持会更好。

manjaro的缺点也是大多数linux系统的通病。为了满足正常使用,用户要做一些文本方面的配置,因此至少需要知道一些命令行的基础知识,这一点上远不如windows点点点直观,而且经常会出现一些奇奇怪怪的小问题,很影响使用体验。此外,linux系统的驱动相对windows依然是个大问题,驱动(尤其是显卡)出问题小白用户就直接GAME OVER了。最后,尽管9成需求我都能在manjaro下解决,仍有1成的需求由于各种原因必须要使用windows,我通常都是挂个windows虚拟机以备不时之需。

综上所述,我感觉manjaro系统适合满足以下条件的小白群体使用:

  • 至少有1台独立的windows笔记本
  • 不惧怕查阅资料,能科学上网
  • 有一段完整的折腾时间
  • 没有大型3A游戏或windows专用软件需求
  • 安装manjaro的硬件不是最新

不满足第一条的朋友还是老老实实用windows,在虚拟机里尝尝鲜得了😜,至于mac用户,俺们不跟土豪做朋友😢

系统选择与安装

manjaro提供了XFCEKDEGNOME三个桌面的环境的安装iso,我个人偏向于KDE,用着舒服,看着也不赖,倒是没必要再去捣鼓桌面美化啥的。这里建议下载Minimal LTS(长期支持版内核)安装镜像,以最大限度的避免硬件驱动等各种乱七八糟的问题。我选用的5.4版内核会一直支持到2025年12月,虽然听说kernel版本越高,硬件支持越好,但我实际装的时候最新版本各种诡异驱动问题(咱也不懂,就很玄学),所以还是从LTS出发,先达成一个基本可用的环境,再慢慢升级比较靠谱。

最好进BIOS把内存频率调低,比如2400MHz或2666MHz,我的内存一开始是3000MHz,很容易卡在进图形界面的步骤,查资料好像是啥显卡驱动没有加载上,需要Early Loading,但是我没有成功过,后来发现把内存频率调低就可以了,就很玄学

下载ISO文件后,用空余的U盘制作启动盘,插上U盘,进BIOS里关掉安全启动(Secure Boot)选项,把U盘的启动顺序调到前面,保存退出后就能进入manjaro的启动界面环境。

这里设置一下时区为Asia/Shanghai,选择以开源驱动boot,其它的选项都不用改,反正后期都能调整,核心目的是进入live环境。

进去之后会弹出欢迎界面,选择中文语言,一路点击下一步直到分区步骤(这里有时候会卡一会,可能是在联网检测啥东西)。

分区界面根据实际硬件的不同会有各种选项,抹除磁盘是自动分区安装的意思,适合不太清楚什么是分区的朋友,一路点点点就行。如果硬盘上还装了windows,manjaro还会有双引导的安装选项,可以说挺简单智能的了,桌面上的Installation Guide会有这些选项的详细介绍。由于manjaro会将所有可用空间全部归到root分区,我想单独划个home分区出来,所以选择了手动方法。这里我分了一个500MB的efi分区,2GB的swap分区(感觉用不上),64GB的root分区,剩下的都划到home分区了。划好分区后点击下一步,设置一些用户名、密码啥的,就可以进入安装过程,安装结束后重启、拔U盘,一切顺利的话就进入manjaro系统了~

基础设置

设置manjaro更新镜像源

由于众所周知的原因,不更改镜像源和设置科学上网,大部分的开发工具在国内基本没法用。所以进系统的第一步是更改manjaro的系统更新镜像源,选择所在地区的镜像。

sudo pacman-mirrors -c China -m rank && sudo pacman -Syyu

该命令选择China地区的镜像源,并对系统做一次更新,因此可能需要等待一会,更新完最好直接重启。

安装Nvidia显卡驱动

重启过后,可以选择安装显卡驱动了。在系统设置-硬件设定里选择闭源驱动。我的显卡是GTX1080,好几年前的老卡了,video-nvidia-470xx驱动比较靠谱,如果想用最新的驱动,选择video-nvidia驱动就可以。

右键安装,输入管理员密码,安装完毕后重新启动,如果一切顺利进入桌面就表明没问题啦!!!

科学上网

国内软件安装的大部分问题都是因为众所周知的原因,并且优秀开发和参考资料多为英文,因此科学上网属于一切学术研究和开发工作的必要条件,将科学上网作为终身学习的课题,花时间研究是值得的。

我采用的是proxychains结合v2ray的方式,不再使用之前的shadowsocks:

sudo pacman -S proxychains-ng v2ray

proxychains的配置文件为/etc/proxychains.conf,用kate打开该文件,修改最后一行:

socks5 127.0.0.1 1080

v2ray的配置文件在/etc/v2ray目录下,这一部分有很多的学习资料了,我写了一个脚本自动获取生成配置文件config1.json,启动部分我采用手动挡输入命令,以后有空再研究自动挡的方式:

v2ray -c /etc/v2ray/config1.json 

科学上网的基本设置就结束了,浏览器可以在网络设置中选择socks5代理,转发本地1080端口;想要代理命令行程序,可以采用proxychains+命令的方式,比如:

proxychains -q wget www.google.com

安装yay

安装yay

yay可以当作pacman使用,也是用来安装AUR里软件包的工具,尽管manjaro自带的软件包管理器Pamac可以开启aur选项,以图形化界面的形式安装软件,但是Pamac似乎有许多bug,所以还是使用yay这一更常用的命令行工具。

manjaro下yay的安装非常简单,甚至不需要自己去编译:

sudo pacman -S yay

proxychains+yay

至此yay已经可以正常使用了,不过AUR里的软件包经常需要下载github等外网代码、文件,由于众所周知的原因,速度会慢的跟龟爬一样,所以最好还是搭配proxychains等工具使用。默认的yay采用go编译,这一版本同proxychains等代理工具有冲突,解决方案是用gcc-go重新编译,但是目前的v11.1.2版本的yay编译过不去,我没有能力解决问题,只能选择v11.1.1的yay。

yay -S base-devel gcc-go
mkdir build && cd build && git clone https://aur.archlinux.org/yay.git
cd yay
proxychains -q wget https://github.com/Jguer/yay/archive/v11.1.1.tar.gz

然后用kate修改PKGBUILD里如下部分:


pkgname=yay
pkgver=11.1.1 # 修改版本为11.1.1

...

makedepends=('gcc-go>=1.16') # 修改为gcc-go>=1.16
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/Jguer/yay/archive/v${pkgver}.tar.gz")
sha256sums=('31ed6d828574601e77b8df90c6e734a230ea60531b704934038d52fe213c0898') # 修改sha256的值

...

由于yay会下载一些go的依赖,所以也要设置go的代理(众所周知😥),最后yay的目录下直接编译安装,此时的yay就可以跟proxychains完美配合啦,接下来我基本都使用yay安装manjaro官方和AUR的软件~

export GO111MODULE=on
export GOPROXY=https://goproxy.cn
makepkg -sic

忽略yay的更新

由于目前11.1.2版本的yay是manjaro默认的版本,更新系统时会自动替换老版本11.1.1,如果不想更新yay,可以在/etc/pacman.conf中忽略yay的更新,添加如下内容:

IgnorePkg = yay

中文字体和中文输入法

开源中文字体

国内习惯了用windows自带的中文字体,比如楷体、宋体等,而这些在linux上因为版权问题发行版不会默认自带,需要我们自己“安装”使用(毕竟已经买了windows的笔记本了,用就完了哈哈哈)。当然有些字体是免费开源的:

yay -S wqy-microhei wqy-microhei-lite wqy-zenhei noto-fonts-cjk adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts

中文输入法

中文输入法采用fcitx5,输入以下命令安装:

yay -S fcitx5 fcitx5-configtool fcitx5-chinese-addons fcitx5-qt fcitx5-gtk fcitx5-lua

安装完毕后用kate打开/etc/environment文件,在其中输入如下变量,然后注销再重新登陆,就可以使用中文输入法了:

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
INPUT_METHOD=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

默认拼音和英文的切换快捷键是ctrl+shift,不喜欢的话可以在系统设置-区域设置-输入法里进行调整,更多的相关设置也可以参考arch的中文输入法

win10字体安装

想要安装win10的字体(十分有必要),AUR提供了ttf-ms-win10的安装包,不过不提供字体文件,需要自己从已有的win10系统(拷贝所有C:\Windows\Fonts下的字体文件)或从win10镜像中抽取字体文件,这里介绍如何抽取字体,首先从AUR拷贝tff-ms-win10:

mkdir -p build && cd build
git clone https://aur.archlinux.org/ttf-ms-win10.git

然后挂载win10安装镜像,manjaro下只需要右键选择挂载ISO,Dolphin的左边即可出现ISO的访问文件路径,找出source文件夹下的install.esd或install.wim文件,把该文件拷贝到ttf-ms-win10文件夹下,执行如下命令解锁所有字体文件:

wimextract install.esd 1 /Windows/{Fonts/"*".{ttf,ttc},System32/Licenses/neutral/"*"/"*"/license.rtf} --dest-dir .

然后修改PKGBUILD如下,添加的字体文件表示仿宋、黑体和楷体:

_ttf_ms_win10_zh_cn=(
simsun.ttc
simfang.ttf simhei.ttf simkai.ttf # 增加这行内容
simsunb.ttf
msyh.ttc
msyhbd.ttc
msyhl.ttc

最后在ttf-ms-win10目录下执行安装命令,注意如果报错,大概率是当前抽取的字体文件中没有该字体,可以按照错误提示从网上下载ttf文件加入其中,或者在PKGBUILD里删掉该字体,毕竟只有中文字体比较重要:

makepkg -sic --skipchecksums

安装完成后可以在系统设置-外观-字体管理中检查字体安装是否正确。

Ryzen随机卡死问题

这个问题三年前就遇到了,当时系统会随机卡死无响应(切terminal什么都没用)。这个问题是Ryzen处理器的一个bug,不知道现在的Ryzen系列有没有解决这个问题(我是AMD Ryzen 5 1600,也是老处理器了),总之我重装系统后依然有这个问题。解决方案就是disable C6 state,最好重启后再执行如下命令:

yay -S disable-c6-systemd
sudo modprobe msr

编辑/etc/modules-load.d/modules.conf,添加msr这一行,以便在启动时加载msr模块:

msr

最后,启动如下service:

sudo systemctl enable disable-c6.service
sudo systemctl start disable-c6.service

过去三年里基本没有出现这种随机卡死的问题了,感恩大佬。

其他优化

SSD优化

sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

切换登陆终端

manjaro默认的zsh十分好用,不过非图形界面下的terminal还是bash,可以设为zsh:

cat /etc/shells
chsh -s /bin/zsh

切换内核版本

系统设置-内核中点点就好啦,会安装一大堆东西,装完重启一下。

我切回了5.4的内核,新换内核后原内核最好保留一段时间,避免系统挂掉,还可以在初始启动界面选择从哪个内核进入系统。

常用软件安装

miniconda+python

python作为我科研的主力编程语言,我选择用conda管理不同的python版本,首先安装miniconda,运行后一路回车或yes,最后会询问要不要把conda加入环境变量,这里可以选择no:

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
chmod +x Miniconda3-latest-Linux-x86_64.sh
./Miniconda3-latest-Linux-x86_64.sh

注意在terminal中还是没法直接使用conda的,因为不知道conda安装在哪,这里执行如下命令写入环境变量:

~/miniconda3/bin/conda init zsh

退出terminal再重开,就能使用conda啦~

manjaro原来的terminal使用的是bash,2022版konsole使用了zsh(自带颜色、命令记忆补全,超级赞😃),如果想在bash中使用conda,将上面的zsh换成bash即可完成初始化的操作。bash的相关设置在.bashrc里,zsh的相关设置在.zshrc里,两者是默认不互通的。

老规矩,由于众所周知的原因,需要更换conda的镜像源,这里用清华tuna的镜像:

conda config --set show_channel_urls yes

在.condarc文件里粘贴以下内容:

channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

另外pip的源最好也更改一下:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

wps office办公

linux上最好用的office软件套装,搭配前面的win10字体可以做很多文字工作,不用切换到windows,安装如下AUR软件包:

yay -S wps-office wps-office-mui-zh-cn ttf-wps-fonts

装完最好重启一下,目前我没遇到啥大问题,如果有问题的话可以看看arch的wiki

vscode编辑器

超好用的编辑器,建议安装微软的二进制版本,可以多搜到一些好用的扩展包:

yay -S visual-studio-code-bin

virtualbox虚拟机

如果要使用微信之类国产软件的话,用虚拟机装个windows就行了,还能跟主系统隔离开来,台式机也不太考虑性能问题,这里建议参考manjaro的wiki,注意自己的linux内核版本,比如我的是linux54,别的版本需要替换下面命令中的linux54。

sudo pacman -S virtualbox linux54-virtualbox-host-modules

安装完成后最好重启再完成后续工作。重启后需要安装扩展增强包,先看一下自己的virtualbox版本:

vboxmanage --version

比如我是6.1.32r149290,那我就需要安装对应版本的扩展包,使用yay搜索可用的扩展包:

yay virtualbox-ext-oracle

会弹出很多选项,要安装哪个输入序号回车。

最后需要将当前的用户加入vboxuser组,重启或注销就可以使用虚拟机啦~

sudo gpasswd -a $USER vboxusers

LaTex论文写作

即使作为科研垃圾,也不得不产出论文😟。科技论文写作里LaTex可比word好用多了(前提是有模板),manjaro安装LaTex也很简单,配合vscode的LaTex扩展写论文不要太爽。

yay -S texlive-most texlive-lang biber texlive-bibtexextra texlive-fontsextra 

安完之后去vscode扩展里装LaTex Workshop,就可以开始写作了。如果要写中文论文,可以在vscode的settings.json里输入如下内容(一般vscode敲完latex-workshop.latex.tools之后就会自动补全后面值,在最前面添加一个就好):

{
"latex-workshop.latex.tools": [
{
"name": "xelatexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-xelatex",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
}
],
"latex-workshop.latex.recipes": [
{
"name": "xelatexmk 🔃",
"tools": [
"xelatexmk"
]
}
],
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.latex.recipe.default": "lastUsed"
}

然后使用扩展菜单中的xelatexmk就可以编译中文内容啦~

OneDrive网盘

一直用onedrive习惯了,配合代理速度也还行,不太想用国内的其他网盘🤐。manjaro下使用这个项目的onedrive命令行来同步:

yay -S onedrive-abraunegg
onedrive

按照提示进行设置,设置完成后就可以使用了,因为我比较懒,没有研究自动同步功能,所以都是配合代理手动同步:

proxychains -q onedrive --synchronize

反正又不是不能用,有空再看看自动同步咋搞。

xmind思维导图

AUR仓库里自带xmind8,直接输入以下命令即可:

yay -S xmind

不过这一版本的xmind需要openjdk8的依赖才能运行,执行以下命令安装openjdk8:

yay -S jdk8-openjdk

然后用kate或code打开/usr/share/xmind/XMind/XMind.ini文件,在文件开头添加如下文本:

-vm
/usr/lib/jvm/java-8-openjdk/bin

保存退出,xmind就能正常运行啦!

hexo博客管理

我的博客部署在github pages上,采用hexo管理,首先需要安装nodejs,用AUR的nvm管理不同的node版本:

yay -S nvm
#使用nvm前需要运行这一句,可以将其写入.zshrc或.bashrc
source /usr/share/nvm/init-nvm.sh
nvm install node

然后安装npm及hexo:

yay -S npm
npm install hexo-cli -g
npm install hexo-deployer-git --save

hexo的使用方法可见参考文档

其他软件

qBittorrent

还没有把硬盘填满吗?快使用qBittorrent吧~

yay -S qbittorrent

yesplaymusic+spotify

yesplaymusic是网易云音乐的替代,超漂亮的云音乐播放器,没有乱七八糟的功能,颜值党狂喜,安装简单(需要proxychains,老实讲大部分从github下载文件的都需要):

proxychains -q yay -S yesplaymusic

除此之外也可以安装spotify,让我们一起聆听IU的美妙歌声😍。

proxychains -q yay -S spotify

大陆地区反正不挂代理能用,不能用再说,又没有交钱,要什么自行车~

PS:视频播放器直接用自带的VLC就好,功能强大,没啥不能播的。

文件名编码转换

windows默认GB2312,linux一般用UTF-8,从windows拷贝过来的中文文件名有时候是乱码,可以用convmv转化一下:

yay -S convmv
# 测试转换是否成功,不实际执行转换
convmv -f GBK -t UTF-8 -r your_folder_or_file
# 执行实际转换
convmv -f GBK -t UTF-8 -r --notest your_folder_or_file

ufw防火墙服务

manjaro默认不带ufw防火墙,虽然我听说可以用iptables添加规则,但目前不懂怎么设置,先装了gufw:

yay -S ufw gufw
sudo systemctl enable ufw.service
sudo systemctl start ufw.service

开始菜单里就会出现防火墙配置的程序,先使用默认的就好,以后再研究

远程桌面

如果有远程桌面的需求,比如连接windows笔记本、树莓派之类的,可以使用Remmina:

yay -S remmina freerdp libvncserver spice-gtk

caj2pdf

中国知网大部分论文都是caj格式(什么垃圾玩意),在linux下先转换成pdf格式再阅读比较方便,这里推荐caj2pdf工具,当然成功与否全部靠命

proxychains -q yay -S caj2pdf

# 转换caj到pdf
caj2pdf convert 某篇博士论文.caj -o 某篇博士论文.pdf

colorpicker

还在为做PPT找不到好配色烦恼吗?安装colorpicker,运行命令,鼠标一点即可获取颜色的RGB和Hex值,获取完直接ctrl+c退出。

proxychains -q yay -S colorpicker
colorpicker

Troubleshooting

这里放一些或许有的问题,方便大家排查,没事干时多看看KSystemlog~

USB无线网卡不工作

大概率是驱动问题,我的无线网卡是TP-Link,连接后输入lsusb命令查看芯片组信号:

Bus 005 Device 003: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter

可以看到用了Ralink的MT7601U,输入如下命令安装对应的开源驱动:

proxychains -q yay -S mt7601u-dkms-git

重启后就有无线网络啦。

Ark解压中文乱码

proxychains -q yay -S p7zip-natspec
``
在Ark设置中禁用LibZip插件