Arch Linux 安装教程

此文章适用于现代(2010年及以后)的x86_64机器

截至教程发布日,Arch Linux Live CD的最新版本是2024年9月的,测试无误。

支持的硬件

·x86_64架构的CPU,建议为2008年以后的CPU,比如 Intel Core i系列之后的以及AMD FX
·至少有1GB内存(Arch Wiki上写的最小的512MB现在已经无法启动如今的Live CD)
·可用的网络连接
·20GB可用的硬盘空间

具体步骤

制作安装介质

  1. 到镜像站去下载最新的Arch Linux Live CD iso ->
    https://mirrors.ustc.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso
  2. 使用工具将其写入到USB驱动器或者刻录光盘(不建议)
    推荐写入工具balenaEtcher
  3. 重启后按主板厂商的指引设置USB启动或选择USB启动(若失败请先关闭安全启动[^1])
  4. 从USB驱动器引导后就进入了Live CD环境

定义环境变量(可选)

很多命令都需要更改为你自己的设置。
因此为了方便(可以直接复制我的),我们在此处先定义一些环境变量。

这些环境变量的定义需要你在等号=后面输入要输入的信息。

首先,是你要连接的 WIFI 名字,也就是 SSID:

1
export SSID=

然后是它的密码:

1
export WIFI_PASSWORD=

新建的用户名字:

1
export NEW_USERNAME=

Live CD设置

  1. 连接网络 ->
    WIFI:
    1
    2
    3
    4
    iwctl station wlan0 scan
    iwctl station wlan0 get-networks
    iwctl station wlan0 connect $SSID --passphrase $WIFI_PASSWORD #$SSID代表WIFI的名字,$PASSWORD代表密码
    ip addr
    如果直接插网线的话上面的步骤可以跳过

    如果没有wlan0的话,可能是没有无线网卡或者是没有驱动,请插网线。如果没有RJ45网口,请移步Manjaro(

    ip addr返回了wlan0的信息并且下面有正确的ip,则代表网络已连接成功。
    可选:停止reflector服务,防止/etc/pacman.d/mirrorlist被写入其他地区镜像 ->
    1
    systemctl stop reflector.service
  2. 配置镜像
    国内网络环境懂得都懂,用镜像(注意:这一步须在reflector.service停止后进行,可手动结束或等待其执行完成,否则编辑完的mirrorlist会被它重写) ->
    1
    vim /etc/pacman.d/mirrorlist
    • 在文件开头按i进入insert模式,添加Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
    • esc退出insert模式,输入:wq保存并退出vim
  3. (可选)ssh 远程连接
    远程访问,可以直接复制命令。
    1
    ip a
    看 wlan0(如果是 WIFI 连接)下面的信息,这里会显示联网后本机在局域网内被分配的ip地址。记下它。
    然后我们设置这台机器 root 用户的密码:
    1
    passwd
    这里随便设一个,只要你能记住。
    我这里假设这台机器的ip是 192.168.101.12,于是在另一台在同一个局域网的机器上,执行
    1
    ssh [email protected]
    然后按提示,输入yes,再输入刚才设置的密码,就可以连接了。

磁盘相关

  1. 磁盘分区 ->

    这一步需要按照情况自行更改,操作不当会导致数据丢失。一定要理解下面info中的内容。

    我这台机器有一个NVME接口的固态硬盘,它的编号是nvme0n1。在有多个NVME接口的主板上,如果你插了多块硬盘,它将会有nvme1n1nvme2n1等编号,一定要清楚自己要操作的是哪块硬盘。连在SATA与USB接口上的硬盘会显示sdasdb等,sda可能是U盘也可能是内置硬盘,请先lsblk进行辨认。这条命令的意义是对nvme0n1进行操作,请根据自身需要更改。

    1
    cfdisk /dev/nvme0n1

    如果先前有Windows安装的话,请注意不要把Windows分区直接缩小大小,会让Windows坏掉。应先使用其他工具完成分区大小调整再进行后续步骤。

    • 使用GPT分区表(这是UEFI引导的必须条件)
    • 推荐分区方案 ->
      • EFI分区:不小于4MB,类型:EFI System
      • 主分区:不小于10GB,类型:Linux filesystem
        (建议在分区内部建立一个swapfile来承担swap的任务)
    • 结束后,选Write再输入yes来写入分区表,再选Quit退出
  2. 建立文件系统 ->
    主分区使用ext4文件系统

    如果先前安装了Windows或者其他操作系统,不要执行第一条,会导致Windows引导损坏。

    这条命令也需要自行修改,意为在nvme0n1的第一分区创建vfat文件系统,在nvme0n1的第二分区创建ext4文件系统。

    1
    2
    mkfs.vfat /dev/nvme0n1p1
    mkfs.ext4 /dev/nvme0n1p2

    如果之前nvme0n1p2建立过其他文件系统,这里需要按y确认。

  3. 挂载分区 ->

    改,勿照抄。/nvme0n1p2挂载到/mnt,再把nvme0n1p1这个EFI分区挂到/mnt/boot/efi下。

    1
    2
    3
    mount /dev/nvme0n1p2 /mnt
    mkdir -p /mnt/boot/efi
    mount /dev/nvme0n1p1 /mnt/boot/efi
  4. 创建swapfile ->

    swap的用途是在内存不足时,将硬盘的一部分作为内存的扩展空间使用。这里swap创建为8G,可根据需要改变count=后的数字,单位是MB。当然如果内存够大也可以不用执行这些命令。

    1
    2
    3
    4
    dd if=/dev/zero of=/mnt/swapfile bs=1M count=8192
    chmod 600 /mnt/swapfile
    mkswap /mnt/swapfile
    swapon /mnt/swapfile

安装系统

  1. 安装软件包 ->
    首先初始化keyring!!
    1
    pacman -Sy archlinux-keyring

    使用KDE Plasma作桌面环境的系统

    pacstrap安装必要的包
    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim plasma konsole dolphin noto-fonts-cjk noto-fonts noto-fonts-emoji noto-fonts-extra fcitx5-chinese-addons chromium fastfetch htop

    使用GNOME作桌面环境的系统

    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim gnome noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ibus ibus-libpinyin chromium fastfetch htop

    使用命令行界面的系统(Headless)

    这是我的习惯 ->
    1
    pacstrap /mnt base linux-zen linux-firmware linux-zen-headers base-devel git zsh zsh-completions grub efibootmgr networkmanager openssh vim fastfetch htop tmux

  2. 生成fstab ->
    1
    genfstab -U /mnt >> /mnt/etc/fstab
  3. chroot到新系统 ->
    1
    arch-chroot /mnt

初步配置系统

  1. 时间设置 ->
    1
    2
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    hwclock --systohc
  2. 用户设置 ->
    1
    2
    3
    echo archlinux > /etc/hostname
    useradd -m $NEW_USERNAME -G wheel
    passwd $NEW_USERNAME

    useradd用于添加账户,passwd用于修改密码,为安全考虑输入的密码不会直接显示出来。虽然没有反应,但确实是输入进去了。
    -m参数用以添加用户目录,-G参数用以将用户加入到wheel组中。这个组将会被赋予使用sudo的权力。

  3. 编辑sudoers ->
    1
    visudo
    将文件中的# %wheel ALL=(ALL:ALL) ALL(大概率在第121行,使用vim:121跳转)的注释取消,使得wheel组里的用户可以使用sudo
  4. 配置zsh ->

    zsh 是一个有强大客制化能力的 shell,并且 Apple 也将新 macOS 默认的 shell 换成了 zsh。现在Arch Linux Live CD 的默认 shell 就是 zsh。
    如果不喜欢zsh,或者考虑兼容性,请跳过这一步。

    1
    2
    3
    4
    5
    su $NEW_USERNAME
    git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git ~/.oh-my-zsh
    cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    chsh -s /bin/zsh
    exit
    这里使用了清华大学的 git 镜像,如果网络条件允许可以换成https://github.com/ohmyzsh/ohmyzsh
  5. 本地化 ->
    1
    2
    3
    echo "LANG=\"en_US.UTF-8\"" >> /etc/locale.conf
    sed -i "s@#zh_CN.UTF-8 UTF-8@zh_CN.UTF-8 UTF-8@g" /etc/locale.gen
    sed -i "s@#en_US.UTF-8 UTF-8@en_US.UTF-8 UTF-8@g" /etc/locale.gen
    此处命令意为去掉#zh_CN.UTF-8 UTF-8#en_US.UTF-8 UTF-8的注释符号“#
    最后运行 ->
    1
    locale-gen
  6. 服务设置 ->
    1
    2
    3
    4
    systemctl enable NetworkManager
    systemctl enable sshd
    systemctl enable sddm # KDE
    systemctl enable gdm # GNOME
  7. 引导设置 ->
    gurb已支持引导Windows。
    可以让grub找到Windows。
    1
    sudo pacman -Sy ntfs-3g os-prober
    对于UEFI引导的安装方式
    1
    2
    3
    grub-install --target=x86_64-efi --efi-directory=/boot/efi
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg

    对于BIOS引导的安装方式
    1
    2
    3
    grub-install /dev/nvme0n1
    sed -i "s@#GRUB_DISABLE_OS_PROBER=false@GRUB_DISABLE_OS_PROBER=false@g" /etc/default/grub
    grub-mkconfig -o /boot/grub/grub.cfg
  8. 退出chroot环境并重启 ->
    1
    2
    exit
    reboot
    至此Arch Linux的安装就完成了
    接下来是配置部分

进一步配置系统

如果是KDE的话,重启系统后,大概就是这样的 ->

  1. 输入法配置
    如果直接右键-配置是会显示这个的 ->

    这会进入文本配置,显然我们是不懂的(
    所以要安装fcitx5-configtool ->
    1
    sudo pacman -S fcitx5-configtool
    然后再右键-配置就可以看到 ->

    然而现在按Ctrl+Tab是不能切换到拼音输入法的,我们需要把Fcitx5设为默认输入法并自动启动 ->
    1
    sudo vim /etc/environment
    把下面的东西加进去 ->
    1
    2
    3
    4
    5
    GTK_IM_MODULE=fcitx
    QT_IM_MODULE=fcitx
    XMODIFIERS=@im=fcitx
    SDL_IM_MODULE=fcitx
    GLFW_IM_MODULE=ibus
    重新登录就可以正常使用喵~
    更多用法请参阅Arch Wiki
  2. 软件源
    众所周知,官方源对于灰色地带/非自由软件是不收录的。
    所以我们通常用第三方源+AUR来进行补充。
    官方源是不带任何AUR工具的,所以我们先装archlinuxcn源 ->
    1
    sudo vim /etc/pacman.conf
    加入以下文本 ->
    1
    2
    [archlinuxcn]
    Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
    然后获取keyring ->

    (2024.9.7测试问题已解决)近期这一步会出现问题,因为archlinuxcn 社区源的 keyring 包 archlinuxcn-keyring 由 farseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自12月初 archlinux-keyring 中删除了一个退任的 master key (https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/issues/246) 导致 farseerfc 的 key 的信任数不足,由 GnuPG 的 web of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。(转自Arch Linux CN Telegram Messages Channel)

    如果你在新系统中尝试安装archlinuxcn-keyring包时遇到如下报错:
    1
    error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <[email protected]>" is marginal trust
    请使用以下命令在本地信任 farseerfc 的 key 。此 key 已随archlinux-keyring安装在系统中,只是缺乏信任:
    1
    sudo pacman-key --lsign-key "[email protected]"
    然后
    1
    sudo pacman -Sy archlinuxcn-keyring
    就可以使用archlinuxcn源了!
    由于要使用AUR,所以我们先装一个AUR工具:
    1
    sudo pacman -S paru
    详细的用法和pacman一样。
  3. 引导Windows
    在安装系统时,os-prober往往不能正常检测到Windows,需要我们再运行
    1
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    重启即可看到Windows Boot Manager

显卡驱动

如果是A卡和I卡,在这个时候已经不用看了,开源的驱动会做得很好,而且已经随桌面环境装上了
而N卡,需要进行以下步骤

查看显卡型号

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

GeForce 900 系以及更新的显卡(NV110+),安装 nvidia(用于官方源里的标准内核)或者 nvidia-lts(用于 linux-lts 内核)

Turing (NV160/TUXXX) 系列或更新的显卡。可以安装 nvidia-open 包,开源的(仅适用于官方源里的内核,其他内核上必须使用 nvidia-open-dkms 包)

更老的显卡型号(发布于 2010 年或更早),就用内核自带的 Nouveau

安装驱动

1
sudo pacman -S nvidia-open-dkms nvidia-settings

后续

安装 NVIDIA 官方的驱动之后,需要编辑/etc/mkinitcpio.conf,在 HOOKS 一行删除kms并保存
然后执行

1
mkinitcpio -P

重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。

到现在一个日常使用的系统已经完成了~ 剩下的请自由发挥~

常用软件

  1. telegram
    1
    sudo pacman -S telegram-desktop
  2. Visual Studio Code(Official version)
    1
    paru -S visual-studio-code-bin
  3. Wine
    先启动 /etc/pacman.conf 中的 multilib 源,其中包含32位软件
    不要直接复制这些命令,要先看好你的显卡是哪家的
    1
    2
    3
    4
    sudo pacman -S lib32-mesa # 普通御三家卡
    sudo pacman -S lib32-nvidia-utils # 绿厂闭源驱动,效果好,需要现代N卡
    sudo pacman -S lib32-amdgpu-pro-oglp # 专业A卡
    sudo pacman -S wine wine-gecko wine-mono lib32-alsa-lib lib32-alsa-plugins
  4. Chrome / Edge
    1
    2
    paru -S microsoft-edge-stable-bin # 莫名慢速下载警告
    paru -S google-chrome
  5. 网易云音乐替代品
    Go 写的 musicfox,TUI 版网易云
    1
    paru -S go-musicfox-git
  6. Steam
    1
    2
    sudo pacman -S steam
    paru -S proton
  7. Clash Verge Reversion
    这是一个 Clash Verge 的修复版本,解决了原版无法更新订阅的问题
    1
    paru -S clash-verge-rev

美化

Shell

相信你已经不可拒绝的安装了 Oh My Zsh,然而默认的主题过于简陋,你想把它变得花哨。
在没有装任何附加主题以及插件的 Oh My Zsh 中,我常用的是叫做ys的主题。
执行omz theme set ys即可。

如果你想更进一步,我推荐 Powerlevel10k。
它的 Github 仓库链接是https://github.com/romkatv/powerlevel10k
就把它的文件 clone 到 ohmyzsh 的目录里吧~

1
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

如果你是国内的网络环境,请执行

1
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

这一步我没有尝试过使用命令,所以在这里编辑.zshrc
设置ZSH_THEME="powerlevel10k/powerlevel10k",你很快就会注意到它。

在这里如果你直接source .zshrc加载了配置文件开始 p10k 的配置,第二个锁的图标就不能正常显示了。
所以要安装「高级」的字体,也就是打了补丁的 Nerd Fonts。这是一个系列,加入了很多图标。
我喜欢 Meslo Font,你也可以换成别的,比如 ttf-jetbrains-mono-nerd

1
paru -S ttf-meslo-nerd

然后source .zshrc就可。

字体配置

一天你打开浏览器,看到了抽象的日本字体,比如的字形过窄,的点变成了竖插在上面……
这是不可接受的。
于是你执行vim ~/.fonts.conf
把以下内容写了进去:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK JP</family>
</prefer>
</alias>
</fontconfig>

fc-cache -fv
问题就聪明的解决了。

Vim

Vim 是一个文本编辑器,我们已经安装好了。
它有强大的客制化能力,你甚至可以把它变成IDE。但是在这里我只浅浅写一下美化。。
比如我的Twinkle vim config

1
2
3
git clone https://github.com/zlicdt/twinkle-vim-config.git
cd twinkle-vim-config
./install.sh

如果网络条件差也是没有办法((
请注意一下「常用软件」部分的第7号,这是一个奇妙小工具。


Arch Linux 安装教程
https://blog.zlicdt.top/2024/09/08/archlinux-installation/
作者
zlicdt
发布于
2024年9月7日
许可协议