ArchLinux 使用记录

强烈推荐阅读:Arch Linux 安装使用教程archlinux 简明指南 。 这两本书都是内容非常详尽的 Arch Linux 安装和使用教程,包括Arch Linux安装、基本配置、日产使用、常用软件安装等内容,可以帮助初学者解决很多问题。

笔者本人使用笔记本单固态应硬盘安装windows10 + ArchLinux双系统,推荐按照 archlinux 简明指南 的安装步骤进行安装。

安装过程需要注意:

  1. 清楚你即将使用的命令做了什么,不要一味回车回车…

  2. 按照教程的大纲,分模块进行,分清每一块做了什么,不要一行一行,遇见一个敲一个,先通读知晓这一块是做什么之后,返回来按照自己需要的去做。

  3. 不要过分地“多线程”操作试图节省时间,稳中前进,不出错就是最快的。

  4. 仔细对照好输入的命令是否正确,确认每个命令的结果是否符合预期。

    Arclinux 中文论坛 众多 Archlinux 使用者汇集的地方,同时有着较为官方的信息和软件包,很多问题可以在这里解决。

部分命令记录

1
2
3
4
5
6
7
8
9
sudo fdisk -l   # 查看磁盘和分区信息
df-h # 显示文件系统磁盘空间使用情况
sudo umount /dev/sdX # 卸载U盘,“/dev/sdX”为你要卸载的U盘设备名称。
sudo mkfs.vfat /dev/sdX # 将U盘格式化为FAT32文件系统/

printenv # 查看所有的环境变量
echo &PATH # 查看特定环境变量的值(echo $http_proxy)
export http_proxy="http://127.0.0.1:7890" # 设置代理服务器,设置http_proxy和https_proxy环境变量
export https_proxy="http://127.0.0.1:7890"

以下命令需要安装后才能使用:

1
2
3
4
5
6
7
tree -A 使用ASNI绘图字符显示树状图而非以ASCII字符组合
-C 使用颜色区分文件类型
-N 支持显示中文字符
-a 显示隐藏文件(以.开头)
-d 只显示目录
-h 使用人易读的单位显示文件大小
-L [num] 指定显示的最大深度

##Pacman包管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo pacman -Syu                # 升级系统
sudo pacman -S package_name # 安装软件包
sudo pacman -Syu package_name # 升级系统并安装软件包,ArchLinux 不支持部分升级,建议用此命令先升级再安装
sudo pacman -Syyu # 升级系统 yy标记强制刷新 u标记升级动作
sudo pacman -Ss package_name # 搜索包含相关内容的软件包
sudo pacman -R package_name # 删除软件包
sudo pacman -Qi package_name # 查看软件包信息
sudo pacman -Q # 查看安装的软件包
sudo pacman -Rs package_name # 删除软件包,及其所有没有被其他已安装软件包使用的依赖包
sudo pacman -Si package_name # 从数据库中搜索软件包的信息
sudo pacman -Qdt # 找出孤立包 Q为查询本地软件包数据库 d标记依赖包 t标记不需要的包 dt合并标记孤立包
sudo pacman -Rs $(pacman -Qtdq) # 删除孤立软件包
sudo pacman -U abc.pkg.tar.gz # 安装下载的abc包,或新编译的本地abc包
sudo pacman -Fy # 更新命令查询文件列表数据库
sudo pacman -F xxx # 当不知道某个命令属于哪个包时,用来查询某个xxx命令属于哪个包
sudo pacman -Sc # 清理没有安装的所有缓存包,和没有被使用的同步数据库

yay -Syu # 升级官方和 AUR 的软件包, 包括pacman, -syyu强制升级
yay -S abc # 安装abc包
yay -Ss abc | grep 已安装 # 搜索已安装且包含abc的包
yay -R 包名 # 删除软件包(不包括前后缀,版本号)
sudo rm /var/lib/pacman/db.lck # 删除/var/lib/pacman/db.lck锁

系统服务的操作与介绍

Linux 系统中运行着各种服务,你需要掌握查询,变更服务状态的方式。同时对创建服务最好也有大致的了解。这里讲述命令systemctl的用法。以 dhcpcd 为例

1
2
3
4
5
6
7
8
9
systemctl start dhcpcd          # 启动服务
systemctl stop dhcpcd # 停止服务
systemctl restart dhcpcd # 重启服务
systemctl reload dhcpcd # 重新加载服务以及它的配置文件
systemctl status dhcpcd # 查看服务状态
systemctl enable dhcpcd # 设置开机启动服务
systemctl enable --now dhcpcd # 设置服务为开机启动并立即启动这个单元:
systemctl disable dhcpcd # 取消开机自动启动
systemctl daemon-reload dhcpcd # 重新载入 systemd 配置 扫描新增或变更的服务单元 不会重新加载变更的配置 加载变更的配置用 reload

换源-阿里云

编辑文件/etc/pacman.d/mirrorlist

1
sudo vim /etc/pacman.d/mirrorlist

在镜像源列表最顶端添加:

1
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch

参考:阿里云开发者社区> 镜像站> archlinuxcn

1
sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring # 安装 archlinuxcn-keyring 包导入GPG key

安装yay

1
2
3
sudo pacman -S yay
#安装完成后再次更新
yay -Syyu && yay -Sys

设置某个命令不再需要 sudo 输入密码

1
2
3
4
5
6
7
8
sudo vim /etc/sudoers # 编辑配置文件
# 在合适的行添加以下内容,username 是你的用户名,注意使用完整路径,不然每次都会提醒,不同命令用","隔开
username ALL=(ALL) NOPASSWD: /usr/sbin/systemctl,/ust/sbin/pacman
# 使用which命令可以查看程序的完整路径。
which yay
which pacman
# 一键为当前用户设置免 sudo 权限,当前用户所有命令都不在需要sudo输入密码
sudo sh -c "echo '$USER ALL = (ALL) NOPASSWD:ALL' > /etc/sudoers.d/$USER"

常见问题及其解决

  • 使用yay命令时报错:

    1
    搜索 AUR 时出错: response decoding failed: invalid character '<' looking for
    • 解决:
      1
      yay --aururl "https://aur.archlinux.org" --save
  • Telegram无法登陆:

    • 解决:
      SETTING中添加地址,使用代理,port选择代理所使用端口号。
  • 连接显示器无法使用:

  • VSCode无法唤出外部终端:

    • 解决:
      .vscode文件中设置启用外部终端,在settings.json文件中加入”terminal.external.linuxExec”: “/usr/bin/konsole”, “”内指要调用的终端bin/konsole。
  • 在升级系统(syu)时,出现以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    错误:python-markdown: 来自 "Caleb Maclennan <alerque@archlinux.org>" 的签名是勉强信任的
    :: 文件 /var/cache/pacman/pkg/python-markdown-3.3.6-1-any.pkg.tar.zst 已损坏 (无效或已损坏的软件包 (PGP 签名)).
    打算删除吗? [Y/n]
    错误:trash-cli: 来自 "Alexander Epaneshnikov <alex19ep@archlinux.org>" 的签名是勉强信任的
    :: 文件 /var/cache/pacman/pkg/trash-cli-0.21.10.24-1-any.pkg.tar.zst 已损坏 (无效或已损坏的软件包 (PGP 签名)).
    打算删除吗? [Y/n]
    错误:无法提交处理 (无效或已损坏的软件包)
    发生错误,没有软件包被更新。
    • 解决:

      终端输入:sudo pacman-key --init && sudo pacman-key --populate && sudo pacman -Syyu

      可能的方法:sudo pacman -S archlinux-keyring

使用Docker

  1. 安装:

    1
    2
    3
    4
    5
    6
    7
    sudo pacman -S docker # 安装Docker -Ss搜索Docker软件包
    sudo systemctl enable docker.service # 开启Docker开机自启动服务
    sudo systemctl start docker.service # 启动Docker服务
    # 安装好docker后自动建立了docker组,不需要自己添加docker组,只需要把当前工作用户加入docker组即可
    sudo gpasswd -a $USER docker # 把工作用户加入Docker组,避免使用root账号工作
    #重启系统生效
    sudo systemctl disable docker.service # 关闭开机自启动服务
  2. 获取镜像:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    docker pull archlinux  # 下载镜像
    docker image ls # 列出镜像列表
    docker ps -a # 列出容器列表
    docker run -it archlinux /bin/bash # 用所给镜像启动一个新的容器
    docker run --rm -it --net=host gpt-academic # 用所给镜像启动一个新的容器
    docker exec -it <CONTAINER_NAME> bash # 进入一个正在运行的docker(在容器内部创建一个子进程)
    docker stop [contaionerID] # 终止镜像
    docker rmi $(docker images -q) # 删除所有镜像
    docker stop $(docker ps -aq) # 停止所有容器
    docker container rm [contaionerID] # 删除一个处于终止状态的容器
    docker container rm $(docker images -q) # 删除所有容器
  3. 配置镜像:

    启动镜像,配置初始开发环境,安装了一些包(可能有些没有用),

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    docker run -t -i archlinux /bin/bash # 启动镜像
    # 在docker内输入以下内容
    sed -i '1i Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
    && sed -i '1i Server = https://mirrors.tencent.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
    && sed -i '$i [archlinuxcn]' /etc/pacman.conf \
    && sed -i '$i SigLevel = TrustAll' /etc/pacman.conf \
    && sed -i '$i Server = https://repo.archlinuxcn.org/$arch' /etc/pacman.conf \
    && sed -i -r 's/^NoExtract\s*=\s*.*/# \0/g' /etc/pacman.conf \
    && pacman -Syyu --noconfirm \
    && pacman -Sy --noconfirm archlinuxcn-keyring && pacman -Su --noconfirm\
    && pacman -Syy --noconfirm git vim neovim zsh oh-my-zsh-git jdk-openjdk jdk8-openjdk jdk11-openjdk \
    maven yay zsh python3 go nodejs npm yarn tmux python2 zsh-autosuggestions zsh-syntax-highlighting \
    zsh-theme-powerlevel10k ranger python-pip python-neovim wl-clipboard fzf ripgrep man-db \
    gcc clang base-devel wqy-zenhei noto-fonts-cjk wget unzip thefuck \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && pacman -Scc --noconfirm \
    && rm -rf /var/lib/pacman/sync/* /var/cache/pacman/pkg/* \
    && echo "" > /var/log/pacman.log

    精简版本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sed -i '1i Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
    && sed -i '1i Server = https://mirrors.tencent.com/archlinux/$repo/os/$arch' /etc/pacman.d/mirrorlist \
    && sed -i '$i [archlinuxcn]' /etc/pacman.conf \
    && sed -i '$i SigLevel = TrustAll' /etc/pacman.conf \
    && sed -i '$i Server = https://repo.archlinuxcn.org/$arch' /etc/pacman.conf \
    && sed -i -r 's/^NoExtract\s*=\s*.*/# \0/g' /etc/pacman.conf \
    && pacman -Syyu --noconfirm \
    && pacman -Sy --noconfirm archlinuxcn-keyring && pacman -Su --noconfirm\
    && pacman -Syy --noconfirm git vim neovim \
    maven yay go npm yarn tmux \
    ranger python-pip python-neovim wl-clipboard fzf ripgrep man-db \
    gcc clang base-devel wqy-zenhei noto-fonts-cjk wget unzip thefuck \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && pacman -Scc --noconfirm \
    && rm -rf /var/lib/pacman/sync/* /var/cache/pacman/pkg/* \
    && echo "" > /var/log/pacman.log
  4. 配置vscode:

    下载插件:Remote Development Pack(包含Remote-Containers),Docker。打开插件,在CONTAINERS中右键Attach Visual Studio Code,在vscode中运行了镜像,重新安装一些扩展,当作一个新的archlinux一样使用。

  5. 容器和本地间的文件传输:

    1
    2
    3
    docker ps -a   # 获得容器ID
    docker cp 本地文件路径 ID全称:容器路径 # 本地文件复制到容器
    docker cp ID全称:容器文件路径 本地路径 # 容器文件复制到本地

Typora+PicGo+Github图床

整体遵循:https://juejin.cn/post/6844904137407086600#heading-8

  1. 创建GIthub仓库并创建Token并复制
  2. 下载PicGo(app)并配置,包括时间戳命名,选择github图床,仓库名,分支用main,设定Token
  3. 下载并配置node.js
  4. 配置Typora并测试图床

编译安装从 GitHub 下载的源码

  1. 执行以下命令,生成 Makefile 文件:

    ./autogen.sh

  2. 如果下载的源代码中已经包含了 Makefile 文件,则可以跳过此步骤。

  3. 执行以下命令,配置编译选项:

    ./configure

    configure 脚本会检查系统环境和依赖库,并生成 Makefile 文件。可以通过指定不同的选项来定制编译过程。

    例如,可以使用 –prefix 选项指定安装目录,使用 –enable-shared 选项生成共享库等。

  4. 执行以下命令,开始编译:

    make

    这个命令会编译源代码,并生成可执行文件或共享库等。

  5. 执行以下命令,安装编译好的文件:

  6. sudo make install

    这个命令会将编译好的文件安装到系统中,通常是 /usr/local 目录。 如果在执行 configure 或 make 命令时遇到了错误,可以根据错误信息进行调整。通常情况下,错误信息会提示缺少依赖库或者系统环境不兼容等问题。

安装deb包

  1. 使用yay安装debtap。 yay -S debtap
  2. 升级的debtap。sudo debtap -U
  3. 转换deb包,生成一个yourfile.zst文件。sudo debtap yourfile.deb(接两次回车)
  4. 安装转换后的包。sudo pacman -U yourfile.zst

压缩文件

  • -c :生成一个新的归档文件
  • -f :输出到文件中,
  • -z & -j :将 tar 压缩成 gzip 和 bzip2 格式。
  • archive :压缩文件的名称
  • /path/to/folder :要压缩的文件夹的路径。
    1
    2
    3
    4
    5
    6
    # 将文件夹压缩成 .tar 文件:
    copy codetar -cf archive.tar /path/to/folder
    # 将文件夹压缩成 .tar.gz 文件:
    copy codetar -czf archive.tar.gz /path/to/folder
    # 将文件夹压缩成 .tar.bz2 文件:
    copy codetar -cjf archive.tar.bz2 /path/to/folder

安装QQ

1
2
3
yay -Ss linuxqq # 在AUR查找linuxQQ 
yay -S linuxqq # 从AUR安装linuxqq
sudo pacman -Rns linuxqq # 删除linuxqq及不再需要的依赖

登陆后闪退的可能解决办法:

删除~/.config/QQ 下的所有文件,重启QQ进行登陆并在设置里关闭QQ自己的更新。

其他问题请自行在Google或者在Arch中文社区寻找解决方案

安装 fcitx5及中文输入法

1
2
sudo pacman -S fcitx5-im 
sudo pacman -S fcitx5-chinese-addons fcitx5-rime

sudo vim /etc/environment,添加如下内容,之后重启输入法:

1
2
3
4
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx

在设置中找到输入法,添加输入法,选拼音

中文标点消失:

  • 编辑~/.config/fcitx/data/punc.mb.zh_CN,自行查找

  • [ctrl+.]

安装zsh

编辑配置文件:

1
vim ~/.zshrc

目前的:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p12k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p11k-instant-prompt-${(%):-%n}.zsh"
fi


ZSH=/usr/share/oh-my-zsh/

ZSH_THEME="powerlevel10k/powerlevel10k"

plugins=(
sudo
git
autojump
zsh-syntax-highlighting
zsh-autosuggestions
)

ZSH_CACHE_DIR=$HOME/.cache/oh-my-zsh
if [[ ! -d $ZSH_CACHE_DIR ]]; then
mkdir $ZSH_CACHE_DIR
fi


source $ZSH/oh-my-zsh.sh

# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# other name
alias sp='sudo pacman'
alias syyu='yay -Syyu' # 强制升级系统和软件包
alias syu='yay -Syu' # 升级系统和软件包
alias c='clear' # 清屏
alias e='exit' # 退出终端
alias qq='rm -rf ~/.config/QQ/ && linuxqq &' # 启动QQ时删除文件

# git快捷键 cd+add+commit+push+cd

# 将本地Note仓库提交到gihub
alias gpn='cd /home/origin/Code/repository/Note && git add . && git commit -m \"update\" && git push && cd -'

# 将本地Code_c仓库提交到gihub
alias gpc='cd /home/origin/Code/repository/Code_c && git add . && git commit -m \"update\" && git push && cd -'

# 将本地Code_cc仓库提交到gihub
alias gpcc='cd /home/origin/Code/repository/Code_cc && git add . && git commit -m \"update\" && git push && cd -'

# 将本地Python仓库提交到gihub
alias gppy='cd /home/origin/Code/repository/Code_py && git add . && git commit -m \"update\" && git push && cd -'

# 将本地my-xv6-labs-2022仓库提交到gihub
alias gplab='cd /home/origin/Code/repository/my-xv6-labs-2022 && git add . && git commit -m \"update\" && git push &&cd -'

export GOPATH="$HOME/go"
export PATH="$PATH:/usr/lib/go/bin:$GOPATH/bin"
export PATH=/usr/sbin:$PATH

##为一个文件或目录创建一个符号链接:

/usr/local/local中存有已经建立的符号链接,在/usr/share中有通过自行下载的装包安装的软件,如通过官网安装包安装的code。

输入ln -s [文件/目录路径] [建立后的软链接名称],即可建立链接。如:ln -s /usr/share/code/code code

更改默认Jva环境

安装Java环境(Java-20-jdk)

1
sudo pacman -Sy --needed --noconfirm jdk

输入

1
archlinux-java status

若出现类似下面,即为安装成功

1
2
3
4
Available Java environments:
java-21-jdk
java-21-openjdk
java-8-openjdk (default)

若 java-21-openjdk 为 default 则已成功将 java21 设置为默认环境,若不是,则输入

1
sudo archlinux-java set java-20-openjdk[你想要设为默认的java环境名]

后输入archlinux-java status查看, java-21-openjdk 已是 default

1
2
3
4
Available Java environments:
java-21-jdk
java-21-openjdk (default)
java-8-openjdk

ArchLinux内存管理

  1. 清除 Arch Linux 上的包缓存和AUR 软件包

    /var/cache/pacman/pkg/目录中存有下载的每个软件包;

    /home/Yuanmxc/.cache/yay存有从 AUR 下载的软件包。

    这些软件包包括升级前的旧包,如果更新破坏了软件包,便于回滚到以前的版本。

    1
    2
    3
    4
    5
    6
    # 删除当前上面两个文件中未安装的所有软件包
    sudo pacman -Sc
    yay -Sc
    # -cc 标志删除所有缓存的包
    sudo pacman -Scc
    yay -Scc
  2. 删除孤立的软件包

    1
    2
    sudo pacman -Qtdq 查看删除孤立的软件包
    sudo pacman -Rns $(pacman -Qtdq)
  3. 清理日志,设置了固定大小为50M,多的日志会被删掉。

    1
    sudo journalctl --vacuum-size=50M

python 使用 pip 遇到问题

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

pip install scikit-learn
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
python-xyz', where xyz is the package you are trying to
install.

If you wish to install a non-Arch-packaged Python package,
create a virtual environment using 'python -m venv path/to/venv'.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.

If you wish to install a non-Arch packaged Python application,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. Make sure you have python-pipx
installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

解决:

1
sudo rm /usr/lib/python3.12/EXTERNALLY-MANAGED # python路径和版本要与系统中的相对应

修改用户名及用户目录

  1. 切换终端,用root账户登录;
  2. 编辑/etc/passwd文件,将旧用户名替换为新用户名;
  3. 编辑/etc/shadow文件,将旧用户名替换为新用户名;
  4. 编辑/etc/group文件,将旧用户名替换为新用户名;
  5. 重命名home文件: mv /home/oldusername /home/newusername

注:目录名的改变会导致一些固定路径的配置项发生错误,需要手动修改路径。

Linux 修改U盘名称

1
2
3
4
5
6
sudo pacman -S mtools # 安装工具
sudo vim /etc/mtools.conf # 然后修改配置文件
# 在这个文件最后添加下面一行
mtools_skip_check=1
sudo mlabel -i /dev/sdb1 ::DISK2 # sdb1是U盘,SISK2是修改后的名称(自动改大写)
sudo eject /dev/sdb1 # 修改完成

安装使用 valgrind 检测内存泄露

1
2
3
4
5
sudo pacman -S valgrind
pacman -S debuginfod
pacman -S glibc

valgrind --leak-check=full ./your_program

syu升级软件包出现错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
google-chrome: 文件系统中已存在 /opt/google/chrome/CHROME_VERSION_EXTRA 
google-chrome: 文件系统中已存在 /opt/google/chrome/MEIPreload/manifest.json
google-chrome: 文件系统中已存在 /opt/google/chrome/MEIPreload/preloaded_data.pb

(多行类似,在"/opt/google/chrome/"下)

google-chrome: 文件系统中已存在 /usr/share/doc/google-chrome-stable/changelog.gz
google-chrome: 文件系统中已存在 /usr/share/gnome-control-center/default-apps/google-chrome.xml
google-chrome: 文件系统中已存在 /usr/share/icons/hicolor/128x128/apps/google-chrome.png
google-chrome: 文件系统中已存在

(多行类似,在"/usr/share"下)

发生错误,没有软件包被更新。
-> 安装时出错: [/home/Yuanmxc/.cache/yay/google-chrome/google-chrome-124.0.6367.201-1-x86_64.pkg.tar.zst] - exit status 1

解决:

1
2
yay -S google-chrome --overwrite='/opt/*' --overwrite='/usr/*'
# 安装时覆盖这两个目录下与 Google Chrome 相关的文件

手动编译安装一些软件包,依赖库

1
2
3
4
5
6
7
8
9
10
11
sudo pacman -S base-devel # 安装必要编译工具和依赖项,已安装不用再安装
git clone https://github.com/sctplab/usrsctp.git # 克隆源码
# 进入目目录编译安装
cd usrsctp
./bootstrap
./configure
make
sudo make install
# 安装完后可以删除源码
cd ..
rm -rf usrsctp

KDE 显示相关

安装 optimus-manager(AUR & GIthub) 及 optimus-manager-qt 来进行 GPU 管理,适合 AMD+Nvida 独显用户,主要是便于连接显示器和显卡切换,方案参考来自 archlinuxstudio的显卡驱动部分

部分可能用到的命令。

1
2
cat /sys/bus/pci/devices/0000\:01\:00.0/power/runtime_status # 查看 Nvida 是否active
nvidia-smi # 查看Nvida 显卡状态

从530.41驱动版本开始,出现了卡被锁定在低功耗限制的情况(参见GitHub问题483)。 NVIDIA 驱动程序已禁用使用 nvidia-smi 命令手动设置功率限制的功能,因此许多笔记本电脑陷入低功耗和性能不佳的困境。

要解决此问题(对于 Ampere 一代或更新版本),请启动/启用 nvidia-powerd.service ,这将启用 DynamicBoost。

1
2
3
systemctl status nvidia-powerd.service # 查看状态
systemctl start nvidia-powerd.service # 启用
systemctl stop nvidia-powerd.service # 停用

查看磁盘信息

也可使用 fdisk -l 等命令进行查看,这里采用 lsblk

1
lsblk

假设U盘为 sdc

卸载设备

1
2
# 卸载 sdc 
sudo umount /dev/sdc*

格式化成功后,再次查看磁盘信息时,上面提到的3个分区就不存在了

1
2
# 格式化成功后,再次查看磁盘信息时,上面提到的3个分区就不存在了
sudo mkfs.vfat /dev/sdc -I

制作系统启动盘

采用 dd 命令将系统镜像写入U盘。执行完毕后,Ubuntu 系统启动盘就制作好了。

1
2
# if=镜像的路径, of=写入的磁盘, status=progress方便查看下进度
sudo dd bs=4M if=ubuntu-20.04.2.0-desktop-amd64.iso of=/dev/sdc status=progress oflag=sync

使用ssh连接远程主机

在 Arch Linux 上,SSH 客户端是 OpenSSH 软件包的一部分:

1
2
sudo pacman -Syu
sudo pacman -S openssh

生成一对新的ssh密钥:

在终端中,使用以下命令生成一对新的 SSH 密钥:

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这将在 ~/.ssh/ 目录下生成一个 RSA 4096 位的密钥对。私钥为id_rsa,公钥为id_rsa.pub

编辑 ~/.ssh/config 文件以便快速方便地连接多个主机:

1
2
3
4
5
Host myserver
HostName example.com
User username
Port 22
IdentityFile ~/.ssh/id_rsa

这样你可以通过 ssh myserver 来连接,而不需要每次都输入完整的命令。

安装并且切换不同版本的 java 环境:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# pacman 或者 yay 安装不同版本,可同时存在
sudo pacman -S jdk21-openjdk
yay -S jdk13-openjdk
# 使用 archlinux-java 工具来切换默认的Java版本
sudo archlinux-java set java-21-openjdk
# 查看当前安装的所有Java版本
archlinux-java status
Available Java environments:
java-21-openjdk (default)
java-22-openjdk
#查看当前 java 版本
java -version

openjdk version "21.0.4" 2024-07-16
OpenJDK Runtime Environment (build 21.0.4+7)
OpenJDK 64-Bit Server VM (build 21.0.4+7, mixed mode, sharing)

安装/更新软件包出错

问题:

更新 google-chrome 时报错无法安装 python-ninja ,需要手动处理,

解决:

方法一:清除缓存并重新下载

尝试清除 python-ninja 的缓存并重新下载源文件:

1
2
yay -Scc python-ninja
yay -S python-ninja

方法二:手动删除源文件并重新安装

如果清除缓存后问题仍然存在,你可以手动下载并验证源文件:

  1. 进入缓存目录:

    1
    cd ~/.cache/yay/python-ninja
  2. 删除现有的 python-ninja-1.11.1.3.tar.gz 文件:

    1
    rm python-ninja-1.11.1.3.tar.gz
  3. 重新运行 yay 进行构建:

    1
    yay -S python-ninja