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系统)

安装前准备

  • 使用U盘制作启动盘后从U盘进入Live环境,键盘布局默认为美式键盘映射

  • 检查引导方式
    现在主要的引导方式有EFI引导+GPT分区表和BIOS(或CSM)引导+MBR分区表两种,不同的主板配置不同。

1
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检查网络是否通

  • 更新系统时间:

    1
    timedatectl set-ntp true

安装过程

建立分区并挂载

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

1
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

创建分区

1
2
# 进入磁盘分区工具
fdisk /dev/sdX
  • 查看磁盘分区信息: p

  • 创建MBR分区表:o

  • 创建新分区: n

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

  • 设置分区类型:t

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

  • 删除分区:d

    输入分区号删除

  • 获取帮助:m/help

  • 保存退出:w

  • 不保存退出:q

格式化分区

格式化交换分区

1
2
3
4
mkswap /dev/sdXY

#启用swap
swapon /dev/sdXY

格式其他分区

1
mkfs.ext4 /dev/sdXY

**`X`、`Y`相应切换即可**

挂载分区

  • 根据安装挂载点挂载/分区

    1
    mount /dev/sdX1 /mnt/
  • 挂载其他分区(一定要挂载/分区后再挂载其他分区,这样才能将挂载点创建在/分区上)

1
2
3
4
5
# 创建home分区挂载点
mkdir /mnt/home

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

EFI/GPT方式引导

安装挂载点 挂载点 分区 分区类型 建议大小 格式化
/mnt/boot /boot 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]:为交换空间分区,相当于虚拟内存,若不不创建该分区,系统将会以文件的形式保存,具体参见

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

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

创建分区

1
2
# 进入磁盘分区工具
fdisk /dev/sdX
  • 查看磁盘分区信息: p

  • 创建GPT分区表:g

  • 创建新分区: n

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

  • 设置分区类型:t

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

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

  • 删除分区:d

输入分区号删除

  • 获取帮助:m/help

  • 保存退出:w

  • 不保存退出:q

格式化分区

格式化引导分区

1
mkfs.fat -F32 /dev/sdXY

格式化交换分区

1
2
3
4
5
mkswap /dev/sdXY

#启用swap

swapon /dev/sdXY

格式其他分区

1
mkfs.ext4 /dev/sdXY

**`X`、`Y`相应切换即可**

挂载分区

  • 根据安装挂载点挂载/(根)分区
1
mount /dev/sdX2 /mnt/
  • 挂载其他分区(一定要挂载/分区后再挂载其他分区,这样才能将挂载点创建在/分区上)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建EFI分区挂载点

mkdir /mnt/boot

# 挂载EFI分区

mount /dev/sdX1 /mnt/boot


# 创建home分区挂载点

mkdir /mnt/home

# 挂载home分区

mount /dev/sdX4 /mnt/home

优化镜像源

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

1
vim /etc/pacman.d/mirrorlist
  • 输入 /China 回车搜索到国内源 ==> 输入 2dd 剪切这两行 ==> 输入 gg 回到文件开头 ==> 输入 p 将剪切的内容贴到开头 ==> 输入 :wq 保存退出

推荐清华和中科大源:

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

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

安装基础包

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

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

base : 基础包

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

linux : linux内核

linux-headers : 内核头文件

linux-firmware : linux框架

配置系统

配置自动挂载

1
2
3
4
genfstab -U /mnt >> /mnt/etc/fstab

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

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

Change root 到新安装的系统

1
arch-chroot /mnt

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

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

  • 重新安装 bootloader.
  • 重建 initramfs 镜像.
  • 更新或 降级软件包.
  • 重置 忘记的密码.
  • 在干净的 chroot 中构建软件包

条件:

  • root 权限
  • 另一个 linux 环境,例如 liveCD、USB 闪存介质或者一个已经安装的另一个 linux 发行版。
  • 匹配的架构,chroot 前后的环境架构要一致(例如,都是i686x86_64)。可以用以uname -m命令查看当前环境的架构
  • 提前加载 chroot 环境需要的内核模块
  • 如果需要 swap, chroot 前先启用 swapswapon /dev/sdxY
  • 如果需要网络,chroot 之前先建立好网络连接

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

设置时区

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

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

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

提前安装必要的软件包

1
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工具

本地化

1
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 将前面的注释(#)去掉,保存退出。

1
locale-gen

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

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

网络配置

  • 设置主机名

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

1
echo myhostname > /etc/hostname

  • 设置本地地址解析
    1
    2
    3
    4
    5
    6
    vim /etc/hosts

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

设置root密码

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

1
passwd

安装引导程序

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

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

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

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

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

BIOS/MBR方式引导

安装grub

1
pacman -S grub

grub:强大的统一引导程序

部署grub

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

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

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

生成配置文件

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

EFI/GPT方式引导

安装grub和efibootmgr

1
pacman -S grub efibootmgr

grub:强大的统一引导程序

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

生成配置文件

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

检查

1
vim /boot/grub/grub.cfg

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

部署grub

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

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

重启

  • 输入exit退出chroot环境
  • 手动卸载被挂载的分区:umount -R /mnt
  • 重启:reboot

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

参考

Arch Wiki

以官方Wiki的方式安装ArchLinux

ArchLinux安装图文教程

引导程序安装 Gentoo Wiki

-------------本文结束感谢阅读-------------