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 默认不支持安全启动,因此需要提前关闭该功能才能引导安装。
安装前准备
- 
使用U盘制作启动盘后从U盘进入Live环境,键盘布局默认为美式键盘映射 
- 
检查引导方式 
 现在主要的引导方式有EFI引导+GPT分区表和BIOS(或CSM)引导+MBR分区表两种,不同的主板配置不同。
ls /sys/firmware/efi/efivars
如果存在,则可能是纯UEFI方式引导,如果目录不存在,系统可能以 BIOS 或 CSM(即UEFI的Legacy BIOS引导支持) 方式引导,具体查阅主板手册
- 
联网: - 有线通过dhcpcd命令获取IP,ping www.bing.com检查网络是否通(Ctr-C终止)
- 无线网络使用wifi-menu命令通过字符UI连接无线网,ping www.bing.com检查网络是否通
 Archiso 默认的无线网络管理器已经换成了 iwd,可通过iwctl连接网络
 进入iwd提示符(iwctl) » 查询网卡设备(device list)» 搜索无线网络([iwd#] station <devicename> scan) » 显示扫描到的结果([iwd#] station <devicename> get-networks) » 连接网络([iwd#] station <devicename> connect <wifi-ssid>) ,输入密码连接即可,知道 id 可直接连接无需搜索。
- 有线通过
- 
更新系统时间: 
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解决问题
- SWAP的建议大小:
| 物理内存(RAM) | SWAP大小 | 
|---|---|
| < 4G | 2倍RAM | 
| 4G~8G | 等于RAM | 
| 8G~64G | 8G | 
| > 64G | 16G | 
创建分区
# 进入磁盘分区工具
fdisk /dev/sdX
- 
查看磁盘分区信息: p
- 
创建MBR分区表: o
- 
创建新分区: n
设置分区号(默认) ==> 设置分区起始(默认) ==> 设置分区大小(如:
+512M、+32G)
- 设置分区类型:t
输入分区号选择分区 ==> 查看支持的分区类型(L列出,上下键分页,q退出) ==> 输入数字选择相应的类型修改
- 删除分区:d
输入分区号删除
- 
获取帮助: m/help
- 
保存退出: w
- 
不保存退出: q
格式化分区
格式化交换分区
mkswap /dev/sdXY
#启用swap
swapon /dev/sdXY
格式其他分区
mkfs.ext4 /dev/sdXY
X、Y相应切换即可
挂载分区
- 根据安装挂载点挂载**/**分区
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)时,使用交换文件更加理想, 具体参见 。
- SWAP的建议大小:
| 物理内存(RAM) | SWAP大小 | 
|---|---|
| < 4G | 2倍RAM | 
| 4G~8G | 等于RAM | 
| 8G~64G | 8G | 
| > 64G | 16G | 
创建分区
# 进入磁盘分区工具
fdisk /dev/sdX
- 
查看磁盘分区信息: p
- 
创建GPT分区表: g
- 
创建新分区: n
设置分区号(默认) ==> 设置分区起始(默认) ==> 设置分区大小(如:
+512M、+32G)
- 设置分区类型:t
一定要设置引导分区的类型
输入分区号选择分区 ==> 查看支持的分区类型(
L列出,上下键分页,q退出) ==> 输入数字选择相应的类型修改
- 删除分区:d
输入分区号删除
- 
获取帮助: m/help
- 
保存退出: w
- 
不保存退出: q
格式化分区
格式化引导分区
mkfs.fat -F32 /dev/sdXY
格式化交换分区
mkswap /dev/sdXY
#启用swap
swapon /dev/sdXY
格式其他分区
mkfs.ext4 /dev/sdXY
X、Y相应切换即可
挂载分区
- 根据安装挂载点挂载/(根)分区
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
- 输入 /China回车搜索到国内源 ==> 输入2dd剪切这两行 ==> 输入gg回到文件开头 ==> 输入p将剪切的内容贴到开头 ==> 输入:wq保存退出
推荐清华和中科大源:
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监狱目录下):
- 重新安装 bootloader.
- 重建 initramfs 镜像.
- 更新或 降级软件包.
- 重置 忘记的密码.
- 在干净的 chroot 中构建软件包
条件:
- root 权限
- 另一个 linux 环境,例如 liveCD、USB 闪存介质或者一个已经安装的另一个 linux 发行版。
- 匹配的架构,chroot 前后的环境架构要一致(例如,都是i686或x86_64)。可以用以uname -m命令查看当前环境的架构
- 提前加载 chroot 环境需要的内核模块
- 如果需要 swap, chroot 前先启用swap(swapon /dev/sdxY)
- 如果需要网络,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-8 、 zh_CN.UTF-8 UTF-8 、 zh_HK.UTF-8 UTF-8 、 zh_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查看架构选择
重启
- 输入exit退出chroot环境
- 手动卸载被挂载的分区:umount -R /mnt
- 重启:reboot
/boot(efi)/boot/bootx64.efi文件,只需将grubx64.efi复制到指定目录重命名为bootx64.efi即可