# Beginners' guide (简体中文)

相关文章

- Category:Accessibility
- 安装指南
- Network Installation Guide
- Install from SSH
- 通用建议
- General Troubleshooting

翻译状态： 本文是英文页面 Beginners'_Guide 的翻译，最后翻译时间：2014-04-02，点击这里可以查看翻译后英文页面的改动。

欢迎，本向导写给 Arch 新用户，但是会尽量做到成为所有用户的参考和信息库。

本文档将指导您使用Arch 安装脚本安装Arch Linux：一个简单、轻量级、适合计算机水平较高用户使用的发行版。建议安装前先浏览一下FAQ。

社区维护的 Arch Wiki 是出色的资源，有问题先查 Arch Wiki。如果你在其他地方找不到问题的答案, IRC 频道 (irc://irc.freenode.net/#archlinux-cn) 和论坛都是提问的好地方。同时，在对任何命令的使用有疑问的时候，都应该使用`man`查询手册。

## 准备

注意: 要从已经存在的GNU/Linux发行版安装Arch Linux，请参阅这篇文章。这种方式特别适用于通过VNC或SSH进行的远程安装。要通过SSH连接远程安装Arch Linux，请阅读：自SSH安装；

### 系统需求

Arch Linux当可运行于任何i686兼容机中，一个极限精简的系统需要至少64MiB的RAM。一个包括base组中所有包的基本安装将占用约800MiB的磁盘空间。若使用有限的存储空间，手动选择base组中的包进行安装可节省更多空间，前提是你必须知道你在做什么。

注意: 使用官方LiveCD至少需要256MiB内存；

### 刻录或写入最新的安装媒介

最新的官方Arch Linux安装媒介可自download页获得，请选择离你较近的一个镜像以获得更快的下载速度。注意这里只有一个iso镜像文件，但它可同时支持32位与64位的CPU。建议每次安装前都下载并使用最新版本。

- 安装镜像有签名，强烈建议在安装之前校验签名。从download页（或者镜像列表中的一项）下载 .sig 文件，并把它放到和 .iso 相同的文件夹下。在Arch Linux下，以root身份运行`pacman-key -v iso-file.sig`命令。在其他环境下使用，直接运行`gpg2 --verify iso-file.sig`。亦提供md5与sha1校验和文件以在gpg2不可用的环境中校验文件完整性。

注意: 若你没有下载对应于RSA密钥ID的公钥，gpg2校验将失败。详细内容可参见：http://sparewotw.wordpress.com/2012/10/31/how-to-verify-signature-using-sig-file/

- 用你喜欢的软件把ISO映像文件刻录到光盘上。Arch Linux中可以通过 光盘烧录方法进行.

注意: 不同刻录机和光盘的质量差别是非常大的。为得到可靠的刻录质量，通常使用低速刻录。若遇到刻录异常的情况，请试着将速度调至系统支持的最低速。

- 也可以不刻录光盘而是通过U盘安装Arch Linux，亦参见：用U盘安装Arch Linux.

#### 通过网络安装

如果你选择通过网络安装，就没必要刻录光盘或者写U盘了，可以直接网络启动.iso映像文件，但前提是你已经设置好一个服务器。细节请参考PXE，然后继续启动安装程序。

#### 在虚拟机中安装

使用虚拟机安装是熟悉Arch Linux的一个更加方便的途径，这种安装过程不需要离开你正在运行的操作系统，也不需要重新为硬盘分区。虚拟机还允许你一边开着浏览器查看Beginners' guide一边安装系统。一些用户可能会发现，如果以尝试和探索为目的，在虚拟机里安装一个独立的Arch Linux操作系统会带来很多好处。

常见的虚拟机软件有VirtualBox、VMware、QEMU、Xen、Varch、Parallels。如果你是Windows用户，建议使用VirtualBox。

不同虚拟机软件的使用方法大同小异，一般有一下几步：

1. 创建虚拟硬盘镜像，用来装载操作系统
2. 适当的配置虚拟机参数
3. 将下载的ISO镜像作为CD设备启动
4. 继续按照下面的教程安装

下面的文章对你也许有帮助：

- VirtualBox 中安装 Arch Linux
- Installing Arch Linux from VirtualBox
- VirtualBox Arch Linux Guest On Physical Drive
- Installing Arch Linux in VMware
- Moving an existing install into (or out of) a virtual machine

### 引导安装媒介

插入准备好的光盘或U盘，然后用它启动电脑。在 BIOS 里改变一下启动顺序，通常是在启动后的加电自检过程中按`Delete` / `Enter` / `Esc` / `F1` / `F2` / `F8` / `F10` / `F11`或`F12`。

从菜单选`Boot Arch Linux`并按回车，系统将加载并给出登录提示并自动以`root`登录。

提示:

- 基本安装所需内存为256MiB；
- 通过SSH连接远程安装的用户需要进行一些特殊的调整才能`ssh`到Live环境，请参阅通过SSH安装。
- Live环境所提供的shell为zsh，它能提供更好的Tab补全，以及grml config的其他特性。

##### 检查是否启动到UEFI模式

如果使用的是UEFI主板并且UEFI启动模式已启用，安装程序会自动启动内核（通过Gummiboot启动内核EFISTUB）。要测试系统是否已启动到UEFI模式，运行：

    # mount -t efivarfs efivarfs /sys/firmware/efi/efivars  #若已被挂载，则忽略之；
    # efivar -l

如果`efivar`正确给出UEFI变量那么系统是在UEFI模式下启动。请确认UEFI 变量要求都已满足。

#### 启动问题疑难解答

- 若使用英特尔显卡，在引导阶段可能黑屏，此或与KMS有关。一个可能的解决方法是重启电脑，并在引导菜单上按`Tab`键进入内核选项。在最后加上一个空格后加上`nomodeset`然后按`Enter`。另外也可以试一下`video=SVIDEO-1:d`，这种方法若可用的话不会禁用KMS，此外还可以试试 `i915.modeset=0`。参见此处以获取更多信息。
- 若屏幕不是空白，而是在启动过程中装入内核时卡住，可按`Tab`编辑内核行，在最后加入`acpi=off`然后按`Enter`.

## 安装

你将看到一个命令提示符，自动以`root`登陆。要编辑文本文件，`nano`是推荐的选择；若不知到当如何使用它，可参见Nano#nano_usage。如果系统会和 Windows 双启动，请阅读 这里.

### 修改语言

提示:

- 对于大部分以中文为母语的用户，此为非必要操作，请跳至#建立网络连接；
- 仅在这些情况下需要：打算编辑包含非ASCII字符的配置文件、在WiFi密码中使用了变声记号、需要显示非英语的系统信息（如错误信息）。在此的修改仅影响安装过程。

键盘布局默认为`us`（美式键盘映射），若正在使用非美式键盘布局，通过以下的命令选择相应的键盘映射表：

    # loadkeys layout

将layout换为你的键盘布局，如`fr`，`uk`，`dvorak`或`be-latin1`。这里有国家与二位代码的映射表。可使用命令`localectl list-keymaps`查看可用的键盘布局。

多数语言使用多于26个英文字母的字形，因此字体也需要进行相应的修改，否则这些语言的文字会显示成白方块。注意这些名称是区分大小写的：

    # setfont Lat2-Terminus16

系统默认将语言设为美式英语。若想在安装过程中使用其他语言（以德语为例），从`/etc/locale.gen`中去掉相应locale前的`#`。请选择含`UTF-8`的行。

    # nano /etc/locale.gen

    en_US.UTF-8 UTF-8
    de_DE.UTF-8 UTF-8

    # locale-gen
    # export LANG=de_DE.UTF-8

### 建立网络连接

注意: 从systemd 197开始，udev不再按照wlanX，ethX的方式分配网络接口的名字。若你是从其他发行版转来，请不要认为有线接口名字就是eth0，无线接口是wlan0；请用`ip link`命令查看接口的名字；

安装程序会自动运行`dhcpcd`以尝试配置有线连接。可以通过`ping`检查网络链路是否可用。

    # ping -c 1 t.cn

    PING t.cn (180.149.135.224) 56(84) bytes of data.
    64 bytes from 180.149.135.224: icmp_seq=1 ttl=128 time=6.31 ms

    --- t.cn ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 6.315/6.315/6.315/0.000 ms

若遇：`ping: unknown host`错误，表示网络不通；先检查网线接触是否良好，无线信号是否足够，若没有问题，需要用下面方法手动配置。

若已连通，跳至#准备存储设备。

#### 有线连接

若使用静态ip配置连接到有线网络，请使用如下方式配置。

首先，禁用自动启动的 dhcpcd 服务:

    # systemctl stop dhcpcd

用ip命令查看有线连接的接口名字。

    # ip link

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: enp2s0f0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
        link/ether 00:11:25:31:69:20 brd ff:ff:ff:ff:ff:ff
    3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000
        link/ether 01:02:03:04:05:06 brd ff:ff:ff:ff:ff:ff

此例中，有线连接的接口名字为`enp2s0f0`。若你不确定的话，有线连接一般以「e」开头，一般不会以「lo」或「w」开头。

你需要以下信息：

- 静态IP地址
- 子网掩码
- 网关IP地址
- 域名服务器(DNS)IP地址
- 域名 (若是本地局域网，可任意取名)

激活接口，(例如`enp2s0f0`):

    # ip link set enp2s0f0 up

添加地址:

    # ip addr add <ip 地址>/<掩码位数> dev <接口名>

例如:

    # ip addr add 192.168.1.2/24 dev enp2s0f0

更多信息参见：`man ip`

用类似下面的命令添加网关，ip 地址替换为实际的网关地址：

    # ip route add default via <ip 地址>

例如:

    # ip route add default via 192.168.1.1

编辑 `/etc/resolv.conf` 如下, 替换你的DNS服务器IP地址和本地域名:

    # nano /etc/resolv.conf

     nameserver 8.8.4.4
     nameserver 8.8.8.8

注意: 目前，你最多只能包含三行`nameserver`字段. 要突破限制，请使用本地域名缓存，例如 Dnsmasq。

这时应该已经有一个可用的有线网络了；若没有，请查阅详细的网络配置页面。

#### 无线网络

若需用Wi-Fi连接网络，请采用以下步骤。

现在在安装媒体中已经包含了无线网络驱动和工具。对无线网络硬件有一定的了解是完成无线网络设置的重要前提。注意下面的在安装时执行的快速设置过程中会初始化live环境中的无线网络硬件。安装好系统以后，无线网络设置(或其他无线管理操作)需要再次执行一遍。

并且注意如果安装过程中并不需要无线网络，不需执行下面的步骤。可以在系统安装好之后再设置无线网络功能。

首先确定网络接口名称：

    # iw dev

    phy#0
            Interface wlp3s0
                    ifindex 3
                    wdev 0x1
                    addr 00:21:6a:5e:52:bc
                    type managed

提示: 某些情况下，`iw dev`或不能正确显示所有802.11设备，此时可以`iwconfig`替代之；

下面的示例中使用`wlp3s0`作为接口，`linksys`作为ESSID。请依实际情况修改。

注意: 输出和下面不相似表示驱动没有载入，需要自己加入；参见无线配置。

- 启用接口：

    # ip link set wlp3s0 up

为了检验接口是否打开，你可以查看以下命令的输出：

    # ip link show wlp3s0

    3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DOWN mode DORMANT group default qlen 1000
        link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

若显示类似于`<BROADCAST,MULTICAST,UP,LOWER_UP>`则代表接口是`开启`状态，否则为`关闭`状态。

除了驱动，部分无线网卡还需要固件。内核一般会自动探测并加载固件，如果启用网络时，缺少固件的接口会提示错误：`SIOCSIFFLAGS: No such file or directory`。若不确定，用`dmesg`查询内核日志，看看有没有来自无线网卡的固件请求。Intel芯片组在启动时请求固件的例子：

    # dmesg | grep firmware

    firmware: requesting iwlwifi-5000-1.ucode

若无输出，表示系统的无线芯片不需要固件。

警告: 网卡需要的无线接口固件包在 live 环境中被预先安装到了`/lib/firmware`，但是必须特别安装到实际的系统才能在重启后提供无线功能！本向导的后面会介绍软件包的选择和安装。请确保在软件包选择的时候选中需要的无线模块和固件！如有任何疑问，参见：无线设置，这是常见错误。

然后使用netctl提供的`wifi-menu`连接到网络：

    # wifi-menu wlp3s0

到此，无线网络当已联通；如遇问题，参见：无线配置。

##### 不使用 wifi-menu

这是另一种手动配置方法；先扫描网路：

    # iw dev wlp3s0 scan | grep SSID

连接网络：

    # wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase "ssid" "psk")

将ssid替换为实际网络的名称，psk替换为无线密码，请保留引号。最后，用`dhcp`获取IP地址：

    # dhcpcd wlp3s0

若不行，尝试这个方案：

    # echo 'ctrl_interface=DIR=/run/wpa_supplicant' > /etc/wpa_supplicant.conf
    # wpa_passphrase <ssid> <passphrase> >> /etc/wpa_supplicant.conf
    # ip link set <interface> up # May not be needed as dhcpcd should bring it up but may be needed for wpa_supplicant.
    # wpa_supplicant -B -D nl80211 -c /etc/wpa_supplicant.conf -i <interface name>
    # dhcpcd -A <interface name>

如果 wpa_supplicant 提示 Driver 不支持，请删除 "-D nl80211" 参数:

    # wpa_supplicant -B -c /etc/wpa_supplicant.conf -i <interface name>

#### xDSL(PPPoE)，模拟调制解调器或ISDN

若使用拨号网络或ISDN，请阅读Direct Modem Connection。

#### 位于代理服务器后面

若通过代理服务器连接网络，你需要export`http_proxy`与`ftp_proxy`变量。查看这里以获取更多信息。

### 准备存储设备

警告: 操作磁盘分区有时会毁掉原数据。强烈建议先备份重要的数据。

- 如果要安装 Arch Linux 到U盘（USB随身碟），请阅读：在U盘上安装Arch Linux。
- 如果要创建复杂的块设备，例如 LVM, disk encryption 或 RAID，请现在进行。

#### 选择分区表类型

可选择使用GPT或MBR。建议阅读 选择GPT或MBR 以作出选择。

- 推荐所有UEFI使用者使用GPT分区格式，有些UEFI固件不支持UEFI-MBR启动。
- 有些BIOS不支持GPT，参见[1][2]

#### 分区工具

新手建议使用图形化的分区工具。GParted是个很不错的选择。硬盘在使用前需要先分区，然后将分区格式化为需要的文件系统。

gparted 可能更容易使用，如果仅要创建几个分区，可以通过fdisk或其他程序快速完成，这些工具在安装盘里面已经包含。在下一章节会介绍gdisk与fdisk的用法。

#### 分区方案

你可以决定磁盘应该分为多少个区并且每个分区挂载在系统的哪个目录。 将分区如何映射至目录(一般称此为挂载点)取决于你的分区方案。最简单但也不坏的选择，是仅仅分一个大的`/`分区。另一个通常的选择是一个 `/`和一个`/home`分区。

额外需要的分区:

- 如果你使用UEFI主板，你需要创建一个额外的EFI系统分区。
- 如果你使用BIOS主板(或者计划以兼容BIOS模式引导)，并且你希望在GPT分区驱动器上安装GRUB，你需要创建一个额外的1至2MiB，类型代码为`EF02`的BIOS引导分区。syslinux不需要这个分区。
- 如果你需要加密磁盘，则必须在分区方案中有所体现。在系统安装后再配置加密文件夹，容器或home目录也是没有问题的。

如果你想现在设定交换分区，参见 Swap 获取更多信息；使用交换文件的话，修改文件的大小比修改分区大小更方便，但是目前交换文件不支持放在btrfs上。

#### 分区示例

当前安装盘包含如下工具：`fdisk`, `gdisk`, `cfdisk`, `cgdisk`, `parted`.

提示: 用`lsblk -f`或`lsblk -o NAME,FSTYPE,SIZE,LABEL`命令显示连接到系统的硬盘和分区，这样可以确定要使用的分区。

此例使用`fdisk`，将`fdisk`替换为`cgdisk`可以使用新的GPT分区。

示例硬盘将划分为15GB的根分区`/`、剩下的作为`/home`，选择MBR或GPT其中的一个。

需要再次强调的是，真正的分区取决于个人的选择，此处的示例仅供参考。详细分区方案介绍参见此处。

##### 通过 cgdisk 创建 GPT 分区

    # cgdisk /dev/sda

根分区:

- 在第一个扇区 (2048) 上选择 New (或者按`N`) – `Enter` – 输入`15G` – `Enter` 保持默认的十六进制码 (8300) – `Enter` 让分区名留空。

Home分区:

- 按几次下箭头让光标移动到大的空白分区。
- 在第一扇区选择 New (或者按 `N`) – `Enter` – `Enter` 使用全部剩余空间 (或者你也可以输入确定的分区大小，比如 "30G") – `Enter` 保持默认的十六进制码 (8300) – `Enter` 让分区名置空。

完成之后，分区界面应该类似下面这样：

    Part. #     Size        Partition Type            Partition Name
    ----------------------------------------------------------------
                1007.0 KiB  free space
       1        15.0 GiB    Linux filesystem
       2        123.45 GiB  Linux filesystem

请再次仔细检查分区大小和布局是否正确。

确认无误后，选择Write (或者按 `Shift+W`) 完成分区，并输入`yes`将修改写入磁盘，然后退出。如果要重新开始，可以选择 Quit 退出分区程序。

##### 用 fdisk 建立 MBR 分区

注意: 安装介质中亦有一个叫`cfdisk`的工具，它提供与`cgdisk`相似的UI；但目前在某些情况下（譬如需要以btrfs为根分区并使用grub引导器时）还不能正确对齐第一分区（准确的说是无法手动调整一个分区的开端部分）；这就是为何我们会在这里建议使用经典分区工具`fdisk`的原因。

用以下命令运行 fdisk :

    # fdisk /dev/sda

- `Command (m for help):` 输入 `o` 并按下 `Enter`

然后建立第一个分区:

1. `Command (m for help):` 输入 `n` 并按下 `Enter`
2. Partition type: `Select (default p):` 按下 `Enter`
3. `Partition number (1-4, default 1):` 按下 `Enter`
4. `First sector (2048-209715199, default 2048):` 按下 `Enter`
5. `Last sector, +sectors or +size{K,M,G} (2048-209715199....., default 209715199):` 输入 `+15G` 并按下 `Enter`

然后建立第二个分区:

1. `Command (m for help):` 输入 `n` 并按下 `Enter`
2. Partition type: `Select (default p):` 按下 `Enter`
3. `Partition number (1-4, default 2):` 按下 `Enter`
4. `First sector (31459328-209715199, default 31459328):` 按下 `Enter`
5. `Last sector, +sectors or +size{K,M,G} (31459328-209715199....., default 209715199):` 按下 `Enter`

现在预览下新的分区表:

- `Command (m for help):` 输入 `p` 并按下 `Enter`

    Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x5698d902

       Device Boot     Start         End     Blocks   Id  System
    /dev/sda1           2048    31459327   15728640   83   Linux
    /dev/sda2       31459328   209715199   89127936   83   Linux

然后向磁盘写入这些改动：

- `Command (m for help):` 输入 `w` 并按下 `Enter`

如果一切顺利无错误的话 fdisk 程序将显示如下信息：

    The partition table has been altered!

    Calling ioctl() to re-read partition table.
    Syncing disks.

若因fdisk遇到错误导致以上操作无法完成，可以`q`命令来退出。

#### 创建文件系统

分区之后，还需用`mkfs`将分区格式化为指定的文件系统。本例中 root 和 home 分区都使用 ext4；

警告: 请务必再三检查你的操作，因为以下的操作将会格式化对应的分区。 你可以使用 `lsblk -f`查看磁盘的分区状态。

    # mkfs.ext4 /dev/sda1
    # mkfs.ext4 /dev/sda2

若你分了一个swap区，不要忘了格式化和启用它：

    # mkswap /dev/sdaX
    # swapon /dev/sdaX

UEFI用户需要格式化ESP分区(假设是 /dev/sda1)：

    # mkfs.vfat -F32 /dev/sda1

### 挂载分区

每一个分区都有一个明确的数字标识，要检查当前磁盘的标识符和布局：

    # lsblk -f

记下将要安装 Arch 的磁盘&分区。每个分区都能通过一个数字后缀来辨认。如：`sda1`即指某一磁盘的第一分区，而`sda`则表示整个磁盘。

注意: 不要在同一个目录挂载多个分区，而且依序挂载很重要。

注意要按照顺序挂载，先挂载根分区到`/mnt`.

    # mount /dev/sda1 /mnt

然后挂载`/home`分区和其余单独分区(`/boot`，`/var`等)。

    # mkdir /mnt/home
    # mount /dev/sda2 /mnt/home

如果是UEFI主板，挂载UEFI分区(以挂载至`/boot为例`)：

    # mkdir -p /mnt/boot
    # mount /dev/sdXY /mnt/boot

### 选择安装镜像

安装前需要编辑`/etc/pacman.d/mirrorlist`，将最想使用的镜像放到前面。mirrorlist文件也会被`pacstrap`复制到新系统，所以最好现在就设置好；以清华源为例：

    # nano /etc/pacman.d/mirrorlist

    ##
    ## Arch Linux repository mirrorlist
    ## Sorted by mirror score from mirror status page
    ## Generated on 2012-MM-DD
    ##

    Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
    ...

如果你愿意，你可以只使用一个镜像并删除其他的行；但通常的做法是保留其他几个离你较近的镜像作备用。

提示:

- 使用镜像列表生成器可自动根据更新状况生成离你比较近的镜像列表。HTTP镜像因为一个叫keepalive的东西所以通常来说要比FTP快。使用FTP镜像，pacman在下载每一个包的时候都会发送一个信号，这个会导致短暂的停顿。一个更多生成镜像的方法，可以查看 镜像排序 和 按照速度排列镜像。
- Arch Linux镜像状态报告了各镜像的状态，包括网络问题、数据收集问题、上次同步时间等。

注意:

- 一旦更改了镜像列表，请务必记得使用`pacman -Syy`强制刷新。这绝对是一个良好的习惯，它可以避免一些可能的麻烦。查看此处以获得更多信息。
- 若你使用一个比较旧的安装媒介，你的镜像列表或许已经过期，这会导致升级/安装Arch Linux时出现问题(参见 FS#22510)。因此建议使用上面提及的方法更新镜像列表。
- 有些问题被报告到Arch Linux官方论坛，是一些由于网络导致的pacman无法更新、同步的问题。(参考 [3]、[4])。在实体机器中安装Arch Linux时，我们使用更换pacman的默认下载器的方法来应对这个问题(参考这里)。当把Arch Linux作为客户系统来安装在VirtualBox中时，这个问题可以通过在设置中使用宿主网卡而不是「NAT」来得到解决。

### 安装基本系统

使用 pacstrap 来安装基本系统；如果你不想手动选择安装哪个包，开关`-i`可以忽略：

    # pacstrap -i /mnt base base-devel

base
  来自[core]的软件包，构成最小基本系统。
base-devel
  来自[core]的附加工具组，包含如make、gcc与automake这样的软件包。

提示:

- base-devel是非必须的，但大多数Arch Linux用户都会安装它以构建AUR中的软件包。
- 若不知道还需要什么软件，先跳过，后面用pacman安装。

注意:

- 在配置完镜像列表后，若运行`pacstrap`时卡住并出现：`failed retrieving file 'core.db' from mirror... : Connection time-out`字样，请尝试手动更换DNS；
- 如果安装的时候请求 PGP key，请允许下载 Key，如果您使用的 Arch ISO 比较老的时候会发生这个问题。
- 若pacman在安装时提示无法验证软件包，请以`Ctrl+C`终止安装过程，以`cal`检查系统时间。若发现系统时间是无效的(如，未来时间)，验证签名时将会提示过期或无效从而导致pacman无法安装软件包。请修正你的系统时间，可运行`ntpd -qg`命令并重试。参考 系统时间 以获得关于如何校准时间的更多讯息。
- 若pacman报告安装时遇到错误的签名(`error: failed to commit transaction (invalid or corrupted package)`)，请运行如下命令：

    # pacman-key --init && pacman-key --populate archlinux

### 生成 fstab

用以下命令生成fstab；`-U`开关会以UUID指定分区，使用`-L`会以卷标指定分区：

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

警告: 建议在生成fstab后检查一下它是否正确；若发现问题，请不要再次运行`genfstab`——直接手动以文本编辑器修复它。
小贴士:

fstab(file systems table的缩写)是系统配置的一部分，该文件列出所有可用的磁盘和分区，并指明它们初始化的方式或整合至全局文件系统的方式。`/etc/fstab`文件一般被`mount`命令读取，`mount`以设备上的文件系统为参数，将其添加到主目录结构。在启动过程执行到3/4左右的时候会调用`mount -a`，`mount -a`读取`/etc/fstab`以确定挂载时使用的选项。如果`noauto`位于`/etc/fstab`中的文件系统挂载参数之后，`mount -a`不会在启动时挂载它。仅根分区需要在最后使用`1`，其它可以使用`2`或`0`(参见fstab字段定义)。

- 最后一列决定分区在启动时进行磁盘检查的顺序：只有非btrfs格式的根分区(`/`)需要将最后一列设为`1`，其它应该为`2`或`0`(亦参见fstab字段定义)。
- btrfs和swap分区的最后一列须设置成`0`。

### Chroot 到新系统

下面要chroot到新系统：

    # arch-chroot /mnt /bin/bash

提示: 或者arch-chroot /mnt 进入 sh shell。

到这一步之后，开始系统的主要配置；如果文件不存在，需要手动创建。
理解并依照步骤进行完全安装是保证系统配置成功的关键。

### 配置系统

#### Locale

glibc和其他一些支持本地化的程序或者库使用locale(s)自动翻译输出各种语言的「独特」文本，并且显示合适的地域、货币、时区以及日期格式、字符排列方式和其他一些本地化的特定标准。

需要编辑两个文件：`locale.gen`与`locale.conf`。 `/etc/locale.gen`是一个仅包含注释文档的空文件，为`locale-gen`提供设置选项。选定你需要的本地化类型(移除对应项前面的`＃`即可)，请选择包含`UTF-8`的行：

    en_US.UTF-8 UTF-8
    zh_CN.UTF-8 UTF-8
    zh_TW.UTF-8 UTF-8

`/etc/locale.gen`生成指定的本地化文件，每次glibc更新之后也会运行`locale-gen`一次。

- `locale.conf`默认不存在，一般设置`LANG`项就行了，它是其它设置的默认值。

    # nano /etc/locale.conf

    LANG=en_US.UTF-8

警告: 不推荐在此设置中文locale，会导致tty乱码；
提示: 要使用其它`LC_*`变量，先运行`locale`查看可用选项；高级示例可参阅此处.不建议使用`LC_ALL`变量，因为它会覆盖全部设置；

#### 终端字体和键盘映射

提示: 对于大部分以中文为母语的用户，此为非必要操作；请跳至#时区；

以德语为例：

    # loadkeys de-latin1
    # setfont Lat2-Terminus16

    # nano /etc/vconsole.conf

    KEYMAP=de-latin1
    FONT=Lat2-Terminus16

- KEYMAP：可用的键盘映射位于`/usr/share/kbd/keymaps`。注意此设置仅对 TTY 起作用，不改变任何图形管理器如Xorg的设置。
- FONT：可用字体位于`/usr/share/kbd/consolefonts/`，默认为空：一些非英语语言的某些字符或许不能支持；此时建议将其设置为`Lat2-Terminus16`，参见`/usr/share/kbd/consolefonts/README.Lat2-Terminus16`：它支持约110种语言方案。
- FONT_MAP：可选设置，定义要加载的键盘映射；参阅`man setfont`。可以删除或留空。

提示: 更多讯息，参阅Console fonts与`man vconsole.conf`。

#### 时区

可用的时区包含在`/usr/share/zoneinfo/`中；将`/etc/localtime`软链接到`/usr/share/zoneinfo/Zone/SubZone`。将`Zone`和`Subzone`替换为所在时区：

    # ln -s /usr/share/zoneinfo/<Zone>/<SubZone> /etc/localtime

以上海为例：

    # ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#### 硬件时间

请在同一个机器使用同一个硬件时钟模式，否则不同的操作系统可能会相互覆盖硬件时间导致时间错乱。

可以用下面命令自动生成 `/etc/adjtime`：

- UTC(推荐使用)：

  提示: 硬件时钟使用UTC不代表显示时间时使用UTC。

      # hwclock --systohc --utc

- localtime(不推荐，但 Windows 默认使用此方式)：

  警告: 使用 localtime 可能导致一些无法修复的问题(如[5])。但目前还没有取消此设置选项的计划。

      # hwclock --systohc --localtime

#### 内核模块

提示: 一般情况下 udev 会自动加载需要的模块，大部分用户都不需要手动修改。这里只需要加入真正需要的模块。

`/etc/modules-load.d/`中保存内核启动时加入模块的配置文件。每个配置文件在`/etc/modules-load.d/`中以`.conf`为文件名结尾。配置文件中包含需要装入的内核列表，每个一行。空行和以`#`或`;`开头的行直接被忽略。示例：

    /etc/modules-load.d/virtio-net.conf

    # Load virtio-net.ko at boot
    virtio-net

若需在一个`.conf`中指定加载多个模块，可直接以换行符隔开各个模块名；VirtualBox的客户机扩展是个不错的例子。

#### Hostname

按喜好设置主机名，例如：

    # echo archlinux > /etc/hostname

注意:

- 观点一：现在已不需编辑`/etc/hosts`。The step is not required for a base installation since /etc/nsswitch.conf ships with "hosts: files dns myhostname" where nss-myhostname takes care of the local hostname resolution.
- 观点二：按官方论坛帖所述，有必要在`/etc/hosts`中配置hostname，因為一些应用程式需要它；

总上，若发现出现了论坛帖子中（[6]）所述情景，请按如下样例操作： 在`/etc/hosts`中作出同样配置：

    # nano /etc/hosts

    #
    # /etc/hosts: static lookup table for host names
    #

    #<ip-address>	<hostname.domain.org>	<hostname>
    127.0.0.1	localhost.localdomain	localhost	archlinux
    ::1		localhost.localdomain	localhost

    # End of file

### 配置网络

你需要再次配置网络，但此次是为你所安装的系统而配置。 该过程与前面的配置方法基本相同，不同之处在于我们此刻将使其在下次计算机启动时自动运行。

注意:

- 了解更多网络配置相关信息，请访问 配置网络 及 无线设置.
- 若你喜欢旧的介面命名方案(如`eth0`、`wlan0`)，你可以创建一个空文件：`/etc/udev/rules.d/80-net-name-slot.rules`(systemd 209之后，当为`/etc/udev/rules.d/80-net-setup-link.rules`)；它将会屏蔽掉`/usr/lib/udev/rules.d`下的同名文件。

#### 有线网络

##### 动态 IP

使用 dhcpcd

如果你只使用一个单一的固定有线网络连接，并不需要网络管理服务的话，可使用简单的`dhcpcd`服务。`interface_name`是你的网卡名称：

    # systemctl enable dhcpcd

提示: 若不行，试试：`systemctl enable dhcpcd@interface_name.service`

使用 netctl

复制一个简单的配置样本`/etc/netctl/examples`到`/etc/netctl`：

    # cd /etc/netctl
    # cp examples/ethernet-dhcp my_network

根据你的需要修改配置文件(根据`ip link的输出`修改`Interface`)：

    # nano my_network

启用`my_network`配置：

    # netctl enable my_network

使用 netctl-ifplugd

警告: 不要将这种方式与 `netctl enable profile` 混用。

另一种方案：使用netctl的`netctl-ifplugd`插件，方便的连接到网络： 安装ifplugd，这是被`netctl-ifplugd` 所依赖的：

    # pacman -S ifplugd

然后启用它。`interface_name`是你的网卡名称:

    # systemctl enable netctl-ifplugd@interface_name.service

提示: Netctl亦提供了`netctl-auto`，可与`netctl-ifplugd`一起管理有线配置。

##### 静态 IP

使用 netctl

复制一个简单的配置样例`/etc/netctl/examples`到`/etc/netctl/`：

    # cd /etc/netctl
    # cp examples/ethernet-static my_network

根据你的需要修改配置文件(修改`Interface`，`Address`，`Gateway`和`DNS`):

    # nano my_network

- `Address`中的`/24`为掩码`255.255.255.0`的CIDR 标记方式。

然后启用创建的配置文件：

    # netctl enable my_network

#### 无线网络

注意: 如果你的无线网卡需要固件(如前所述)，安装包含你所需固件的软件包。大部分情况下 linux-firmware会包括你需要的固件。对其他网卡来说，他们的固件可能在另外的软件包中。比如：

    # pacman -S zd1211-firmware

查看此文以获取更多信息。

安装iw（若需要，可安装wireless_tools）与wpa_supplicant，你需要用它们来连接网络：

    # pacman -S iw wpa_supplicant wireless_tools

##### 添加无线网络

使用 wifi-menu

安装dialog，`wifi-menu`依赖于它：`pacman -S dialog`
在完成一下部分的安装并重新启动电脑后，你可以使用`wifi-menu interface_name`(`interface_name`是你的无线网卡名)，或者直接：

    # wifi-menu

警告: 你一定要确保该命令是在电脑重新启动以后执行的。否则这个命令会和你在chroot之前的命令相冲突。此外，你还可以使用一下命令提供的模版来配置一份网络设置文件，这样你就不用担心`wifi-menu` 命令的问题了。

使用手动调节netctl配置文件

从 `/etc/netctl/examples` 复制一份模版到 `/etc/netctl`:

    # cd /etc/netctl
    # cp examples/wireless-wpa my_network

按照需要修改模版(`Interface`、`ESSID`与`Key`):

    # nano my_network

使其启动时自动启动：

    # netctl enable my_network

##### 自动连接到已知网络

警告: 不要将这种方式与已启用的无线连接配置文件（profile）一同使用，例如`netctl enable profile`。

安装wpa_actiond，它被`netctl-auto`依赖：`pacman -S wpa_actiond`

激活`netctl-auto`服务，他会自动连接到已知的网络并且优雅的处理重新连接和漫游：

    # systemctl enable netctl-auto@interface_name.service

提示: Netctl亦提供`netctl-ifplugd`，他可以和`netctl-auto`同时使用，用来处理自动有线连接。

#### 调制解调器，ISDN 或 xDSL(PPPoE)

关于xDSL，拨号和ISDN连接，参见Direct Modem Connection。

### 创建初始 ramdisk 环境

注意: 大部分用户都不需要在安装时修改此文件。

如有需要，配置 `/etc/mkinitcpio.conf`（参阅mkinitcpio (简体中文)），然后执行以下命令创建initramfs：

    # mkinitcpio -p linux

提示: 此文件负责微调初始内存文件系统initramfs。(曾被称为初始化内存磁盘或「initrd」)。initramfs是启动时供内核读取的压缩镜像。目的是引导系统使其能够读取根文件系统。所以它需要装入IDE、SCSI、SATA或USB/FW等设备所需模块。initramfs手动或通过udev装入所需的模块后，会将控制权交给内核，继续启动过程。因此initramfs仅需要包含读取根文件系统的必要文件。大部分内核模块都是在初始化过程中由udev装入。

如果根文件系统使用RAID或LVM，必须配置正确的HOOKS。详情请查看 RAID 与 /etc/mkinitcpio.conf。如果使用非US键盘，请添加「`keymap`」钩子以载入本地键盘映射。如果需要通过如下设备启动，请按需配置HOOKS：USB设备、FireWire、PCMCIA、NFS、软RAID、LVM2、加密卷和DSDT等。

你需要正确的配置hooks，如果你的根分区位于USB硬盘，RAID，LVM，或者`/usr`是一个单独的分区。

编辑 `/etc/mkinitcpio.conf` 并使用如下命令重新产生 initramfs 文件：

    # mkinitcpio -p linux

- 另：在QEMU上安装Archlinux(比如使用 `virt-manager`) 或许需要 在 `mkinitcpio.conf` 中添加`virtio`模块以成功启动：

    # nano /etc/mkinitcpio.conf

    MODULES="virtio virtio_blk virtio_pci virtio_net"

### 设置 Root 密码

用 `passwd` 设置一个root密码：

    # passwd

### 安装配置启动加载器

#### 对于BIOS主板

BIOS用户有多个引导器可用，完整列表在此。选择一个用起来顺手的。这里列出两个最常用的：

- syslinux目前只能加载它所安装的硬盘上的文件。它的配置文件相对来说容易理解。模版如下：[7]。
- grub功能丰富且支持更复杂的情况。他的配置文件更像是一种脚本语言，对新手来说可能用起来困难一些。我们推荐你使用自动产生的配置文件。

##### Syslinux

然后安装syslinux，使用`syslinux-install_update`命令自动安装文件(`-i`)，设置分区为活动分区，(`-a`)，安装MBR (`-m`)：

提示: 如果你的硬盘分区方式为GPT，安装gptfdisk，因为它包含`sgdisk`——用来设置GPT特有的启动标志。这时你需要使用`-g`而不是`-m`

    # pacman -S gptfdisk

安装 syslinux：

    # pacman -S syslinux
    # syslinux-install_update -iam ## 或者syslinux-install_update -iag

编辑`/boot/syslinux/syslinux.cfg`，将`/`指向正确的根分区；这是必须的，否则Arch启动不起来。将「sda3」修改为实际的根分区（若你是依照上面的例子分的区，那么根分区当是`/dev/sda1`）；同样，亦修改`LABEL archfallback`：

    # nano /boot/syslinux/syslinux.cfg

    ...
    LABEL arch
     ...
     APPEND root=/dev/sda3 rw

更多讯息，参阅 syslinux条目。

##### Grub

安装grub包并安装它到MBR中：

    # pacman -S grub
    # grub-install --target=i386-pc --recheck /dev/sda

注意:

- 对于`/dev/sda`，须根据实际分区自行调整；勿在块设备后附加数字（如`/dev/sda1`）。
- BIOS主板上的GPT分区需要『BIOS 引导分区』。参阅 GPT 特有指令。
- 一个样例文件会作为grub包的一部分安装到`/boot/grub/grub.cfg`，`grub-*`系列命令或许不会覆盖之。请确认你改动的是`grub.cfg`文件而非`grub.cfg.new`这样的文件。

虽然完全可手动配置`grub.cfg`，但建议用户自动生成这个文件。

提示: 要搜索硬盘上安装的其它操作系统，请在执行下面命令前先安装os-prober。

    # grub-mkconfig -o /boot/grub/grub.cfg

#### 对于 UEFI 主板

对于UEFI引导器，这里有多个选择。完整的列表参见此处。请先选择一个用起来可能顺手的，在此列出几个常用的选择：

- gummiboot是一个小型UEFI引导管理器，提供一个基本的EFISTUB内核与其他UEFI应用的菜单。这是推荐的UEFI引导方式。
- GRUB是一个更加完整的引导器，作为gummiboot不能正确引导的备用选择。

Note: 对于UEFI引导模式，磁盘需要有GPT分区表与ESP分区(FAT32格式，512 MiB或更大，gdisk type为`EF00`)。在下方的示例中，假设ESP被挂载至`/boot`。

##### Gummiboot

安装gummiboot，执行`gummiboot install`以安装引导程式至EFI System Partition：

    # mount -t efivarfs efivarfs /sys/firmware/efi/efivars              # 已经挂载可以忽略
    # pacman -S gummiboot
    # gummiboot install

你需要手动创建一个配置文件，为Arch Linux添加一个菜单项到gummiboot管理程式。创建`/boot/loader/entries/arch.conf`并添加以下内容，替代`/dev/sdaX`为你的根分区（比如`/dev/sda2`):

    # nano /boot/loader/entries/arch.conf

    title          Arch Linux
    linux          /vmlinuz-linux
    initrd         /initramfs-linux.img
    options        root=/dev/sdaX rw

欲知明细讯息，参见gummiboot。

##### GRUB

安装grub和efibootmgr并运行`grub-install`来安装引导器：

    # mount -t efivarfs efivarfs /sys/firmware/efi/efivars              # 已经挂载可以忽略
    # pacman -S grub efibootmgr
    # grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck

下一步，尽管手动建立`grub.cfg`是一个很好的方法，不过对于新手来说我们推荐自动生成一个：

提示: 为了自动搜寻您电脑上的现有系统, 在下一个命令运行之前先安装 os-prober。即使os-prober不知道如何正确的检测到UEFI系统。

    # grub-mkconfig -o /boot/grub/grub.cfg

更多信息，参见GRUB (简体中文)。

### 卸载分区并重启系统

先离开chroot环境：

    # exit

卸载`/mnt`中挂载的系统：

    # umount -R /mnt

重启计算机：

    # reboot

小贴士: 确保移除安装媒介（并还原BIOS中的启动选项），否则可能会启动后会回到安装界面。

## 安装之后

现在应该有了一个完全可用的 Arch 系统，以此为起点，你可以将这些优雅的工具集变成期望或要求的样子。

- 应用程序 页面包含了常用软件的索引。
- 一般建议 页面包含了安装后的教程，包括设置 CPU 频率自动调节和字体渲染等。
- Arch Linux 中文化 页面包含了关于系统、软件中文支持的内容。

Category:

- Getting and installing Arch (简体中文)