Installation guide (简体中文) - ArchWiki

Jump to content

# Installation guide (简体中文)

From ArchWiki
翻译状态：本文是 Installation guide 的翻译。上次翻译日期：2021-4-30。如果英文版本有所更改，则您可以帮助同步翻译。

本文将指导如何用官方安装镜像启动的 Live 系统安装 Arch Linux。安装介质现提供无障碍辅助功能，对此 使用无障碍辅助选项安装 Arch Linux (英文) 页面有详细描述。关于其它的安装方法, 请参阅 Category:Installation process。

建议在安装前阅读 FAQ。对于本文中使用的惯用术语，请参阅 Help:Reading。请将代码中`斜体`的部分按实际情况替换成具体内容。

有关更详细的说明，请阅读本指南内相应的 ArchWiki 文章或各类程序的手册。若需要交互帮助，可以使用 IRC 频道和论坛。

Arch Linux 能运行在最少 512 MiB 内存的 x86_64 机器上，但从安装媒介启动系统并成功安装需要更多的内存。[1] 基本安装将占用小于 2 GiB 的存储空间。由于安装过程中需要从远程存储库获取软件包，计算机将需要一个有效的互联网连接。

## 安装前的准备

### 获取安装映像

访问 下载 页面，并根据需要的引导方式，获取 ISO 文件或 netboot 映像以及相应的 GnuPG 签名。

### 验证签名

建议使用前先验证所下载文件的签名，特别是从 HTTP 镜像源 下载的文件，因为 HTTP 连接一般来说容易遭到拦截而 提供恶意镜像。

在一台已经安装 GnuPG 的系统上，可通过下载 PGP 签名 (在 下载 页面的 Checksums 下方) 到 ISO 文件所在的路径，然后用以下方式 验证：

     $ gpg --keyserver-options auto-key-retrieve --verify archlinux-version-x86_64.iso.sig

另外，在一台已经安装 Arch Linux 的计算机上可以通过以下方式验证：

    $ pacman-key -v archlinux-version-x86_64.iso.sig

注意：

- 如果安装映像是从镜像站点下载，而不是从 archlinux.org 下载的话，则签名是可以被伪造的。在这种情况下，请确保用来解码签名的公钥是被另一个可信的密钥签署的。`gpg` 命令将会输出公钥的指纹。
- 另一种验证签名的方法是确保公钥的指纹等于其中一位签署了 ISO 文件 Arch Linux 开发者的指纹。请参阅 Wikipedia:Public-key_cryptography 获取更多关于公钥加密的信息。

### 准备安装映像

安装映像可以通过 USB 闪存盘、光盘和带 PXE 的网络提供给目标机器：请按照合适的文章，使用所选映像为自己准备安装介质。

### 启动到 Live 环境

注意： Arch Linux 安装镜像不支持安全启动（Secure Boot）。要引导安装媒介，需要 禁用安全启动。如果需要，可在完成安装后重新配置 安全启动。

1. 选择从带有 Arch 安装文件的媒介启动，通常是要在 计算机开机自检 时按下某个按键，一般在启动画面会有提示。具体情况请参考主板说明书。
2. 当引导加载程序菜单出现时，选择 Arch Linux install medium 并按 `Enter` 进入安装环境。
   提示： 安装映像在 UEFI 模式下使用 systemd-boot 引导，在 BIOS 模式下使用 syslinux 引导。请参阅 README.bootparams 获取 引导参数 列表。
3. 您将会以 root 身份登录进一个虚拟控制台，默认的 Shell 是 Zsh。

如果想一边安装，一边使用 Lynx 查看本指南，可以使用 `Alt+箭头` 快捷键切换不同的控制台。要编辑配置文件，可以使用 mcedit(1)、nano 和 vim。请参阅 packages.x86_64 获取安装介质中包含的软件包列表。

### 键盘布局

控制台键盘布局默认为 `us`（美式键盘映射）。列出所有可用的键盘布局，可以使用：

    # ls /usr/share/kbd/keymaps/**/*.map.gz

如果您想要更改键盘布局，可以将一致的文件名添加进 loadkeys(1)，但请省略路径和扩展名。比如，要添加 German 键盘布局：

    # loadkeys de-latin1

控制台字体 位于 `/usr/share/kbd/consolefonts/` 目录中，设置方式请参考 setfont(8)。

根据 获取和安装 Arch Linux 中所述，下载并引导安装介质。启动完成后将会自动以 root 身份登录虚拟控制台并进入 Zsh 命令提示符。

### 验证引导模式

要验证引导模式，请用下列命令列出 efivars 目录：

    # ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误，则系统以 UEFI 模式引导。 如果目录不存在，则系统可能以 BIOS 模式 (或 CSM 模式) 引导。如果系统未以您想要的模式引导启动，请参考您的主板说明书。

### 连接到因特网

要在 Live 环境中配置网络连接，请跟随以下步骤：

- 确保系统已经启用了 网络接口，用 ip-link(8) 检查:

      # ip link

- 对于无线局域网（Wi-Fi）和无线广域网（WWAN），请确保网卡未被 rfkill 禁用。

- 要连接到网络:
  - 有线以太网 —— 连接网线。
  - WiFi —— 使用 iwctl 验证无线网络。
  - 移动宽带调制解调器（移动网卡） - 使用 mmcli 实用程序连接到移动网络。

- 配置网络连接:
  - DHCP: 动态 IP 地址和 DNS 服务器分配（由 systemd-networkd 和 systemd-resolved 提供机能）对于 有线以太网、无线局域网（WLAN） 和 无线广域网（WWAN） 网络接口来说应该能开箱即用。
  - 静态 IP 地址: 按照 Network configuration#Static IP address 进行操作。

- 用 ping 检查网络连接:

      # ping archlinux.org

注意： 默认情况下，安装映像已预配置好并启用了 systemd-networkd、systemd-resolved、iwd 和 ModemManager。但已经安装好了的系统并非如此。

### 更新系统时间

使用 timedatectl(1) 确保系统时间是准确的：

    # timedatectl set-ntp true

可以使用 `timedatectl status` 检查服务状态。

### 建立硬盘分区

系统如果识别到磁盘，就会将其分配为一个块设备，如 `/dev/sda`、`/dev/nvme0n1` 或 `/dev/mmcblk0`。可以使用 lsblk 或者 fdisk 查看：

    # fdisk -l

结果中以 `rom`、`loop` 或者 `airoot` 结尾的设备可以被忽略。

对于一个选定的设备，以下分区是必须要有的：

- 一个根分区（挂载在 根目录）`/`；
- 要在 UEFI 模式中启动，还需要一个 EFI 系统分区。

如果需要创建多级存储例如 LVM、disk encryption 或 RAID，请在此时完成。

请使用 fdisk 或 parted 修改分区表。例如：

    # fdisk /dev/the_disk_to_be_partitioned（要被分区的磁盘）

#### 分区示例

BIOS 与 MBR
挂载点 | 分区 | 分区类型 | 建议大小
--- | --- | --- | ---
`[SWAP]` | `/dev/swap_partition（交换空间分区）` | Linux swap (交换空间) | 大于 512 MiB
`/mnt` | `/dev/root_partition（根分区）` | Linux | 剩余空间

UEFI 与 GPT
挂载点 | 分区 | 分区类型 | 建议大小
--- | --- | --- | ---
`/mnt/boot` 或 `/mnt/efi` | `/dev/efi_system_partition（efi 系统分区）` | EFI 系统分区 | 至少 260 MiB
`[SWAP]` | `/dev/swap_partition（交换空间分区）` | Linux swap (交换空间) | 大于 512 MiB
`/mnt` | `/dev/root_partition（根分区）` | Linux x86-64 根目录 (/) | 剩余空间

另请参阅 布局示例。

注意：

- 如果文件系统支持，交换空间也可以设在交换文件上。
- 如果想要引导的磁盘上 已经有一个 EFI 系统分区 了，请不要再创建一个，而是使用现有的分区。

### 格式化分区

当分区建立好了，每个新建立的分区都需要使用合适的 文件系统 进行格式化。举个例子，要在根分区 `/dev/root_partition` 上创建一个 Ext4 文件系统，运行：

     # mkfs.ext4 /dev/root_partition（根分区）

如果创建了 交换分区，请使用 mkswap(8) 将其初始化：

     # mkswap /dev/swap_partition（交换空间分区）

详情请参阅 文件系统#创建文件系统。

注意： 对于堆叠式块设备（stacked block devices）请使用恰当的块设备路径替换上文中的 `/dev/*_partition` 处。

### 挂载分区

将根磁盘卷 挂载 到 `/mnt`，例如：

    # mount /dev/root_partition（根分区） /mnt

然后使用 mkdir(1) 创建其他剩余的挂载点（比如 `/mnt/efi`）并挂载其相应的磁盘卷。

注意： 挂载分区一定要遵循顺序，先挂载根（root）分区（到 `/mnt`），再挂载引导（boot）分区（到 `/mnt/boot` 或 `/mnt/efi`，如果单独分出来了的话），最后再挂载其他分区。否则您可能遇到安装完成后无法启动系统的问题。

如果创建了 swap 交换空间卷，请使用 swapon(8) 启用它：

    # swapon /dev/swap_partition（交换空间分区）

稍后 genfstab(8) 将自动检测挂载的文件系统和交换空间。

## 安装

### 选择镜像

文件 `/etc/pacman.d/mirrorlist` 定义了软件包会从哪个镜像源下载。在 LiveCD 启动的系统上，在连接到因特网后，reflector 会通过选择 20 个最新同步的 HTTPS 镜像并按下载速率对其进行排序来更新镜像列表。[2]

在列表中越前的镜像在下载软件包时有越高的优先权。您或许想检查一下文件，看看是否满意。如果不满意，可以相应的修改 `/etc/pacman.d/mirrorlist` 文件，并将地理位置最近的镜像源挪到文件的头部，同时也应该考虑一些其他标准。

这个文件接下来还会被 pacstrap 拷贝到新系统里，所以请确保设置正确。

### 安装必需的软件包

使用 pacstrap(8) 脚本，安装 base 软件包和 Linux 内核以及常规硬件的固件：

    # pacstrap /mnt base linux linux-firmware

提示：

- 可以将 linux 替换为 kernel 页面中介绍的其他内核软件包。
- 在虚拟机或容器中安装时，可以不安装固件软件包。

base 软件包并没有包含 Live 环境中的全部程序。因此要获得一个功能齐全的基本系统，可能需要安装其他软件包。特别要考虑安装：

- 管理所用文件系统的用户工具（比如 XFS 和 Btrfs 对应的管理工具）；
- 访问 RAID 或 LVM 分区的工具；
- 未包含在 linux-firmware 中的额外固件；
- 联网所需要的程序（如：networkmanager、iwd 等）；
- 文本编辑器（如：nano、vim 等）；
- 访问 man 和 info 页面中文档的工具：man-db，man-pages 和 texinfo。

要安装其他软件包或软件包组（比如 base-devel），请将它们的名字追加到上文的 pacstrap 命令后 (用空格分隔)，或者也可以在 Chroot 进新系统后使用 pacman 手动安装软件包或软件包组。packages.x86_64 中可以看到不同软件包或软件包组间的差异。

## 配置系统

### Fstab

用以下命令生成 fstab 文件 (用 `-U` 或 `-L` 选项设置UUID 或卷标)：

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

强烈建议在执行完以上命令后，后检查一下生成的 `/mnt/etc/fstab` 文件是否正确。

### Chroot

Change root 到新安装的系统：

    # arch-chroot /mnt

### 时区

要设置时区：

    # ln -sf /usr/share/zoneinfo/Region（地区名）/City（城市名） /etc/localtime

提示： 以要设置为上海时区为例，请运行 `# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime`

然后运行 hwclock(8) 以生成 `/etc/adjtime`：

    # hwclock --systohc

这个命令假定已设置硬件时间为 UTC 时间。详细信息请查看 System time#Time standard。

### 本地化

程序和库如果需要本地化文本，都依赖 Locale，后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。

需在这两个文件设置：`locale.gen` 与 `locale.conf`。

编辑 `/etc/locale.gen`，然后取消掉 `en_US.UTF-8 UTF-8` 和其他需要的 地区 前的注释（#）。

接着执行 `locale-gen` 以生成 locale 信息：

    # locale-gen

然后创建 locale.conf(5) 文件，并 编辑设定 LANG 变量，比如：

    /etc/locale.conf

    LANG=en_US.UTF-8

另外对于中文用户：

提示：

- 用户可以设置自己的 locale，详情请参阅 Locale#Overriding system locale per user session 或 Locale (简体中文)#设置当前区域；
- 将系统 locale 设置为 `en_US.UTF-8` ，系统的 log 就会用英文显示，这样更容易判断和处理问题；
  - 也可以设置为 `en_GB.UTF-8` 或 `en_SG.UTF-8`，附带以下优点：
    - 进入桌面环境后以 24 小时制显示时间；
    - LibreOffice 等办公软件的纸张尺寸会默认为 `A4` 而非 `Letter(US)`；
    - 可尽量避免不必要且可能造成处理麻烦的英制单位。
  - 设置的 LANG 变量需与 locale 设置一致，否则会出现以下错误：
    - `Cannot set LC_CTYPE to default locale: No such file or directory`

警告： 不推荐在此设置任何中文 locale，会导致 tty 乱码。

如果需要修改 #键盘布局，可编辑 vconsole.conf(5) 使其长期生效，例如：

    /etc/vconsole.conf

    KEYMAP=de-latin1

### 网络配置

创建 hostname 文件:

    /etc/hostname

    myhostname（主机名）

添加对应的信息到 hosts(5):

    /etc/hosts

    127.0.0.1	localhost
    ::1		localhost
    127.0.1.1	myhostname.localdomain	myhostname # 主机名.本地域名 主机名

如果系统有常设的 IP 地址，请使用这个常设的 IP 地址而不是 `127.0.1.1`。

请注意，目前的 base 不含有任何网络管理工具。对于新安装的系统环境，请接着完成网络配置，配置过程中可能包括要安装合适的网络管理软件。

### Initramfs

通常不需要自己创建新的 initramfs，因为在执行 pacstrap 时已经安装 linux，这时已经运行过 mkinitcpio 了。

对于 LVM、 system encryption 或 RAID 等分区配置，请修改 mkinitcpio.conf 并用以下命令重新创建一个 Initramfs：

    # mkinitcpio -P

### Root 密码

设置 Root 密码：

    # passwd

### 安装引导程序

需要安装 Linux 引导加载程序,才能在安装后启动系统，可以使用的的引导程序已在 启动加载器 中列出，请选择一个安装并配置它，GRUB (简体中文) 是最常见的选择。

如果有 Intel 或 AMD 的 CPU，请另外启用 微码 更新。

警告： 这是安装的最后但也至关重要的一步，请按上述指引正确安装好引导加载程序后再重新启动。否则将无法正常进入系统。

## 重启

输入 `exit` 或按 `Ctrl+d` 退出 chroot 环境。

可选用 `umount -R /mnt` 手动卸载被挂载的分区：这有助于发现任何「繁忙」的分区，并通过 fuser(1) 查找原因。

最后，通过执行 `reboot` 重启系统，systemd 将自动卸载仍然挂载的任何分区。不要忘记移除安装介质，然后使用 root 帐户登录到新系统。

## 安装后的工作

系统管理引导，图形用户界面的安装、声音管理、触摸板支持等后期工作参见 General recommendations (简体中文)。

感兴趣的各类程序，请参见 List of applications (简体中文)。

Category:

- Installation process (简体中文)