制作系统盘
准备工具
Windows:rufus
Linux:dd(不推荐,目前没找到好用的烧录工具,都不支持 UEFI 启动)
下载镜像
清华源:https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/
进入后选择最新镜像(ISO 文件)进行下载
烧录镜像
步骤自己百度,最佳方案是 UEFI + GPT,该文档也只适用于此方案
正式安装
在 BIOS 中选择U盘启动进入 Live 环境,进入 Live 环境后如果有选择界面默认第一个。
连接网络
有网线的话建议直接插网线,以下是无线网络的连接方式。
进入 iwd 客户端
iwctl
获取设备名
[iwd] device list
扫描网络
[iwd] station [设备名] scan
eg. station wlp1s0 scan
列出可选网络
[iwd] station [设备名] get-networks
连接网络
[iwd] station [设备名] connect [网络名称]
退出
[iwd] exit
检查连接状态
ping www.baidu.com
同步时间
timedatectl set-ntp true
硬盘分区
该文档采用 LVM 模式,该模式可以更方便地调整分区大小。
查看硬盘信息
-
使用
lsblk
,得到一个简洁的树状图信息 -
使用
fdisk -l
, 得到各个设备的完整信息
创建分区
cfdisk [设备名]
eg. cfdisk /dev/sda
以上图为参考,使用下方控制栏的 new
分出一个1G的分区,对其使用 type
并选择 EFI System
类型;剩余的空间(包括其它硬盘)全部设置成 Linux LVM
类型。
创建物理卷
不要在 EFI 分区上创建物理卷。
pvcreate [设备名]
eg. pvcreate /dev/sda2
可使用
pvdisplay
查看已创建的物理卷。
创建卷组
卷组名和下面的卷名都不能以连字符(- 或 _)开头。
卷组必须先创建在某个物理卷上,再将其它物理卷添加入其中。
有两种方法,可自己挑选。
- 第一种方法
在创建完卷组后将其它物理卷添加入其中
vgcreate [卷组名] [目标物理卷]
vgextend [卷组名] [其它物理卷]
- 第二种方法
在创建卷组时一次性添加所有物理卷
vgcreate [组名] [物理卷1] [物理卷2] ...
可使用
vgdisplay
查看已创建的卷组。
创建逻辑卷
lvcreate -L [卷大小] [卷组名] -n [卷名]
eg. lvcreate -L 50G SSD -n root
可使用
lvdisplay
查看已创建的逻辑卷。
如果想将卷组中所有未使用的空间给某个逻辑卷的话,可使用以下命令。
lvcreate -l +100%FREE [卷组名] -n [卷名]
可以预留一部分未使用空间,以便将来扩容使用。
按照上述方法,将步骤3.4中创建的卷组按自己想要的大小分别创建出 root
,home
两个分区的逻辑卷。
建议 root 分区就起名为 root,home分区的就起名为 home,下文为了方便,默认将 root/home 分区的逻辑卷按此名字定义。
检查逻辑卷是否在 /dev/mapper/
和 /dev/[卷组名]
中,如果没有,执行以下命令进行模块加载,卷组扫描与激活。
modprobe dm-mod
vgscan
vgchange -ay
格式化逻辑卷
- root 分区
# 注意:使用的是逻辑卷所在位置,而不是实际分区
mkfs.ext4 /dev/mapper/[卷组名]-root
- home 分区
# 注意:使用的是逻辑卷所在位置,而不是实际分区
mkfs.ext4 /dev/mapper/[卷组名]-home
- EFI 分区
# 注意,此处使用的是实际分区,你并没有为 EFI 分区创建逻辑卷
mkfs.fat -F32 /dev/[EFI分区]
如果忘记
EFI System
类型的分区叫什么,且有采用步骤3.2的建议,那么使用步骤3.1的方法自己看看,那个 1G 大小的分区就是。
挂载逻辑卷
按顺序执行以下命令
mount /dev/mapper/root /mnt
mkdir /mnt/efi
mkdir /mnt/home
mount /dev/[EFI分区] /mnt/efi
mount /dev/mapper/home /mnt/home
配置系统
安装必需软件包
修改 /etc/pacman.d/mirrorlist
,在开头添加以下内容用于更改软件包镜像源
# 中科大源
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
执行以下命令进行安装
pacstrap /mnt base linux linux-firmware neovim lvm2 grub efibootmgr
pacstrap 是一个脚本,其作用是将指定的包安装到给定的目录下。当不指定包时,会下载基元包(Base metapackage)。
详细信息见 pacstrap。
base、linux、linux-firmware 是基本包。
neovim、lvm2、grub、efibootmgr是下面的步骤需要的包,也可以选择在接下来用
pacman
安装。
生成文件系统结构信息
执行以下命令生成文件系统结构信息
genfstab -U /mnt >> /mnt/etc/fstab
/etc/fstab
文件记录 Arch 的文件系统结构信息,其作用是引导系统挂载指定分区到指定目录。可使用
cat /mnt/etc/fstab
检查文件系统结构是否正确。
变更根目录
执行以下命令切换根目录到 /mnt
目录中,通俗点理解就是离开 Live 环境进入正在安装的 Arch 系统以进行接下来的配置。
arch-chroot /mnt
配置 mkinitcpio
因为 root 分区也是基于 LVM,所以需要配置 mkinitcpio,防止系统无法启动。
打开 /etc/mkinitcpio.conf
,在文件中找到以下行,在 block
与 filesystem
这两项中间插入 lvm2
。
HOOKS=(base udev autodetect modconf block filesystems keyboard fsck)
修改后如下,
HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)
退出编辑器并通过下面的命令重新生成内存盘镜像
mkinitcpio -p linux
时区设置
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
生成 /etc/adjtime
文件
hwclock --systohc
本地化设置
-
修改
/etc/locale.gen
文件,将en_US UTF-8
和zh_CN UTF-8
前的注释符号去除。 -
执行以下命令生成 locale 信息
locale-gen
- 创建并修改
/etc/locale.conf
,添加以下内容用以设置 LANG 变量
LANG=en_US.UTF-8
网络设置
创建 /etc/hostname
文件,在该文件里添加想要设置的主机名
myhostname
修改 /etc/hosts
文件,添加以下内容用以配置 hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
记得将
myhostname
更换为自己的主机名。
管理员密码设置
passwd
系统引导设置
安装引导
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=ArchLinux
EFI 分区在
/efi
目录下,--efi-directory
参数就设置为/efi,--bootloader-id
参数设置的是 BIOS 界面中该系统的名字。
生成 grub 配置文件
grub-mkconfig -o /boot/grub/grub.cfg
安装基本工具
pacman -S linux-headers base-devel networkmanager network-manager-applet wpa_supplicant wireless_tools dialog
完成安装
退出 chroot 环境
exit
卸载分区
umount -R /mnt
重启
reboot