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
即可