因为前两天win11不知道怎么了把我的账户设置成了来宾账户,导致几乎所有软件都无法使用,遂决定格盘重装,想回到 Arch 好久了,借此机会重新体验一次。

在这之前,希望你至少按照ArchWiki中的安装向导,在安装过程中遇到问题之后再来参考本文。

制作引导

下载镜像

最推荐的方式还是去官网下载,网站下方除了提供种子外还有各个国家的镜像站,选择一个离自己物理位置近的下载即可。

下载完成就是一个大约 800M 大小的 iso 镜像,可以看到,相对于动辄好几G的其他常见的发行版,archlinux 可以说是非常的轻量,基本上允许你从头一步一步安装一个属于你自己的 archlinux !

制作引导盘

我一般会选择图形化页面的软件方便烧录,这里推荐 Etcher , 提供了Windows, MacOS, Linux所有平台的安装包。

按照如图所示的顺序很方便的就能烧录好U盘,最后重启电脑进入U盘启动,就能愉快的开始安装啦😃

开始安装

远程安装

安装过程中会输入大量的命令,如果害怕敲错,可以用另一台设备 ssh 连接过来远程操作安装,方便复制命令,操作步骤如下:

  1. 设置 root 密码
1
passwd
  1. 查看当前局域网ip地址
1
ip addr

找到当前网卡的ip地址即可,一般可能是 172.xxx.xxx.xxx 或者 192.168.xxx.xxx ,并记下来。

  1. 通过 ssh 连接即可
1
ssh root@172.xxx.xxx.xxx

输入密码后就能连接上了。之后安装本地安装的顺序继续走就可以。

本地安装

如果是第一次安装或者抱着学习的态度,还是建议本地安装,亲自敲一遍命令,你可以清楚的知道一个 linux 设备从零到能用中间基本经历了什么操作。

这大概也是 Archlinux 的魅力之一吧,常见的 Ubuntu 等安装时都提供了图形界面安装,只需要一直点击下一步就能成功安装,小白可能安装会快点,但是作为计算机从业人员,如果如果连 Linux 基本的系统结构都不清楚的话,还是不太合适的。

联网

如果是网线连接,一般会自动连接上,可以跳过这部分。

1
nmcli dev wifi connect ChinaNet-sj8h password 12345678

其中,ChinaNet-sj8h 部分是 WiFi 的名字,后面的 12345678 是你的 WiFi 密码。

网卡被禁用?

有时候会遇到连接 WiFi 的时候提示网卡被禁用,可以通过下面的操作恢复:

1
2
rfkill    # 查看被禁用的设备
rfkill unblock 1 # 启用设备

连接完成后,执行 ping baidu.com 可以检查网络是否正常。baidu 每天承受大量ddos攻击

同步硬件时间

1
timedatectl set-ntp true

如果没有任何输出,就没任何问题。

更新国内镜像源

设置仓库地址为国内镜像源,下载更快。通过下面的命令自动选择当前延迟最低的站点:

1
reflector --country China --age 72 --sort rate --protocol https --save /etc/pacman.d/mirrorlist

更新软件仓库

同步之后刷新本地的仓库索引

1
pacman -Sy

分区

查看所有的硬盘信息,确定要安装到哪里

1
fdisk -l

此命令会列出当前所有的硬盘。找到需要安装的位置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# fdisk -l
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: ST1000LM048-2E71
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: C62A2466-725D-4A41-8476-98A9686C930E

Device Start End Sectors Size Type
/dev/sda1 34 32767 32734 16M Microsoft reserved
/dev/sda2 32768 1953521663 1953488896 931.5G Microsoft basic data


Disk /dev/nvme0n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: J.ZAO QL SERIES 1TB SSD
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A3CB2D7E-242B-46AC-AB1E-B80B7CE893A1

Device Start End Sectors Size Type
/dev/nvme0n1p1 4096 2000408575 2000404480 953.9G Microsoft basic data


Disk /dev/nvme1n1: 953.87 GiB, 1024209543168 bytes, 2000409264 sectors
Disk model: INTEL SSDPEKNW010T8
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 8335BD2B-4BC6-449F-97B8-9921C663CC44

Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 1026047 1024000 500M EFI System
/dev/nvme1n1p2 1026048 2000408575 1999382528 953.4G Linux filesystem

因为我的设备有三块硬盘,所以会显示三个,然后我想安装到其中的 /dev/nvme1n1 ,然后执行下面的命令

1
cfdisk /dev/nvme1n1

cfdisk 命令会进入一个带简单的 GUI 的页面分区,首先最好删除所有的分区,然后划分一个 500M 空间的分区, Type 设置为 EFI System ,剩下的空间按照需要再分一个较大的空间,Type 设置为 Linux Filesystem 即可。然后选择 Write 写入后退出即可。

注意

可能也会包括移动设备,注意观察每个盘的空间大小

格式化刚才的分区

EFI 分区格式化

1
mkfs.fat -F32 /dev/nvme1n1p1

格式化根目录分区

1
mkfs.f2fs -f -l Archlinux /dev/nvme1n1p2

-f是强制执行,-l后面的是这个分区的Label也就是名字自己想写什么都可以, 类似windows中c、d盘前面的名字

挂载

分区之后,将硬盘挂载到当前的 Live 系统。

1
2
3
mount /dev/nvme1n1p2 /mnt
mkdir /mnt/boot
mount /dev/nvme1n1p1 /mnt/boot

/mnt 就是你将要安装的系统的根目录,然后将 EFI 目录挂载到 boot 目录。

安装基础系统

现在开始,就是真正安装你的系统了,通过 Live 系统中的 pacstrap 脚本将内核等基础软件安装的目标硬盘。

1
pacstrap /mnt linux linux-firmware linux-headers base base-devel bash-completion vim git intel-ucode f2fs-tools networkmanager wqy-zenhei openssh
  • 如果你的跟分区是f2fs,f2fs-tools是必须的

  • intel-ucode是根据你的cpu来的如果你的是amd的那就是amd-ucode

  • networkmanager也是必须的,因为你要联网,而且plasma和gnome都通过是networkmanager来管理网络的

  • wqy-zenhei是中文字体,避免安装界面后乱码

生成自动挂载配置

1
2
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab

第一个命令是生成开机自动挂载配置,生成完之后一定要查看一下内容,确定是你刚才挂载的硬盘,否则会无法启动。

初始化系统

现在开始系统运行所需要的包括内核等基础软件已经安装完成,需要通过 arch-chroot 切换到新系统来初始化。

1
arch-chroot /mnt

chroot 指的就是以 root 身份进入当前挂载的系统,后续如果系统出现问题,也可以通过 chroot 来进行修复。

设置时区

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

设置系统语言

1
vim /etc/locale.gen

在当前文件中取消注释en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8 这两行,然后保存退出。

然后执行

1
locale-gen

初始化语言。

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

这里设置英语为默认语言。

不推荐在这里设置系统默认语言为中文,这样会生成很多中文路径,后续安装会比较麻烦。

设置必要的系统启动项

1
systemctl enable sshd NetworkManager

使用 systemd-boot 创建系统引导

1
bootctl install

编辑引导内容

1
vim /boot/loader/loader.conf

文件内容参考下面

1
2
3
4
default arch
timeout 5
console-mode max
editor no
  • default arch就是默认启动 /boot/loader/entries/arch.conf
  • timeout 5 就是引导是等候按键输入的时间,如果是单系统可以设置为0

然后编辑/boot/loader/entries/arch.conf 文件

1
2
3
4
5
title       Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=UUID=7a6f4b50-3914-4745-b907-a11a26258215 rw quiet splash vt.global_cursor_default=0
  • title可以随便写,意思就是当前系统的命名

  • linux 这里是linux的内核,通过bootctl install就已经把内核复制到了/boot下

  • initrd 这是要加载的模块,我这里加了intel-ucode.img和initramfs-linux.img

    • initramfs-linux.img是启动系统必须要的模块,它在内核启动后第一个执行
    • 如果你是amd的cpu可以把intel-ucode换成amd-ucode.img
  • options 这是启动附加的参数

    • root=UUID=7a6f4b50-3914-4745-b907-a11a26258215 这里指定了根目录分区,UUID为查找根目录分区方式,后面7a6f4b50-3914-4745-b907-a11a26258215为根目录分区的UUID
    • rw 这个内核参数设置根目录分区为可写可读
    • quiet splash vt.global_cursor_default=0 这一堆设置安静的引导,也就是没有引导输出在显示器上,直到引导完成进入登陆页面

在 vim 中执行 :r!blkid 可以输出当前硬盘信息

删除其他的,保留UUID即可

添加 pacman 的 hooks 文件,这样每次更新内核都会自动更新 efi 分区

1
2
mkdir /etc/pacman.d/hooks
vim /etc/pacman.d/hooks/100-systemd-boot.hook

文件内容如下

1
2
3
4
5
6
7
8
9
[Trigger]
Type = Package
Operation = Upgrade
Target = systemd

[Action]
Description = Gracefully upgrading systemd-boot...
When = PostTransaction
Exec = /usr/bin/systemctl restart systemd-boot-update.service

设置用户

设置 root 密码

1
passwd

创建自己的用户

因为 root 的权限太高,日常使用中非常容易误操作产生不可逆的破坏,所以一定要使用一个低权限账号来日常使用。

1
useradd -m chaofan

添加用户组

1
usermod -aG wheel,users,storage,power,lp,adm,optical chaofan

添加 sudo 权限

1
visudo

操作方式和 vim 相同,取消注释 wheel ALL=(ALL:ALL) ALL 这一行即可。

设置当前用户密码

1
passwd chaofan

配置完成后,重启即可

1
2
exit
reboot

重启后记得拔掉 U盘,进入新系统。

安装桌面环境

重启后依然是熟悉的终端

输入刚才创建的用户名和密码登陆即可,然后重新连接好网络。

设置 AUR

首先编辑 pacman 的配置文件。

1
sudo vim /etc/pacman.conf

添加 archlinuxcn 源

1
2
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch

然后取消 [multlib] 的注释。然后安装 yay 这是一个 AUR 管理器,可以安装来自 AUR 的包,使用方法和 pacman 相同。

1
sudo pacman -S yay

安装桌面环境

linux 下常见的桌面环境包括KDEGnome,我比较喜欢 gnome,整体风格更统一。

首先安装显卡驱动

1
yay -S xf86-video-intel vulkan-driver mesa-vdpau libva-mesa-driver

然后安装桌面环境

1
yay -S gnome

设置启动管理器开机自启

1
sudo systemctl enable gdm

最后重启,这样桌面环境就成功安装完毕了。