准备好最新的ISO镜像
可以从这里下载。
使用U盘引导
我使用的是Ventoy。
SGX错误导致不能从启动盘启动
错误比较玄学,不懂原理。解决方法,使用grub引导进入iso。
换源
使用vim修改/etc/pacman.d/mirrorlist,修改为Server = http://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch。
联网
有线网开机后自动配置无需联网。无线网需要连接wifi。
使用ip link检测网络接口
一般情况下无线网络接口为wlan x,一般为wlan0。
使用iwctl认证无线网络
使用方法:使用iwctl进入交互界面。(一定要注意dhcpd服务是否已经打开)
| 方法 | 作用 |
|---|---|
| help | 显示命令详情 |
| device list | 列出所有wifi设备 |
| station device_name scan | 使用某个设备扫描wifi |
| station device_name get-networks | 列出所有可用的网络 |
| station device_name connect SSID | 连接到一个网络 |
连接完毕后验证
使用ping baidu.com来检测连通性。
设置时间
使用timedatectl set-timezone Asia/Shanghai
更新pacman缓存
使用pacman -Syy
创建硬盘分区
使用fdisk /dev/硬盘 来进行分区
进入fidsk交互窗口之前,可以使用fdisk -l来查询设备上的硬盘有哪些。(忽略以 rom、loop 或者airootfs结尾和以 rpbm、boot0 或者 boot1 结尾的 mmcblk* 结尾的设备。)
建立挂载点 / 和 /boot 所对应分区,按需求建立SWAP分区
建立的类型大小和挂载点对应关系见这里
本次采用GPT+UEFI模式,所以使用到EFI分区,更改分区类型
更改分区类型,比如/分区为Linux filesystem类型,/boot为EFI System分区类型,SWAP为Linux swap分区类型。
在fdisk中 使用命令t更改。
格式化分区
注意:这里操作的是分区不是硬盘
根目录所用分区使用mkfs.ext4 /dev/分区。
交换空间分区使用mkswap /dev/swap_partition。
EFI 系统分区使用mkfs.fat -F 32 /dev/efi_system_partition命令格为fat32格式。
注意:如果efi分区内已经有其他系统的efi记录则不要格式化,否则可能会破坏其他系统启动。
挂载分区
注意:一定要按照顺序挂载
首先挂载根目录使用mount /dev/根目录分区 /mnt,
然后创建efi目录并挂载EFI分区使用mkdir /mnt/boot/efi && mount /dev/EFI分区 /mnt/boot/efi,
最后挂载swap分区swapon /dev/swap_partition(交换空间分区)。
开始安装
使用pacstrap -K /mnt base base-devel intel-ucode linux linux-firmware vim vi dhcpcd iwd net-tools NetworkManager如果有其他需要安装的软件一并写到后面。
这时候建议把一些中文字体一并安装好
sudo pacman -S adobe-source-han-serif-cn-fonts adobe-source-han-sans-cn-fonts adobe-source-code-pro-fonts noto-fonts-cjk
配置系统
生成 fstab 文件
genfstab -U /mnt >> /mnt/etc/fstab
chroot 到新安装的系统
arch-chroot /mnt
设置 root 密码
passwd
重启继续配置
启动网络相关服务并联网
systemctl enable iwd dhcpcd并且start他们。
使用iwctl工具联网。
也可使用NetworkManager联网
使用之前要start并且enableNetworkManager服务,注意大小写。然后使用nmtui联网,这个工具在装好字体后可以连接中文wifi。
检查mirrorlist是否正确
之后运行pacman -Syyu更新pacman缓存。
添加普通用户并划分组别
#创建新用户username并且使其加入到wheel组中useradd -m -G wheel -s /bin/bash username#更改密码passwd username#修改sudoers文件,使wheel用户组拥有使用sudo的权限visudo#然后取消%wheel ALL=(ALL) ALL这一行的注释,使其生效更改时间
更改时间首先需要更改时区,使用timedatectl set-timezone Asia/Shanghai。之后使用systemd-timesyncd来进行时间同步。把配置文件/etc/systemd/timesyncd.conf中的NTP字段改为如下。
NTP=0.cn.pool.ntp.org 1.cn.pool.ntp.org 2.cn.pool.ntp.org 3.cn.pool.ntp.org
然后
#启用ntptimedatectl set-ntp true#启用服务systemctl enable systemd-timesyncdCAUTION如果使用Win/Linux双系统,每次开机系统时间可能错乱,因为 Linux 认为硬件时钟应该存储的是 UTC 时间,而Windows认为硬件时钟存储的就是当地时间。建议更改Linux理解硬件时钟的方式使用
sudo timedatectl set-local-rtc 1 --adjust-system-clock。
bash自动补全问题
在接下来的配置过程中,好多指令都很长,需要一个自动补全。archlinux 默认使用bash,我们可以安装一个 bash-completion 包来自动补全。如果想要安装过程中的那种补全效果可能需要安装 Zsh + Oh My Zsh。
使用引导工具(可选)
安装完成后的网络问题
此备忘录使用 NetworkManager 管理 iwd 配合 systemd-resolvconf 完成 wifi 的连接。注意不能使用 dhcpcd ,因为 dhcpcd 和 systemd-resolvconf 会冲突。
TIP因为使用
NetworkManager管理iwd,所以我们仅仅需要systemctl enable NetworkManager和systemctl enable systemd-resolved,只需要自启动这两个服务即可。如果把 iwd 也自启动后,当 NetworkManager 想要调用时可能会端口占用或多次重复运行。使用NetworkManager时须在/etc/NetworkManager/NetworkManager.conf中注明使用 wifi 的后端为 iwd
[device]wifi.backend=iwd之后使用 nmtui 或其他的 NetworkManager 包工具,连接wifi。
安装完成后的蓝牙问题
首先需要使用 sudo systemctl enable --now bluetooth 设置自启并启动,此时就可以使用 bluetoothctl 进行管理,但是太麻烦了,建议使用 blueman(GUI) 或 bluetuith(TUI) 进行管理。
安装完成后的音频驱动问题
在 archlinux 安装完毕后音频驱动 ALSA 就已经安装好了,我们可以选择安装 alsa-utils 安装一些实用工具。最好是安装一个音频服务器,我选择的是 PipeWire ,然后使用 WirePlumber 对他进行回话管理。
建议安装另外的 pipewire-pulse, pipewire-alsa, pipewire-jack 等包以获取更好地体验。
安装完成后的字体问题
首先Linux系统中以大类字体为主:
- Serif 衬线体,笔画末端有装饰小脚,适合长篇阅读。
- Sans-serif 无衬线体,笔画平滑,现代感强,屏幕阅读最清晰
- Monospace 等宽体,每个字符宽度一致,程序员写代码必用。
字体的命名方法
后缀命名
- CJK: (Chinese, Japanese, Korean) 包含中日韩字符。
- Nerd Fonts: 在原版字体基础上增加了成千上万个图标(如 GitHub 图标、文件夹图标),终端美化必装。
- Variable (可变字体): 一个字体文件包含从细到粗的所有形态,不需要单独安装 Bold 或 Italic。
我们的配置主要以前两种为主
字重命名
- Light / Thin: 细体
- Regular / Roman: 常规体
- Medium / Semi-Bold: 中粗/半粗
- Bold: 粗体
Linux Fonts替代原则
在 Linux 中,有一个核心概念叫 Font Alias(字体别名)。 例如,Firefox 想要调用 Helvetica(这是苹果常用的字体),但你没安装。此时系统会根据配置文件进行“映射”:
Helvetica (请求) → Arial (第一替代) → Liberation Sans (开源替代) → Noto Sans (保底方案)
我的方案
- 尽量使用苹果字体,不能用的使用其他字体补充
- 我的补充字体为:
noto-fonts-cjknoto-fonts-emojittf-nerd-fonts-symbolsttf-liberation - 苹果字体使用:
苹方SCSF-ProMonaco.ttf - 把所有自己找到的苹果字体放到
/usr/share/fonts/apple/目录下(apple目录是我自己建的,名字随便取) - 配置
~/.config/fontconfig/fonts.conf
<?xml version="1.0"?><!DOCTYPE fontconfig SYSTEM "fonts.dtd"><fontconfig>
<match target="pattern"> <test name="family"><string>monospace</string></test> <edit name="lang" mode="assign"><string>en</string></edit> </match>
<alias> <family>sans-serif</family> <prefer> <family>SF Pro</family> <family>PingFang SC</family> <family>Noto Sans CJK SC</family> <family>Noto Color Emoji</family> </prefer> </alias>
<alias> <family>serif</family> <prefer> <family>Times New Roman</family> <family>PingFang SC</family> <family>Noto Serif CJK SC</family> <family>Noto Color Emoji</family> </prefer> </alias>
<alias> <family>monospace</family> <prefer> <family>Monaco</family> <family>Noto Sans Mono CJK SC</family> <family>Symbols Nerd Font</family> </prefer> </alias>
</fontconfig>注意
- 复制 fonts 文件到指定目录时,需要把 bold,regular 等同一个字体不同字重全都复制到目录下。
- 在配置文件中有个
match,因为当设置系统语言为 zh_CN 时,Fontconfig 在挑选字体时会开启一个“强匹配模式”,它会优先寻找声明了自己“支持中文(zh-cn)”的字体。但是 Monaco 声称自己并不支持中文,所以就算我们需要的是英文字母,系统也会自动跳过 Monaco,最后的结果可能会导致出现英文挤在一起。所以我们的match的作用是当任何程序请求 monospace 字体时,Fontconfig 会强制把这个请求的语言属性标记为 en(英文)。这样系统就不会因为你处于中文环境而嫌弃 Monaco 了。
一些在配置中可能用得到命令
fc-match monospace //判断现在如果请求monospace字体,则会使用哪个字体sudo fc-cache -fv //更改完 config 文件后强制刷新系统缓存fc-list family //查看当前在字体缓存下系统可以识别到那些字体家族更改系统语言为中文
sudo vim /etc/locale.gen把zh_CN.UTF-8 UTF-8和en_US.UTF-8 UTF-8解除注释。sudo locale-gen生成locale。sudo nano /etc/locale.conf修改为LANG=zh_CN.UTF-8。- 重启系统。
安装显卡驱动
- 安装
nvivia-open包和nvidia-ulity包。 - 安装
nvidia-prime包,用来给某些软件强制使用显卡渲染。 - (可选)使用
EnvyControl配合上面的nvidia-prime控制显卡切换
firefox强制开启硬件加速
- 确保 WebRender 已启用。导航到
about:support并确认合成为“WebRender”,而不是 “软件WebRender”。- 可在
bout:config中设置gfx.webrender.all 为 true强制启用硬件 WebRender。
- 可在
- 把
media.ffmpeg.vaapi.enabled 设置为 true来开启 firefox 的 VAPPI 。 - 如果在
about:support中硬件视频加速被错误代码 FEATURE_HARDWARE_VIDEO_DECODING_DISABLE 或 FEATURE_FAILURE_VIDEO_DECODING_TEST_FAILED 阻止,可以通过将media.hardware-video-decoding.force-enabled=true强制启用。 - 可以在播放视频的时候,使用
nvidia-smi命令查看是否使用硬解。
安装rust
- 安装 rustup 。
rustup toolchain install stable
安装Paru
- 确保已安装构建必需工具
base-develgitrust。 - 克隆 paru 的 AUR 仓库:
git clone https://aur.archlinux.org/paru.git。 - 进入目录构建并安装
makepkg -si。
Paru 不能换源,所以我们最好使用代理,可以安装 Clash meta recv,之后在命令行中激活临时代理:export https_proxy="http://127.0.0.1:xxxx" 。
对cpu限频
安装 sudo pacman -S cpupower
sudo cpupower frequency-set -u 2600000 # 单位 kHz,2500000 = 2.6 GHz
可以使用 cpu-x 对其进行监控,看是否生效。