ArchLinux安装教程

前言

Arch Linux是当下最热门的Linux发行版之一,它提供简单、最小化且优雅的体验,Arch可通过自己的喜好定制属于自己的系统,这就带来了一个难题一切都得通过命令行手动定制(包括安装系统),这对于初学Linux的人来说是不利的,所以不建议初学者安装Arch。

Arch 优点:
- 可定制属于自己的Linux系统(与Gentoo几乎并列高定制榜首,只是Gentoo需要自己从内核开始编译安装软件,软件安装速度上没有Arch通过二进制包安装软件包的快)
- 没有预装
- Arch Wiki宝典能解决遇到的几乎所有问题(建议看英文版,中文很多都老旧且有错误,同样Gentoo Wiki也和Arch Wiki一样被视为Linux界的宝典)
- 滚动更新能让你的系统保持最新
- AUR万能仓库能找到几乎所有Linux的软件包(包括其他主流发行版的软件)

Arch 缺点:
- 一且都从命令行开始,包括安装系统(如果不想从命令行开始可以考虑Manjaro linux入手)
- 只能通过联网安装
- 根动更新可能滚坏系统,但可以滚回去

Arch Linux是一个非常优秀的发行版,优点多于缺点,对于非Linux用来说可能偏技术性,但只要肯投入时间和精力,善于使用Wiki,从零开始搭建完Arch并定制成属于自己的系统,你将掌握很多 GNU/Linux 的内容,相信自己一定能成为别人眼中的大神。

(ps:其实Linux初学者才更应该从Arch入手,因为Arch Wiki是一本Linux宝典,基本上Linux的所有软件包如何配置,遇到问题如何解决都有详细的说明,同时一切都从命令行开始的Arch能让你更好的理解Linux系统)

关闭安全启动

Arch Linux 默认不支持安全启动,因此需要提前关闭该功能才能引导安装。

安装前准备

ls /sys/firmware/efi/efivars

如果存在,则可能是纯UEFI方式引导,如果目录不存在,系统可能以 BIOS 或 CSM(即UEFI的Legacy BIOS引导支持) 方式引导,具体查阅主板手册

timedatectl set-ntp true
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

安装过程

建立分区并挂载

列出被系统的磁盘块设备,可看到磁盘的基本信息

fdisk -l

BIOS/MBR方式引导

安装挂载点 挂载点 分区 分区类型 建议大小 格式化
/mnt / /dev/sdX1 Linux root (x86-64) 23~32G EXT4
- [SWAP] /dev/sdX2 Linux swap 大于512M -
/mnt/home /home /dev/sdX3 Linux home 剩余空间 EXT4

sdX:X为磁盘号从a开始排,根据自己的硬盘替换

[SWAP]:为交换空间分区,相当于虚拟内存,若不不创建该分区,系统将会以文件的形式保存,具体参见

为了方便管理通常都是不使用分区形式的而是使用文件的形式,这就不过多赘述来,需要的请学会使用Wiki解决问题

物理内存(RAM) SWAP大小
< 4G 2倍RAM
4G~8G 等于RAM
8G~64G 8G
> 64G 16G

创建分区

# 进入磁盘分区工具
fdisk /dev/sdX

设置分区号(默认) ==> 设置分区起始(默认) ==> 设置分区大小(如:+512M+32G)

输入分区号选择分区 ==> 查看支持的分区类型(L列出,上下键分页,q退出) ==> 输入数字选择相应的类型修改

输入分区号删除

格式化分区

格式化交换分区

mkswap /dev/sdXY

#启用swap
swapon /dev/sdXY

格式其他分区

mkfs.ext4 /dev/sdXY

XY相应切换即可

挂载分区

mount /dev/sdX1 /mnt/
# 创建home分区挂载点
mkdir /mnt/home

# 挂载home分区
mount /dev/sdX3 /mnt/home

EFI/GPT方式引导

安装挂载点 挂载点 分区 分区类型 建议大小 格式化
/mnt/boot /boot/boot/efi dev/sdX1 EFI System 256~512M FAT32
/mnt / dev/sdX2 Linux root (x86-64) 23~32G EXT4
- [SWAP] /dev/sdX3 Linux swap 大于512M -
/mnt/home /home dev/sdX4 Linux home 剩余空间 EXT4

sdX:X为磁盘号从a开始排,根据自己的硬盘替换

[SWAP]:为交换空间分区,相当于虚拟内存。
若不不创建该分区,系统将会以文件的形式保存, 相比于使用一个磁盘分区作为交换空间,使用交换文件可以更方便地随时调整大小或者移除。当磁盘空间有限(例如常规大小的SSD)时,使用交换文件更加理想, 具体参见

物理内存(RAM) SWAP大小
< 4G 2倍RAM
4G~8G 等于RAM
8G~64G 8G
> 64G 16G

创建分区

# 进入磁盘分区工具
fdisk /dev/sdX

设置分区号(默认) ==> 设置分区起始(默认) ==> 设置分区大小(如:+512M+32G)

一定要设置引导分区的类型

输入分区号选择分区 ==> 查看支持的分区类型(L列出,上下键分页,q退出) ==> 输入数字选择相应的类型修改

输入分区号删除

格式化分区

格式化引导分区

mkfs.fat -F32 /dev/sdXY

格式化交换分区

mkswap /dev/sdXY

#启用swap

swapon /dev/sdXY

格式其他分区

mkfs.ext4 /dev/sdXY

XY相应切换即可

挂载分区

mount /dev/sdX2 /mnt/
# 创建EFI分区挂载点

mkdir /mnt/boot

# 挂载EFI分区

mount /dev/sdX1 /mnt/boot


# 创建home分区挂载点

mkdir /mnt/home

# 挂载home分区

mount /dev/sdX4 /mnt/home

优化镜像源

mirrorlist文件中保存着所有的镜像源,但它的排序会导致国内的访问速度大大降低,我们需要将国内的更新源放到前面,使包管理器使用的是国内的源,从而加速。

vim /etc/pacman.d/mirrorlist

推荐清华和中科大源:

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

自行测试,选择自己认为速度快的即可

安装基础包

使用pacstrap将基础包安装到磁盘上

pacstrap /mnt base base-devel linux linux-headers linux-firmware 

base : 基础包

base-devel: 基础扩展包,AUR需要base-devel软件包被安装

linux : linux内核

linux-headers : 内核头文件

linux-firmware : linux框架

配置系统

配置自动挂载

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

# 检验是否正确
cat /mnt/etc/fstab

确保几个分区的挂载信息被正确的写入文件,对应的挂载点是否正确

Change root 到新安装的系统

arch-chroot /mnt

Chroot 就是变更当前进程及其子进程的可见根路径。变更后,程序无法访问可见根目录外文件和命令。(如将/mnt视为/后,原来的/mnt外的路径都不可见了,相当于直接启动到了/mnt下的系统里)。这个目录(/mnt)叫作charoot监狱

切换根目录通常为了系统维护(需要将磁盘上的相应目录根据结构挂载到chroot监狱目录下):

条件:

这可能使你的电脑被别人使用chroot修改密码,请在安装完系统后将主板的引导顺序修改为系统启动为第一项,或关闭其他引导方式,关闭引导菜单快捷键,设置UEFI/BIOS 管理密码

设置时区

在Linux发行版里中国的时区都使选择上海

创建上海时区的符号链接文件

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

提前安装必要的软件包

pacman -S vim neovim dialog ntfs-3g netctl networkmanager dhclient zsh wpa_supplicant

vim :编辑器

neovim:编辑器,与上一个可选

dialog: 用于显示来自shell脚本的对话框的工具

ntfs-3g:NTFS文件系统驱动程序和实用程序

netctl : 网络管理器

networkmanager: 检测网络、自动连接网络的程序,与上一个为可选

dhclient:DHCP服务,具有全功能的DHCP和IPV6支持,也可安装 dhcpcd

zsh:shell

wpa_supplicant:wifi工具

本地化

vim /etc/locale.gen

找到 en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8zh_HK.UTF-8 UTF-8zh_TW.UTF-8 UTF-8 将前面的注释(#)去掉,保存退出。

locale-gen

创建/etc/locale.conf文件并在文件第一行加入LANG=en_US.UTF-8

echo LANG=en_US.UTF-8 > /etc/locale.conf

网络配置

创建/etc/hostname文件添加一个主机名(如:myhostname)

echo myhostname > /etc/hostname
vim /etc/hosts

# 添加如下内容,将myhostname替换成自己的主机名
127.0.0.1	localhost
::1		localhost
127.0.0.1	myhostname.localdomain	myhostname

设置root密码

输入两次设置的密码即可,linux上的密码都是不显示的

passwd

安装引导程序

若需要引导Windows+Linux双系统需要安装以下两个包

pacman -S os-prober ntfs-3g intel-ucode amd-ucode

os-prober:用于检测驱动器上其他操作系统

ntfs-3g:NTFS文件系统驱动程序和实用程序,用于识别Windows分区

intel-ucode / amd-ucode:厂家为CPU更新驱动用的

BIOS/MBR方式引导

安装grub

pacman -S grub

grub:强大的统一引导程序

部署grub

grub-install --target=i386-pc /dev/sdX

sdX为整个磁盘,不是单独一个分区

若出现will not proceed with blocklists错误,请检查是否是 BIOS/MBR方式引导及硬盘格式,或加--force强制部署

生成配置文件

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

EFI/GPT方式引导

安装grub和efibootmgr

pacman -S grub efibootmgr

grub:强大的统一引导程序

efibootmgr:修改UEFI固件启动管理器变量的工具,用来将启动项写入 NVRAM

生成配置文件

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

检查

vim /boot/grub/grub.cfg

检查系统的引导项是否被写进gurd配置文件中

部署grub

grub-install --target=x86_64-efi --efi-directory=/boot

将在固件启动管理器中创建一个名叫 GRUB 的条目
target通过uname -m查看架构选择

重启

UEFI/GPT方式引导,若重启未进入grub引导,说明UEFI的引导是设备引导,需要/boot(efi)/boot/bootx64.efi文件,只需将grubx64.efi复制到指定目录重命名为bootx64.efi即可

参考

Arch Wiki

以官方Wiki的方式安装ArchLinux

ArchLinux安装图文教程

引导程序安装 Gentoo Wiki