# Installation guide (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态：本文是 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 (简体中文)