基本步骤

  • 准备环境(Arch Linux的ISO文件,良好的网络等)
  • 制作安装介质并启动到live环境
  • 准备分区
  • 安装系统并生成 fstab文件
  • 启动到船新的ArchLinux
  • 基本配置

1. 准备安装环境

1.1 ISO

要安装ArchLinux,我们必须下载一个ISO(安装镜像)来启动到Live环境,这个ISO文件可以从 官方下载页面获取,

1.2 联网

为什么需要联网

想要正常安装一个Arch Linux,没有网络是万万不行的,因为不同于Manjaro、openSUSE、Ubuntu,Cent OS、Debian等其他发行版,那些发行版的核心软件包放在了安装镜像里,所以它们的ISO文件常常是巨大的,动辄两三个G。而Arch Linux没有在ISO中内置那些包,所有的软件包都在软件源上,这种方式极大地压缩了 Arch ISO 的大小,并能保证系统安装完就是最新的。缺点是安装时必须联网。笔者写下这篇文章时最新的镜像的大小只有609MB,是不是很小呢。

2. 制作安装介质

  • 推荐使用Rufus制作安装介质(请确保U盘内没有重要文件,此操作会清除所有的数据!)。制作完成后,你需要先关闭Win10的快速启动,然后去 EFI 固件设置里关掉安全启动(Secure Boot),才能启动到你的Live系统
  • 如果你想装到虚拟机中,在新建虚拟机时,安装程序光盘文件选择你下载的ISO文件即可

选择你下载的ISO文件

3. 启动到Live环境

为了方便截图,此处我是用VMware的UEFI模式做的演示,与真机下操作并无区别

VMware开启UEFI:虚拟机>设置>选项>高级>固件类型

VMware 开启 UEFI

3.1 检查你的网络

有线网络

如果你的电脑是通过网线连接到路由器的话(这种情况下一般都能自动分配IP地址),在进入到Live系统后,使用 dhcpcd 指令来联网,然后使用 ping www.baidu.com检测,如果你能得到回应,说明网络是正常联通的。相关链接:静态IP动态IPdhcpcd

联网and检测

无线网络

如果你想连接无线网络,可以使用 wifi-menu 这个工具连接无线网络。如果此工具无法帮助你成功连接无线网络,请寻找一个较合适的网络环境。或百度你的问题,然后使用 ping www.baidu.com 来检查你的网络连接。有关无线网络的更多配置请去官方Wiki查看

3.2 更新系统时间

使用 timedatectl 确保系统时间是准确的:
执行以下命令:

timedatectl set-ntp true

然后可以使用 timedatectl status 检查服务状态。注意,UTC 时间通常和你的本地时间不相同

检查ntp服务状态

我截下这张图时,本地时间是2019-5-8 18:01

4. 分区

本文针对单硬盘结构,即只有一块常规硬盘

4.1 分区前的准备工作

4.1.1检查硬盘结构

执行fdisk -l检查你的硬盘结构

检查硬盘结构

  • 如果你的硬盘是普通硬盘,它的名字应该是形似/dev/sdx
  • 如果你的硬盘是固态硬盘,它的名字应该是形似/dev/nvmeXnYXY 都是数字,通常 X0Y1
  • 一定要注意硬盘名后面的大小,其中有一个很有可能是你的 U 盘,此处我给这个虚拟机分配了8GiB的虚拟磁盘

4.1.2 分区规划

从Arch Wiki截的图

我准备建立以下分区:

/mnt/boot /dev/sda1 512MiB

swap /dev/sda2 1GiB

/mnt /dev/sda3 剩余

swap分区根据实际情况,可建可不建,其大小一般与RAM大小相同

4.2 开始分区

我使用的是cfdisk — 使用 ncurses 库编写的具有伪图形界面的命令行分区工具

执行以下命令打开分区程序

cfdisk /dev/sda

如果出现以下界面,请选择gpt,因为我们使用的是UEFI

选择 label type

然后进入分区界面

cfdisk分区工具

使用左右方向键更改当前选项,

使用上下方向键更改当前分区/硬盘,

  1. 选择Free space并在New处回车新建一个Partition,
  2. Partition size:后面的字符改为512M (MG等字符必须大写)
  3. 移动光标到Type回车,选择EFI System

完成上述操作后,我们将看到:

建立分区

第一个建立的分区是sda1,第二个是sda2,依此类推

继续执行上面三个步骤,swap分区选择Linux swap,mnt分区选择Linux filesystem(最后一个分区不用更改大小,直接默认即可)

最后是这样

建立分区

还没完,此时我们只是把规划好的分区告诉cfdisk,还差最后一步才完成分区建立,

注意!下面是危险操作!!

把光标移到Write并确认

此时会提醒你输入yes or no

确认修改

输入yes,然后选定Quit

再执行fdisk -l检查一下你的分区

检查分区

确认无误后,执行以下命令分别为每个分区建立文件系统

mkfs.fat -F32 /dev/sda1
mkswap /dev/sda2
mkfs.ext4 -L root /dev/sda3

在上面的指令第一句中,我们为 /dev/sda1 分区,也就是 sda 磁盘的第一块分区,建立了 fat 文件系统;-F32 表明我们建立的是 fat32 而非 fat16 或其它不是我们想要的 fat。

而在第二句中,我们为 /dev/sda2 创建了专用于 swap 的存储系统;这是一个特殊的分区类型,它很难被当作 filesystem,所以建立它的指令是 mkswap 而非 mkfs.sth

在最后一条指令中,我们为 /dev/sda3 建立了一个 ext4 文件系统;-L root 选项表示设置这个新分区的标签为 root,以便于后续引用它。不设定标签也是可以的,但以后我们将只能通过分区的 UUID (很长一串)来引用它,可读性不高,也很容易抄错。

4.3 挂载分区

Linux 系统目录结构

和Windows不同,Linux整个目录结构只有一个根,也就是 /,其他目录,比如 /usr/boot/home 之类都存放于根目录之下,其关系如下图所示

linux目录结构

关于挂载

mount a file system

图片截取自官方Wiki

图片中最下面那两行英文的意思是

这会将/dev/sda1上的文件系统附加到目录/mnt,从而使文件系统的内容可见。
在卸载设备之前,在此操作之前存在于/mnt的任何数据都将不可见。

我对这句话的理解:

把/dev/sda1挂载到目录/mnt后,
/mnt这个目录就会指向/dev/sda1上的文件系统,
此时访问/mnt就等同于访问/dev/sda1,
并且原本/mnt这个目录下存在的文件对系统来说是不可见的,
直到你从/mnt卸载/dev/sda1

开始挂载分区

  1. 启用交换分区

    swapon /dev/sda2

可以使用 swapon --show 来检查交换分区有没有被正确启用

检查

  1. 挂载根到live系统的/mnt

    mount /dev/sda3 /mnt
  2. 创建/boot并挂载

    mkdir /mnt/boot
    mount /dev/sda1 /mnt/boot

mount 指令不会产生输出

5. 安装 Arch Linux

5.1 修改软件源

使用vim或nano等编辑器编辑 /etc/pacman.d/mirrorlist
执行 vi /etc/pacman.d/mirrorlistnano /etc/pacman.d/mirrorlist
然后把## China及其下面的字符挪到文件最前面

可以把清华和科大的镜像源也加上

mirrorlist

5.2 使用 pacstrap 安装系统

pacstrap /mnt base base-devel dialog ntfs-3g wpa_supplicant

​ 命令解释:

pacstrap :Arch Linux 中用来安装系统的脚本工具

pacstrap <安装目录> [要安装的软件包(组),多个软件包(组)之间用空格隔开]

base必选。Arch Linux基本系统,

base-devel:可选。但最好装上,它里面包含很多重要的工具

dialog:可选。图形化的shell,wifi-menu就在这个软件包组里

ntfs-3g:可选。 提供NTFS文件系统支持

wpa_supplicant:可选。提供 WPA 认证支持(与wifi-menu搭配使用)

敲回车确认后,稍等一会

5.3 生成fstab文件

找到有一段关于fstab文件的介绍

fstab - static information about the filesystems

意思是:有关文件系统的静态信息
它告诉系统启动时该如何挂载各分区的表

使用以下命令生成 fstab 文件

genfstab /mnt > /mnt/etc/fstab

5.4 chroot

上面在5.2中我们已完成了系统的安装,但此时还无法启动新系统

我们还需要以下操作:

Change root 到新安装的系统:
执行以下命令

arch-chroot /mnt

6. 基本配置

6.1 配置时区

中国大陆地区执行如下命令配置

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

6.2本地化

使用vim或nano等编辑器编辑编辑/etc/locale.gen

找到以下几行,去掉前面的#

#en_US.UTF-8 UTF-8
#zh_CN.UTF-8 UTF-8
#zh.HK_UTF-8 UTF-8
#zh_TW.UTF-8 UTF-8

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

locale-gen

这个命令会在/etc/locale.gen 生成指定的本地化文件。

执行以下命令创建 locale.conf

localectl set-locale LANG=zh_CN.UTF-8

还需要安装中文字体,否则会导致显示错误

pacman -S noto-fonts-cjk

6.3 网络相关设置

  1. 创建/etc/hostname文件并写入你的主机名

hostname

6.3 配置引导程序

  1. 安装grubefibootmgr软件包
pacman -S grub efibootmgr
  1. 安装grub/boot
grub-install --efi-directory=/boot
  1. 自动生成配置文件
grub-mkconfig -o /boot/grub/grub.cfg

6.4 设置 root 密码

输入passwd后敲回车键,然后设置你的root密码,

需要注意的是linux中大部分需要输入密码的场合中,输入密码不会被显示,在此处还请放心大胆的输,如果你觉得自己输错了,那就狂敲退格键直到你觉得已经删完了之前输入的内容再重输就可以了@_@

7. 重启到你的Arch Linux

7.1 手动卸载被挂载的分区

执行以下命令手动卸载被挂载的分区

umount -R /mnt

7.2 重启

执行以下命令重启系统

reboot

至此就安装完了^_^

本文内容参考 ArchWiki以及amane的博客