目录

ArchLinux 入门指北(一): 安装 ArchLinux

不靠谱的 ArchLinux 安装指南

前言

对于刚接触 Linux 的新手,我不建议你直接使用 Arch Linux,你可以先使用 UbuntuLinux Mint 这类新手友好,安装方便的发行版(要是 Arch Linux 安装也像那么简单,也就没有这篇指南了)。当你了解了一些 Linux 基本指令,了解了什么是包管理器,再来使用 Arch Linux 会使你对 Linux 的了解更深一个层次。

所需知识

为了顺利安装 ArchLinux,你可能需要下列知识:

  • Linux 的块设备路径(物理磁盘与分区)与硬盘的挂载
  • 传统 BIOS 与 UEFI 启动流程的区别以及所需的磁盘分区要求
  • 使用 fdiskmkfs 对硬盘进行分区、格式化
  • 会使用 nanovi/vim 等文本编辑工具

除此之外,您还需准备一个 USB 存储设备(要求不高 1G 就行,甚至可以是读卡器+SD 卡)用于创建 ArchLinux 安装介质。

本指南仅适用于 UEFI 启动的计算机,若您拥有的是非 UEFI 启动的计算机或发现指南中存在问题,请以 ArchWiki 中的内容为准。

创建 ArchLinux 安装介质

你可以前往下列任意镜像下载 ArchLinux 的 ISO 文件,文件名为:archlinxu-xxxx.xx.xx-x86_64.iso (xx 为日期

下载完成后使用任意烧录工具将镜像烧录至 USB 存储设备, eg: Etcher

启动至 ArchLinux Live

自行百度查找您主板的启动菜单热键(部分主板没有这玩意,比如华硕,在 BIOS 中直接选择启动盘即可),选择您的 USB 存储器以进入 ArchLinux Live (优先选择带有 UEFI 字样的)

若屏幕上出现了 root@archiso ~ # 则表明启动完毕

连接网络

Arch Linux 的安装必须有网络连接,整个系统的安装将从镜像站下载软件包。这也意味着安装的系统一定为当前最新版本。

首先,使用 ip addr 检查是否当前是否分配到 IP,然后使用 ping aliyun.com 检查是否正常联网。

若你使用的是无线,请使用这条指令连接到无线网络 iwctl station wlan0 connect $SSID ($SSID 替换成你所连接的网络名称)

使用下面指令切换镜像,其中的 mirror.nju.edu.cn 为南京大学,可以替换成上面任意一个镜像

1
echo 'Server = https://mirror.nju.edu.cn/archlinux/$repo/os/$arch' | tee /etc/pacman.d/mirrorlist

上面的是一键指令,当然你也可以手动修改 /etc/pacman.d/mirrorlist 文件:

1
Server = https://mirror.nju.edu.cn/archlinux/$repo/os/$arch

也可以添加多个镜像(优先级从上至下):

1
2
Server = https://mirror.nju.edu.cn/archlinux/$repo/os/$arch
Server = https://mirror.sjtu.edu.cn/archlinux/$repo/os/$arch

创建分区以及格式化并挂载

本节将使用 fdisk 工具对磁盘进行分区,若不会使用请自行搜索其用法。建议在虚拟机内练手,在本节中的误操作可能会导致数据丢失

使用 fdisk -l 可查看所有磁盘,fdisk /dev/sdx 对磁盘进行分区(x 为磁盘设备号,一般为a-z,如果磁盘是 NVMe 协议则会显示为 /dev/nvme0n1),建议按照下面内容分区(以 /dev/sda 为例):

  • 引导分区

    用于引导 Linux 系统。若该引导分区不需要安装其他引导程序(如 Windows),则改分区1MB都够用,但是vfat分区最小为8MB,请自行在 8MB~256MB 之间斟酌

  • 交换分区

    若内存足够则可以不创建交换分区。当 RAM 耗尽后,系统将使用交换分区作为备用内存使用,一般在 4GB~8GB。但是注意,一旦系统开始使用交换分区,系统将开始出现卡顿等现象。(不要过度依赖于交换分区,增加 RAM 才是硬道理!)

  • 系统分区

    用于存放系统,将被挂载至 /,可以使用btrfsext4等分区格式,但btrfs作为新格式具有写时复制,但可能会出现软件不兼容(如 LXC 中无法搭建 k8s 环境),简而言之:新格式拥有新特性,也可能与应用不兼容,请自行斟酌。

GPT 分区表(仅供参考,请详细阅读上面内容!)

分区后块路径 分区大小 分区格式 挂载点
/dev/sda1 128MB vfat /efi
/dev/sda2 4GB swap
/dev/sda3 剩余大小 ext4 或 btrfs /

格式化分区:

  • 使用 mkfs.vfat /dev/sda1 格式化引导分区

  • 使用 mkswap /dev/sda2 格式化交换分区

  • 使用 mkfs.ext4 /dev/sda3 格式化系统分区

    若系统分区想使用btrfs格式则使用 mkfs.btrfs -f /dev/sda3

挂载分区:

  • 挂载系统分区: mount /dev/sda3 /mnt
  • 创建efi文件夹:mkdir /mnt/efi
  • 挂载引导分区: mount /dev/sda1 /mnt/efi
  • 挂载交换分区: swapon /dev/sda2

安装 Arch Linux

使用 pacstrap 将 ArchLinux 安装到 /mnt

1
2
# 别急着执行,看下面详解!
pacstrap /mnt linux linux-firmware base intel-ucode networkmanager

其中:

  • linux 为 linux 内核,若想使用长期支持版内核可替换为 linux-lts,若想使用一些扩展特性可替换为 linux-zen 具体区别请自行查阅 ArchWiki

  • intel-ucode 为 Intel CPU 微码补丁,若您是 AMD CPU 请替换为:amd-ucode

  • networkmanager 为网络管理器,用于连接网络,若您安装的是 headless 即无桌面环境且具有有线连接,可以使用 base 中自带的 systemd-networkd,无需安装 networkmanager

生成 fstab

1
genfstab -U /mnt >> /mnt/etc/fstab

对新系统进行配置

使用 arch-chroot /mnt 进入新系统进行配置

修改主机名

主机名——用于在网络中识别计算机的别名,假设我们的主机名叫 steve,创建或修改下面两个文件:

/etc/hostname

1
steve

/etc/hosts

1
2
3
127.0.0.1   localhost
::1         localhost
127.0.1.1   steve

创建用户

首先设置个 root 用户的密码,用于管理系统使用:

1
passwd

然后,创建您自己的用户并设置为系统管理员:

  1. 安装并配置 sudo:
  • 安装:

    1
    
    pacman -S sudo
    
  • 配置:

    修改 /etc/sudoers

    1
    2
    3
    4
    
    # 若你想在输入密码时看见已输入字符数,则添加此行
    Defaults env_reset,pwfeedback
    # 去掉下面这行的注释,即删掉开头的 # 号
    %wheel ALL=(ALL) ALL
    
  1. 创建你自己的用户

使用以下指令创建用户并设置密码:

1
2
3
4
# 创建用户,$USER 替换成你的用户名
useradd -m -U -s /bin/bash -G wheel $USER
# 为你的用户创建密码,$USER 替换成你的用户名
passwd $USER

设置区域及语言

  • 修改时区为亚洲/上海,执行:
1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  • 将语言修改为中文:

headless 即无桌面环境无法正常显示中文,请将下列所有 zh_CN 替换为 en_US,即英文

  1. 修改文件 /etc/locale.gen 将文件中 zh_CN.UTF-8 UTF-8 前的注释去掉
  2. 执行 locale-gen
  3. 创建文件 /etc/locale.conf 写入 LANG="zh_CN.UTF-8"

安装引导

  1. 安装必要软件包:pacman -S grub efibootmgr
  2. 安装 GRUB:grub-install --efi-directory=/efi --bootloader-id=ArchLinux (若是为其他计算机安装系统请附加 --removable 参数,此操作可能会覆盖 Windows 引导文件 用于重建引导的文件 BOOTx64.efi 不影响正常使用。)
  3. 生成配置:grub-mkconfig -o /boot/grub/grub.cfg
  • 若要让 GRUB 自动寻找已安装的操作系统并自动添加,安装os-prober软件包,然后修改 /etc/default/grub 文件,添加 GRUB_DISABLE_OS_PROBER=false 保存并退出后重新生成配置

  • 要想使 linux 内核显示开机和关机 log:修改 /etc/default/grub 文件,删除 GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quite" 中的 quite 保存并退出后重新生成配置

  • 要想使 GRUB 选择界面固定分辨率:修改 /etc/default/grub 文件,添加或修改 GRUB_GFXMODE=1920x1080 保存并退出后重新生成配置,注意不要超出你显示器所支持的最大分辨率

  • 由于 GRUB 不支持写入 btrfs 格式的分区,所以不能保存上一次的选择,若出现报错,请修改 /etc/default/grub 文件,注释 GRUB_SAVEDEFAULT=true 并将 GRUB_SAVEDEFAULT=true 改为 GRUB_SAVEDEFAULT=0 保存并退出后重新生成配置

进入系统

  1. 先使用 exit 指令退出 chroot 环境。
  2. 使用 reboot 指令重启。
  3. 开机后使用创建的用户登录
  4. 启动网络管理器(同时设置自启动) 仅适用已安装 networkmanager 的系统
    sudo systemctl enable --now NetworkManager
  5. 连接到 wifi ($SSID 替换成网络名称 $PASSWD 替换成网络密码)
    nmcli device wifi connect $SSID password $PASSWD

对于没有安装 networkmanager 的 headless 客户端,请创建并修改 /etc/systemd/network/dhcp.network 文件:(仅适用于有线)

1
2
3
4
5
[Match]
Name=e*

[Network]
DHCP=yes

随后执行:

  1. sudo systemctl enable --now systemd-networkd
  2. sudo systemctl enable --now systemd-resolved

并且,建议安装 openssh 软件包,执行下面指令启动 SSH 服务,方便进入管理

  • sudo systemctl enable --now sshd

附:添加 ArchlinuxCN 软件源

修改 /etc/pacman.conf 文件,并在文件末尾添加:

1
2
[archlinuxcn]
Server = https://mirror.nju.edu.cn/archlinuxcn/$arch

执行指令安装密钥环:

1
sudo pacman -Sy && sudo pacman -S archlinuxcn-keyring