Difference between revisions of "Beginners' guide (简体中文)"

From ArchWiki
Jump to navigation Jump to search
(→‎GRUB: Do not match the wiki in English)
Line 944: Line 944:
 
  # pacman -S grub efibootmgr
 
  # pacman -S grub efibootmgr
 
  # grub-install --target=x86_64-efi --efi-directory='''$esp''' --bootloader-id=arch_grub --recheck
 
  # grub-install --target=x86_64-efi --efi-directory='''$esp''' --bootloader-id=arch_grub --recheck
 
  
 
下一步,尽管手动建立 {{ic|grub.cfg}} 是一个很好的方法,不过对于新手来说我们还是推荐自动化生成:
 
下一步,尽管手动建立 {{ic|grub.cfg}} 是一个很好的方法,不过对于新手来说我们还是推荐自动化生成:
 
{{提示|若想自动检测硬盘上安装的其它操作系统,请在执行下面命令前先安装 {{Pkg|os-prober}}, 即 {{ic|pacman -S os-prober}}, 哪怕它并不知如何检测 UEFI 系统。}}
 
  
 
  # grub-mkconfig -o /boot/grub/grub.cfg
 
  # grub-mkconfig -o /boot/grub/grub.cfg
  
详见 [[GRUB (简体中文)]]。
+
如果安装后仍然无法启动,请参阅 [[GRUB (简体中文)]]。
  
 
=== 卸载分区并重启系统 ===
 
=== 卸载分区并重启系统 ===

Revision as of 08:35, 11 December 2014

ro:Ghidul începătorilor zh-TW:Beginners' Guide

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

欢迎,本向导写给 Arch 新用户,但是会尽量做到成为所有用户的参考和信息库。 本文档指导您使用Arch安装脚本来安装Arch Linux:一个简单、轻量级、适合计算机水平较高用户使用的发行版。建议在安装前先浏览一下FAQ。 社区维护的 ArchWiki应该有办法解决遇到的疑难。若在其它地方找不到解决办法,IRC 频道(irc://irc.freenode.net/#archlinux-cn) 和论坛都是求助的好地方。为了贯彻Arch之道,如遇陌生的命令,可输入man command以查询相关man手册页。

准备

注意: 若要自现成的GNU/Linux发行版上安装Arch Linux,当参阅 自现有发行版安装Arch ,尤其是当打算通过VNCSSH来远程安装Arch时。欲通过SSH远程安装Arch Linux的用户,请先阅读 自SSH安装

系统需求

理论上,Arch Linux能在任何内存空间不小于64MiB的i686兼容机上运行。最基本的base组中包含的包将占用约800MiB存储空间。若您存储空间极度有限,可手动挑选base组中的包进行安装,前提是你必须知道你在做什么。

准备最新的安装媒介

最新的官方Arch Linux安装媒介可自 Download 页获取。ISO 镜像文件仅有一个,但同时支持32位与64位构架。强烈建议始终使用最新的 ISO 镜像。

提示: Archboot ISO 镜像可在交互式界面下安装Arch,详见 Archboot (简体中文)
  • 安装镜像有数字签名,强烈建议安装前校验签名。从 Download 页(或者镜像列表中的一项)下载 .sig 文件,把它放到和 .iso 相同的文件夹下。在Arch Linux上,以root权限运行pacman-key -v iso-file.sig命令;在其他环境上,以root权限运行gpg2 --verify iso-file.sig。安装镜像也提供了md5sha1校验值。
注意: 若您没有下载对应于RSA密钥ID的公钥,gpg2校验会失败。详见 http://sparewotw.wordpress.com/2012/10/31/how-to-verify-signature-using-sig-file/
  • 用您喜欢的软件把 ISO 映像文件刻录到光盘上,详见 光盘烧录方法
注意: 不同的刻录机和光盘,质量可谓天差之别。为了得到可靠的刻录质量,一般以低速刻录。若刻录情况异常,请试将速度调至刻录机所支持的最低速度。

通过网络安装

如果您打算通过网络安装,就没必要刻录光盘或写入U盘了,可以直接在网络上启动 ISO 镜像,但您得已上线好一个服务器。详见 PXE, 以及 #启动安装程序

在现成 Linux 系统上安装

参见自现有发行版安装Arch

在虚拟机中安装

使用虚拟机安装是熟悉Arch Linux的好办法,这种方法不会影响您当前正在运行的操作系统,甚至也不用在硬盘上重新分区。虚拟机还能让您一边开着浏览器看Beginners' Guide一边安装系统。一些用户可能还会发现,若仅为测试,在虚拟机里安装一个独立的Arch Linux操作系统大有裨益。

常见的虚拟机软件有VirtualBoxVMwareQEMUXenParallels。如果您是Windows用户,建议使用VirtualBox

各种虚拟机软件的使用步骤大同小异,一般有如下:

  1. 创建虚拟硬盘镜像,用来装载操作系统
  2. 适当地配置虚拟机参数
  3. 将下载的 ISO 镜像作为 CD 设备启动
  4. 继续按照#.E5.BC.95.E5.AF.BC.E5.AE.89.E8.A3.85.E5.AA.92.E4.BB.8B一步一步来。

以下文章也许用得上:

引导安装媒介

大多现代操作系统允许您在POST时手动设置引导设备,一般来说是在BIOS屏幕显示的瞬间按下 F12,并选中包含 Arch ISO 的设备。或者,您也许可以在您的计算机BIOS上手动修改设备先后的引导顺序。 为了实现后者,通常要在启动后的POST过程中按Delete/Enter/Esc/F1/F2/F8/F10/F11F12即可进入BIOS设置界面以修改设备先后的引导顺序。把包含 Arch ISO 的设备设为系统引导首选。再选 "Save & Exit" (或您 BIOS 相应的选项),您的计算机接着应该会开始常规的引导流程了。 当Arch菜单出现时,选 "Boot Arch Linux" 并按 Enter进入 Live 环境以进行实质的安装(如果是UEFI引导,选项可能会是 "Arch Linux archiso x86_64 UEFI" 之类的)。

检查是否启动到 UEFI 模式

如果您使用 UEFI 主板,且 UEFI 启动模式(优于 BIOS/Legacy 模式)已启用,CD/USB 会自动通过 Gummiboot 启动 Arch Linux。之后会出现以下菜单:

Arch Linux archiso x86_64 UEFI USB
UEFI Shell x86_64 v1
UEFI Shell x86_64 v2
EFI Default Loader

默认选中第一项。

要确认是否已进入UEFI模式,可运行:

# efivar -l

如果 efivar 列出的UEFI变量无误,说明您已进入UEFI模式。如果并不正确,请检查 UEFI 中列出的要求是否满足。

启动问题疑难解答

  • 若使用英特尔显卡,且在引导阶段发生黑屏,此或许与KMS有关。一个也许有效的解决方法是先重启电脑,并在引导菜单上,对着您所想启动的选项(i686 或 x86_64)按e键。在行尾输入nomodeset并回车。另外,也可以试一下video=SVIDEO-1:d,这不会禁用KMS,如果这办法行得通的话。最后,还可以试试i915.modeset=0,详见 Intel (简体中文)
  • 若没有发生黑屏,而是在启动过程中,加载内核时死机。可在菜单上对某行按 Tab 编辑,在行尾加入acpi=off并回车。

安装

您会看到一个命令提示符,且您已自动以root身份登陆。您的Shell是zsh,有强大的命令补全支持以及 grml config提供的其他特性。 若要编辑文本文件,建议用nano。如果您不太会用,参考Nano#nano_usage. 如果您想实现与 Windows 共存的双启动,详见Windows and Arch Dual Boot.

修改语言

提示:
  • 仅在以下情况有必要修改语言:打算编辑包含非 ASCII 字符的配置文件、在 Wi-Fi 密码中使用了特殊字符、希望能显示非英语的系统信息(如错误信息)。此步骤只对该安装过程生效。
  • 故对于大部分中文用户,此为非必要操作,请跳至#建立网络连接

键盘布局默认为us(美式键盘映射)。如果您正在使用非美式键盘布局,通过以下的命令选择相应的键盘映射表:

# loadkeys layout

layout 转换为您的键盘布局,如frukdvorakbe-latin1这里有国家的二位字母编码表。使用命令localectl list-keymaps列出所有可用的键盘布局。

大多语言使用多于 26 个英文字母的字符,因此需要在 /usr/share/kbd/consolefonts/ 修改字体,否则这些语言的文字会显示成白方块。比如:

# setfont lat9w-16

接着您可以运行 showconsolefont 命令以显示出包含所有已加载字体的内容。注意名字区分大小写,所以请务必精确拼写您所看到的终端字体名称。详见 Fonts#Console fonts.

系统语言默认为美式英语。若想在安装过程中使用其他语言,以德语为例,在 /etc/locale.gen 中去掉相应 locale 前的 #, 就像现成的美式英语 (en_US.UTF-8 UTF-8) 一样。请选择包含 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

建立网络连接

警告: v197 开始,udev 不再按照 wlanX, ethX的命名格式以分配网络接口的名字。所以如果您从其他发行版转来,又或是首次接触 Arch Linux, 请勿理所当然地认为有线接口名字就是 eth0, 无线接口是 wlan0. 您可以用 ip link 命令查询接口的名字。
注意: 2014.04 往后发布的 ISO(可能更早)在向“FritzBox!”系列路由器获取 IP 时有问题。已知型号 7390[1] 和 7112[2] 会有此问题,其他型号可能也有影响。问题似乎发生在 dhcpcd 客户端和 FritzBox! 路由器之间,和他们分配 IP 地址的方式有关。解决方法是:在 FritzBox! 设置界面,删掉分配给目标机器的 IP 地址,并禁用“Assign always the same IP address to this machine”。然后重启 DHCP 进程或重启计算机。如果还不行,试着重启 FritzBox!。成功获取 IP 地址后,即可启用刚刚被禁用的功能。

安装程序会自动运行 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 服务:

注意: 服务名可能是 dhcpcd@your_ethernet_interface.service,例如 dhcpcd@enp0s25.service. 在输入systemctl stop dhcpcd 之后按两次 Tab 就可以自动不全出来。
# systemctl stop dhcpcd

确定有线连接的接口名。

# 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 地址
  • 子网掩码,使用CIDR 书写方式, 例如掩码255.255.255.0的 CIDR 书写方式为/24 .
  • 网关 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 如下, 以替换您的域名服务器 IP 地址和本地域名:

# nano /etc/resolv.conf
nameserver 61.23.173.5
nameserver 61.95.849.8
search example.com
注意: 目前,您最多只能使用三行 nameserver 字段。要突破此限制,请使用本地域名缓存,例如 Dnsmasq

您现在应该成功连接有线网络。若无,详见 网络配置

无线网络

如果您在安装过程中需要连接无线网络(Wi-Fi),请遵循该章节。

首先确定无线网络接口名:

# iw dev
phy#0
        Interface wlp3s0
                ifindex 3
                wdev 0x1
                addr 00:11:22:33:44:55
                type managed

在该示例中,使用 wlp3s0 当作接口。如果您不太确定,那无线连接接口名一般以 "w" 开头,而不会是以 "lo" 或 "e" 开头。

注意: 如果输出并不一致,说明没有加载相关驱动,得自行加载。详见无线配置

现在用 netctlwifi-menu 来连接网络:

# wifi-menu wlp3s0

您现在应该成功连接无线网络。若无,详见 #不用 wifi-menuWireless network configuration (简体中文).

不用 wifi-menu

激活无线网络接口:

# 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> 中的 UP 表明该接口激活成功,后面的 state DOWN 无关紧要。

除了驱动,大多无线网卡还需要固件。内核一般会自动探测并加载两者,如果您得到类似 SIOCSIFFLAGS: No such file or directory 的输出,意味着您得手动加载固件。若不确定,用 dmesg 查询内核日志,看看有没有来自无线网卡的固件请求。比如您有 Intel 芯片组,输出大概是这样:

# dmesg | grep firmware
firmware: requesting iwlwifi-5000-1.ucode

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

警告: 网卡需要的无线接口固件包在 Live 环境中,已被预先安装到了 /lib/firmware 下,但是必须特别安装到实际的系统,才能在重启后启动无线网络功能!本向导的后面会介绍该固件软件包的选择和安装。请确保在重启前都已装好您的无线网卡驱动模块和固件!如果您不太明白为您特定无线网卡芯片安装固件的要求,详见 无线网络配置

接下来,用 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
# wpa_supplicant -B -D nl80211 -c /etc/wpa_supplicant.conf -i interface
# dhcpcd -A interface

理论上第三步并非必须,但多多益善。

如果 wpa_supplicant 在第四步中声明它不支持 Driver ,去除 -D nl80211 参数即可:

# wpa_supplicant -B -c /etc/wpa_supplicant.conf -i interface

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

详见 Direct Modem Connection

使用代理服务器

若通过代理服务器连接网络,您需要 export http_proxyftp_proxy 变量,详见 Proxy settings.

准备存储设备

警告: 分区可能会毁掉原数据。强烈建议先备份重要的数据。
注意: 如果您打算安装在 USB 上,详见 Installing Arch Linux on a USB key.
提示: 如果您打算为 LVM磁盘加密RAID 创建堆栈式块设备,现在就做。

选择分区表类型

注意: 如果要和 Windows 通磁盘双系统启动,Arch 应该和 Windows 保持一致的启动模式和分区组合。否则 Windows 将无法启动。详见Windows and Arch Dual Boot#Important information

您必须在 GUID 分区表(GPT)和 主引导记录(MBR) 之间选一个。参见选择GPT或MBR 以作出选择。

  • 推荐所有 UEFI 使用者使用 GPT 分区格式,因为有些 UEFI 固件不支持 UEFI-MBR 启动。
  • 有些 BIOS 不支持GPT,更多信息和可能的解决方案参见 [3][4]

分区工具

建议新手使用图形化的分区工具。GParted 就很不错,它就有现成的 Live CD. 硬盘首先要分区,接着将分区格式化为需要的文件系统

虽说 gparted 简单易用,但如果您仅仅想创建几个分区的话,可以用 fdisk 或其他程序快速搞定,安装媒介已内置。在下一章节会介绍 gdiskfdisk 的用法。

擦除分区表

如果您想改头换面,当然并不在意原本的分区,则用以下命令擦除分区表。它只会单纯地创建分区,不会带来在 MBR 和 GPT 之间彼此迁移的任何问题。

# sgdisk --zap-all /dev/sda

分区方案

您可以决定磁盘应该分为多少个区,每个分区又挂载在系统的哪个目录。

将分区如何映射至目录(一般称此为挂载点),取决于您的分区方案。最简单但也不赖的选择,是直接仅分一个巨大的 / 分区。分成 //home 两种分区也是很常见的方案。

额外要求的分区:

  • 如果您使用 UEFI 主板,您需要创建一个额外的 EFI 系统分区
  • 如果您使用 BIOS 主板(或打算以 BIOS 兼容模式引导),并且您希望在 GPT 分区驱动器上安装 GRUB, 您需要创建一个额外的 1 至 2 MiB,类型代码为 EF02BIOS 引导分区syslinux 则不用。
  • 如果您需要加密磁盘,则必须加以调整分区方案。系统安装后,也可以再配置加密文件夹,容器或 home 目录。

如果您想创建交换分区或交换文件,详见 Swap. 使用交换文件的话,修改文件大小比修改分区更方便,但是前者不支持 Btrfs 文件系统。

示范

当前安装媒介已包含了以下工具:fdisk, gdisk, cfdisk, cgdisk, parted.

提示: lsblk 命令显示所有已连接到系统的硬盘和分区,以及后者的大小。这样可以帮您确定所要分区的正确硬盘。lsblk -f 能显示卷标、UUID和文件系统类型。

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

在示范中,我们将划分 15 GB 的根分区 /, 以及占用所有剩余空间的 /home. 请在 MBRGPT 中选一个,不能同时选两者!

再次强调,实际的分区方案可以很个人化,此处仅作示范用。详见 Partitioning (简体中文)

用 cgdisk 创建 GPT 分区

启动 cgdisk:

# cgdisk /dev/sda
提示: 如果 cgdisk 没法把您的硬盘改为 GPT, parted 能。

根分区:

  • 选择 New (或者按 N) – Enter 以在第一个扇区 (2048) 上开始创建分区 – 输入 15GEnter 以保持默认的十六进制码 (8300) – Enter 以分区名留空。

Home 分区:

  • 按几次下方方向键,让光标移动到大的空白分区。
  • 在第一扇区选择 New (或者按 N) – EnterEnter 以使用全部剩余空间(或者您也可以输入确定的大小,比如 "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

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

如果您想从头开始,直接选 Quit 或按 Q 退出,该动作不会保存任何变动,接着您再执行 cgdisk.

如果您对当前的分区方案感到满意,选 Write 或按 Shift+W, 完成分区。输入 yes, ,再选 Quit 或按 Q, 可毫无新变动保留地退出。

用 fdisk 建立 MBR 分区
注意: 安装媒介中亦有一个叫 cfdisk 的工具,它的 UI 与 cgdisk 相似;但目前仍不能正确地自动对齐好第一个分区。所以我们在这里改用经典的 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:

警告: 请务必再三检查您的操作,要确保您所要格式化的的确是 /dev/sda1/dev/sda2。您可以使用 lsblk 查看磁盘的分区状态。
# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2

若您分了一个 swap 区,也不要忘了格式化并启用它:

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

UEFI 用户也要格式化相应的 EFI 系统分区(以 /dev/sdaXY 为例):

# mkfs.vfat -F32 /dev/sdaXY

{{Note|如果要在 BIOS + GUID Partition Table 系统上使用 [[GRUB], 请注意 BIOS 启动分区/boot 挂载点不一样。GRUB 会直接使用它,不要格式化成文件系统,也不要挂载它。}}

挂载分区

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

显示当前分区布局:

# lsblk -f
注意: 不要在同一个目录挂载多个分区,而且依序挂载很重要。

注意要按照顺序挂载,先挂载根分区到 /mnt (您实际所要挂载的分区名当然可能会不同):

# mount /dev/sda1 /mnt

然后挂载 /home 分区,以及其它其余单独分区,比如 /boot/var,如果您有的话:

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

如果您用 UEFI 主板,也要挂载个 UEFI 分区,虽说任意挂载点可行,但 EFISTUB 推荐挂载到 /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
...

如果您愿意,您可以只使用一个镜像并全删光其他行,但为保险,还是留其他几个离您较近的镜像作备用好。

提示:
  • 使用镜像列表生成器可自动根据更新状况生成离您比较近的镜像列表。由于 keepalive, HTTP 镜像要比 FTP 快得多。若使用 FTP 镜像,pacman 在下载每一个包的时候都会发送一个信号,导致短暂的停顿。至于更多生成镜像列表的方法,详见 镜像排序Reflector_(简体中文)
  • Arch Linux 镜像状态报告了各镜像的状态,包括网络状态、数据收集状态和最新同步时间等。
注意:
  • 一旦更改了镜像列表,请务必记得使用 pacman -Syy 强制刷新。这绝对是一个良好的习惯,它可以避免一些可能的麻烦,详见 Mirrors_(简体中文).
  • 若您使用一个比较旧的安装媒介,那您的镜像列表可能已经过期,这会导致升级/安装 Arch Linux 时出现问题(参见 FS#22510)。因此建议使用上面提及的方法来更新镜像列表。
  • 有些问题被报告到 Arch Linux 官方论坛,是一些由于网络导致的 pacman无 法更新、同步的问题。(参考 [5][6])。在实体机器中安装 Arch Linux 时,我们使用更换 pacman 的默认下载器的方法来应对这个问题,详见 Improve Pacman Performance (简体中文)). 当把 Arch Linux 安装在 VirtualBox 中时,这个问题可以通过在设置中使用宿主网卡,而不是 NAT, 来解决。

安装基本系统

使用 pacstrap 来安装基本系统。如果您不想手动选择安装哪个包,忽略 -i 即可。如果您想编译来自 AUR (简体中文) 的软件包,又或是用得到 ABS (简体中文), 您应该也装上 base-devel 软件包:

# pacstrap -i /mnt base base-devel
注意:
  • 若运行 pacstrap 时卡住并出现 failed retrieving file 'core.db' from mirror... : Connection time-out 字样,又确认镜像的设置没问题,请尝试手动更换 DNS
  • 如果安装的时候请求 PGP key,允许其下载 Key,如果您使用的 Arch ISO 过期就可能会出现该问题。如果安装 PGP key 出错,请尝试更新软件包 archlinux-keyring: pacman -S archlinux-keyring
  • 若 pacman 在安装时提示无法验证软件包,请以 Ctrl+C 终止安装过程,以cal检查系统时间。若发现系统时间是无效的,比如穿越到未来,则验证签名时将会提示过期或无效从而导致 pacman 无法安装软件包。所以请修正您的系统时间,可运行 ntpd -qg 命令并重试。详见 Time (简体中文).
  • 若 pacman 报告 error: failed to commit transaction (invalid or corrupted package), 请运行如下命令:
# pacman-key --init && pacman-key --populate archlinux

此章节会给您安装好最基本的 Arch 系统,其它软件以后会用 pacman (简体中文) 安装得到。

生成 fstab

用以下命令生成 fstab. 之所以用 UUID 是因为它们能唯一且独立地标识,详见 fstab#Identifying filesystems. 如果您想用卷标,用 -L 代替 -U 即可。

# genfstab -U -p /mnt >> /mnt/etc/fstab
# nano /mnt/etc/fstab
警告: 强烈建议在生成 fstab 后检查一下是否正确。若在运行 genfstab 或是之后发生错误,请勿再次运行 genfstab, 而是直接手动编辑 fstab 文件。
提示: fstab, file systems table 的缩写,是系统配置的一部分。该文件列出所有可用的磁盘和分区,并指明它们初始化或整合至全局文件系统的方式。/etc/fstab 文件一般被 mount 命令读取,mount 以设备上的文件系统为参数,将其添加到主目录结构。在启动过程执行到四分之三左右的时候,会调用 mount -a, mount -a 读取 /etc/fstab 以确定挂载时使用的选项。如果 noauto 位于 /etc/fstab 中的文件系统挂载参数之后,mount -a 不会在启动时挂载它。仅根分区需要在最后使用 1, 其它可以使用 20, 详见 fstab 字段定义
  • 最后一列决定分区在启动时进行磁盘检查的顺序。只有非 btrfs 格式的根分区 / 需要将最后一列设为 1, 其它应该为 2, 以表明在启动时检查,或是 0, 以表明不检查。详见 fstab 字段定义)。
  • Btrfsswap 分区的最后一列须设置成 0.

Chroot 并开始配置新系统

下面要 chroot 到新系统:

# arch-chroot /mnt /bin/bash
提示: 或者只执行 arch-chroot /mnt, 以只用 sh shell.

从现在开始,我们会通过编辑文件以配置系统。所以若文件不存在,手动创建,或者您也可以加以编辑已存在的文件,以修改默认参数。

充分理解并老实按一步一步来,是保证系统配置成功的关键。

Locale

glibc, 以及其他本地化的程序与库若要本地化文本,都依赖 locales, 后者明确规定地域、货币、时区日期的格式、字符排列方式和其他本地化标准等等。在下面两个文件设置:locale.genlocale.conf.

/etc/locale.gen是一个仅包含注释文档的文本文件。指定您需要的本地化类型,只需移除对应行前面的注释符号()即可,请选择帶UTF-8的項:

# nano /etc/locale.gen
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8

接着执行locale-gen以生成locale讯息:

# locale-gen
注意: 每次更新 glibc 时也会自动执行这个命令

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

创建 locale.conf 并提交您的本地化选项:

Tip: 将系统 locale 设置为en_US.UTF-8,系统的 Log 就会用英文显示,这样更容易问题的判断和处理。用户可以设置自己的 locale,详情参阅Locale#Per user.
# echo LANG=en_US.UTF-8 > /etc/locale.conf
警告: 不推荐在此设置任何中文locale,或导致tty乱码。
提示:
  • 所提交的 LANG 变量,要事先已在 /etc/locale.gen 反注释好
  • locale.conf 默认不存在。一般来说只设置 LANG 一般足够矣,因为它会覆盖掉其它所有变量。若要特别指定某个变量,先运行 locale 查看可用选项,详见 Locale_(简体中文).

终端字体和键盘映射

提示: 对于大多中文用户,可忽略此章节。

如果您在#修改语言 时就已修改键盘布局和字体过,您就得再相应地编辑 /etc/vconsole.conf 以使该变动对新系统生效,比如:

# nano /etc/vconsole.conf
KEYMAP=de-latin1
FONT=lat9w-16
警告: 如果您设置的 KEYMAPloadkeys' 变量并不一样,那当您 #Set the root password 并重启后,可能没法再正常登录新系统了,因为一些键在两种布局的映射下并不一致。

此章节只对您的虚拟终端生效,即对 Xorg 无效,详见 Console fonts.

时区

可用的时区全集中在 /usr/share/Zone/SubZone 目录里了,

所以要查看可用时区,直接浏览 /usr/share/zhoninfo 即可:

# ls /usr/share/zoneinfo/

同理,您也可以查看子目录下的可用时区:

# ls /usr/share/zoneinfo/Europe

/etc/localtime 软链接到 /usr/share/zoneinfo/Zone/SubZone

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

以上海为例:

# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
注意: 如果提示 ln: failed to create symbolic link '/etc/localtime': File exists,用 ls -l /etc/localtime 检查存在的文件并向 ln 添加 -f 选项来覆盖它。

硬件时间

在计算机所有操作系统上统一硬件时间模式,否则可能会发生冲突。

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

  • UTC (推荐):
提示: 硬件时钟使用 UTC,并不代表软件时间也是 UTC.
# hwclock --systohc --utc
  • localtime (不推荐,但 Windows 默认使用此方式):
警告: 使用 localtime 可能导致一些无法修复的问题,如[7]. 虽说如此,目前社区仍尚无取消该设置选项的打算。
# hwclock --systohc --localtime

内核模块

提示: 一般情况下 udev 会自动加载所有必需模块,所以您几乎不需要再做什么了,当且只当您确认缺乏特定模块时就动手添加,这里仅作示范。

/etc/modules-load.d/ 中保存着内核启动时所要加入模块的配置文件。每个配置文件在 /etc/modules-load.d/ 中以 .conf 为文件名结尾。配置文件中包含需要装入的内核模块列表,每行一个模块名。示例:

# nano /etc/modules-load.d/virtio-net.conf
# Load 'virtio-net.ko' at boot.

virtio-net

若需在一个 .conf 中指定多个模块,可直接以换行符隔开各个模块名。VirtualBox 的客户机扩展 就是个很理想的示范。

所有空行和以 #; 开头的行将直接被忽略。

Hostname

设置个您喜欢的主机名,例如:

# echo myhostname > /etc/hostname

并在 /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	myhostname
::1		localhost.localdomain	localhost	myhostname

# End of file

配置网络

您又得再次配置网络,但这次是为您所安装的新系统而配置。 该过程与#建立网络连接基本一致,只不过该配置在新系统每次开机时都会自动生效。

还是老路子,用 ip link 确认下您的网络接口名。

注意: 了解更多网络配置相关信息,请访问 Network_Configuration_(简体中文)Wireless network configuration (简体中文).

有线网络

动态 IP
使用 dhcpcd

如果您只用单一且固定的有线网络连接,也不要网络管理服务的话,一劳永逸地启动 dhcpcd 服务就好了,interface_name 是您的网络接口名:

# systemctl enable dhcpcd@interface_name.service
使用 netctl

/etc/netctl/examples 复制个配置样本到 /etc/netctl:

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

再按需编辑配置文件,也别忘了修改 Interface 为实际的接口名。

# nano my_network

启用 my_network 配置:

# netctl enable my_network
注意: 您也许会收到 "Running in chroot, ignoring request", 直接忽略即可
使用 netctl-ifplugd
警告: 不要将这种方式同时与 netctl enable profile 使用。

您还可以用 netctl-ifplugd, 它能很好地处理对新网络的动态连接。

安装 ifplugd, netctl-ifplugd 要用到它:

# pacman -S ifplugd

接着在相应接口上激活:

# 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, GatewayDNS) 参数:

# nano my_network

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

启用 my_network 配置:

# netctl enable my_network
使用 systemd-networkd

详见 systemd-networkd.

无线网络

注意: 如果您的无线网卡需要固件,如同#无线网络Wireless network configuration#Device driver 一样,安装包含您所需固件的软件包。linux-firmware 一般应该会提供了您所需要的固件。至于其他网卡,它们的固件可能独立于其它包中,比如:
# pacman -S zd1211-firmware
详见 Wireless_network_configuration#Installing_driver.2Ffirmware.

安装 iwwpa_supplicant, 您要靠它们连网:

# pacman -S iw wpa_supplicant
添加无线网络
使用 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

按照需要修改模版,即参数 (InterfaceESSIDKey):

# 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)

详见 Direct Modem Connection

创建初始 ramdisk 环境

注意: 大多用户可跳过该章节。该出自 /boot 目录的 initramfs 镜像在您用 pacstrap 安装 {linux 时就自动生成了。

如果您的根分区位于 USB, RAID, LVM, 多设备 btrfs 根池,或者 /usr 是一个单独的分区时,您需要正确地配置 hooks

按需编辑 /etc/mkinitcpio.conf 并使用以下命令重新产生 initramfs 镜像:

# mkinitcpio -p linux
注意: 在 QEMU上 安装Arch Linux VPS,比如用 virt-manager,或许您还需要在 mkinitcpio.conf 中添加 virtio 模块以成功启动:
# nano /etc/mkinitcpio.conf
MODULES="virtio virtio_blk virtio_pci virtio_net"

设置 Root 密码

passwd 设置一个 root 密码:

# passwd

安装并配置 bootloader

如果使用 Intel CPU,请参照microcode 更新方法进行bootloader配置. AMD CPU 会自动处理。

对于 BIOS 主板

BIOS 用户有多种 bootloader 可选,完整列表在 Boot loaders#Both_BIOS_and_UEFI_boot_loaders. 选一个用起来顺手的,这里只列出两种最常用的 bootloader 以作示范:

  • Syslinux (简体中文) 目前只能加载它所安装的硬盘上的文件。它的配置文件相对来说比较好理解。模版参见 syslinux 条目。
  • GRUB (简体中文) 功能丰富且支持更复杂的情境。它的配置文件更像是一种脚本语言,对新手来说可能用起来困难一些。我们推荐您使用其自动产生的配置文件。
Syslinux

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

提示: 如果您当初选 GPT,您就得先安装 gptfdisk,以便用来设置 GPT 特有的启动标志。此外您需要使用 -g 代替 -m.
# pacman -S gptfdisk

安装 syslinux:

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

安装之后,编辑 /boot/syslinux/syslinux.cfg, 将 / 指向正确的根分区,如果弄错会 Arch 启动不起来。将 /dev/sda3 修改为实际的根分区(若您是依照上面的例子分的区,那么根分区应当为 /dev/sda1:

# nano /boot/syslinux/syslinux.cfg
...
LABEL arch
 ...
 APPEND root=/dev/sda3 rw

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

如果您想加 UUID 而不是分区的数字标识,语法为 APPEND root=UUID=partition_uuid rw.

详见 syslinux 条目

GRUB

安装 grub 包,并执行 grub-install 已安装到 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, 即 pacman -S os-prober.
# grub-mkconfig -o /boot/grub/grub.cfg

对于 UEFI 主板

注意: 有些 UEFI 固件要求负责启动的 .efi 文件位于固定的位置: $esp/EFI/boot/bootx64.efi ($esp 是 EFI 系统分区挂载点). 否则系统无法启动。后面每个 bootloader 都会介绍处理方式。

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

  • gummiboot 是一个小型 UEFI 引导管理器,提供一个基本的 EFISTUB 内核与其他 UEFI 应用的菜单。我们推荐新手使用这种 UEFI 引导方式,尤其是对于要和 Win8 双启动的系统。
  • GRUB 是一个更加完整的引导器,可作为 gummiboot 不能正确引导的备用解决方案。

不论您选哪一种 bootloader, 请安装 dosfstools 以便在安装之后继续维护 EFI 系统分区。安装efibootmgr 创建可启动的 .efi 文件(bootmanager 安装脚本会使用)

# pacman -S dosfstools efibootmgr
注意: 对于 UEFI 引导模式,磁盘需要有 GPT 分区表和 Unified Extensible Firmware Interface#EFI 系统分区,FAT32 格式,512 MiB 或更大,gdisk type 为 EF00). 在以下示范中,假设 ESP 被挂载至 /boot.
Gummiboot
Note: 强烈建议讲 EFI 系统分区挂载到 /boot,这样可以自动更新 Gummiboot.

安装 gummiboot, 执行 gummiboot install 以安装 bootloader 至 EFI 系统。把$esp 替换为 EFI 系统分区挂载点,通常是 /boot:

# pacman -S gummiboot
# gummiboot --path=$esp install

Gummiboot 会自动检测 bootx64.efi 需要的文件并放入 $esp/EFI/boot, 如果检查到其它操作系统的 .efi 也会同样处理。但是仍然需要手动创建 Gummiboot 配置文件.

创建 $esp/loader/entries/arch.conf 并添加以下内容,别忘了把 /dev/sdaX 改为您的实际根分区,例如/dev/sda1:

# nano $esp/loader/entries/arch.conf
title          Arch Linux
linux          /vmlinuz-linux
initrd         /initramfs-linux.img
options        root=/dev/sdaX rw

然后创建 $esp/loader/loader.conf,并写入下面配置:

# nano $esp/loader/loader.conf
default  arch
timeout  5

详见 gummiboot.

GRUB

Tango-preferences-desktop-locale.png本页面需要更新翻译,内容可能已经与英文脱节。要贡献翻译,请访问简体中文翻译组Tango-preferences-desktop-locale.png

附注: please use the first argument of the template to provide more detailed indications.

安装 grubefibootmgr, 再执行 grub-install 来安装 bootloader. 把$esp 替换为 EFI 系统分区挂载点,通常是 /boot:

# pacman -S grub efibootmgr
# grub-install --target=x86_64-efi --efi-directory=$esp --bootloader-id=arch_grub --recheck

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

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

如果安装后仍然无法启动,请参阅 GRUB (简体中文)

卸载分区并重启系统

离开 chroot 环境:

# exit
Note: While partitions are unmounted automatically by systemd on shutdown, you may do so manually with umount -R /mnt as a safety measure. If the partition is "busy", you can find the cause with fuser.

重启计算机:

# reboot
提示: 确保同时移除安装媒介,并还原 BIOS 中的启动选项,否则可能会启动后又会回到安装界面。可以用 root 用户和设置的密码登录,默认密码是 "root".

安装之后

您现在应该有了一个完全可用的 Arch 系统,以此为起点,您可以将这些优雅的工具加以改造成理想的样子。强烈建议您阅读 General recommendations (简体中文),特别是前两个部分.

请继续阅读 General recommendations (简体中文) 的剩余页面,它包含了安装后的众多教程,包括设置图形用户界面,声卡和触摸板等等。

如果想捣鼓一大堆应用程序,详见 List of Applications (简体中文).

Arch Linux 中文化 页面还包含了关于系统、软件中文支持的内容。