此文大多数来自这篇文章,但是修改了里面一些错误的地方和优化了一些内容,以及增加了桌面安装部分和其他一些常用软件安装(wayland下的输入法/firefox等)

https://zhuanlan.zhihu.com/p/112541071

正文开始:

安装前的准备

在Windows还没有被消灭之前,先用它制作一个启动U盘(不是最终安装的那个u盘),然后用这个U盘来安装Arch Linux。为完成这一操作,需要准备如下工具:

  1. Windows电脑开机(什么!你没有Windows?那你还要装什么Arch Linux?);
  2. 下载Arch Linux镜像文件——>清华大学开源软件镜像站
  3. 下载一个制作启动U盘的工具,这里我选择——>rufus;[这里注意,rufus写u盘镜像的时候,用u盘先转换为GPT格式[guid],可以用diskgenius来整盘转;然后rufus写镜像时分区类型选GPT)
  4. 一个容量2G以上的大U盘。(安装u盘)
  5. 一个用于安装移动操作系统的256G以上的移动u盘(系统u盘)

使用rufus制作启动U盘的步骤非常简单,选一下系统镜像文件,选一下自己的U盘(一般会软件自动选好的),点开始,安心等着就完事了。

来自rufus官方网站的截图

准备安装

把制作好的启动U盘插上电脑,开机,疯狂地按那个能够启动电脑BIOS的键。在BIOS中将U盘设为第一启动项,保存退出,就可以等着进入U盘里面的系统了。如果显示出如下界面,说明启动U盘制作成功了[我的界面没有这么炫,只有文字]。选择第一个选项就可以开始安装系统了,如果进不去系统,说明启动U盘没有做好,可能需要重新制作一份。

等待进入启动U盘当中的Linux操作系统

等着系统自己启动一小会儿,当进入到如下界面以后,就可以开始安装系统了。

成功进入启动U盘当中的Linux系统

首先,我们需要确定自己的启动模式(UEFI/BIOS):[我用的是UEFI模式,一般u盘安装盘和u盘系统盘都转为了GPT,且BIOS里配置了UEFI(不要开CSM)那这里一般就是UEFI]

ls /sys/firmware/efi/efivars

如果提示不存在这个文件,那就说明我们的启动模式是BIOS,否则就是UEFI。下图是一个BIOS启动模式的示意图。

BIOS启动模式示意图

【UEFI启动模式】如果屏幕上出现一大把东西,那就说明电脑支持UEFI启动模式。UEFI启动模式需要在BIOS当中开启,如果老铁的硬件比较新,但又不是UEFI启动模式,可能需要去自己的BIOS当中去看看了。

UEFI启动模式示意图

然后,我们需要给电脑连上互联网。使用ip link查看电脑的所有网卡,然后用rfkill确保网卡能用。我的笔记本电脑使用无线网卡连接网络,对应网卡的名字是wlan0,这个名字在后面还会用到。

确定所有网卡的名字

使用命令行程序iwctl连接互联网。首先,键入iwctl进入该程序,可以发现终端窗口发生了一些微妙的变化。

进入iwctl程序后的界面示意图

输入help可以查看该程序的帮助文档,在这里我们主要使用几个以station开头的命令。

iwctl帮助文档当中值得注意的几个以station开头的命令

可以通过几个命令的素质四连可以很快乐地完成互联网的连接。分别是station list列出所有可用无线网卡的名字,然后用station <wlan> scan扫描当前可用的无线网(<wlan>需要换成自己的无线网卡名字,我的是wlan0),再然后使用station <wlan> get-networks展示扫描结果(在敲命令的过程中随时都可以使用TAB键进行命令补全),最后使用station <wlan> connect <name>去连接相应的无线网,需要输入无线网络的密码(显示为星号)。效果如下所示:

iwctl素质四连完成互联网连接

值得注意的是,中文名无线网络会被显示成方块块(就比如上面图片当中就有一个wifi的名字全是方块),所以把无线网名称设置为纯英文还是有必要的哈。完成无线网设置后,使用quit退出iwctl,回到熟悉的终端当中。

【有线连接】如果电脑插上了网线,那就应该能直接连上互联网了,无需任何设置[这里注意,全部安装完毕,用u盘系统盘启动后,这个wifi又失去了连接配置,而且station命令也没了,可以用NetworkManager里的一个命令在root账号情况下重新配置wifi,具体命令后面会讲]。

使用ping -c 4 baidu.com测试一下是否成功地连上了互联网,如果输出和下图非常类似的话,那就是成功了。有时候可能不会立马就连上网,可以过十几秒再试试ping

测试是否成功地连接上了网络

正式开始安装系统了,首先更新一下系统时钟:

timedatectl set-ntp true 

什么输出都没有的话,就说明设置成功了。在Linux宇宙,啥输出都没有是最好的结果。可以用timedatectl status查看一下系统时钟状态,这里的时间应该是UTC时间。

[注意,这里可以不用用timedatectl设置时区那么快,后面会有设置]

设置系统时钟

现在开始做硬盘分区了,BIOS启动模式和UEFI启动模式的分区会有点不同,老铁们请移步查看archlinux wiki获取更多信息。输入cfdisk就会进入一个非常好看的文本用户界面。

【多硬盘情形】直接输入cfdisk默认处理的是/dev/sda[注意自己安装的情形是一定要通过后面的cfdisk /dev/xxx选择系统u盘的],如果老铁有很多硬盘,可以先用fdisk -l查看所有硬盘名称,然后用cfdisk /dev/XXX处理相应硬盘。

如果是BIOS启动模式,首先删掉所有现有分区,然后新建两个分区,一个至少512M的swap分区,一个用掉所有剩余空间的分区。用type设定各个分区的格式,swap分区设定为Linux swap,另一个分区取默认值83 Linux

UEFI启动模式】如果是UEFI启动模式,同样删掉所有现有分区(这个最好安装前就先把系统u盘的所有分区删除掉),然后新建三个分区,一个300M的boot分区,一个至少512M的swap分区(我选了2G),最后一个分区用掉所有剩余空间。用type设定各个分区的格式,boot分区设为EFI Systemswap分区设为Linux swap ,剩下的分区设为Linux root x86-64

[这里解释一下,一开始Free Space里只有一个未分区的硬盘,Free Space选择它,最下面有[New],按下New后,下面会提示new的分区大小是多少,第一次对Free Space我是用来分出boot分区的,因此删除默认给出的大小,输入300M;

接着继续选择Free Space,第二次也是New 输入2048M,第三次选择Free Space New后就用它默认的分区大小回车即可(第三个分区用剩余的全部容量),接着再分别选择boot swap root三个分区分别选择下面的Write回车]

选择write写入分区表(看上面一点解释,是三个分区分别都write),在出现的对话框中用yes确认写入后退出cfdisk。分区完成以后就要格式化一下硬盘,那个大于512M的分区格式化为swap,命令如下:

[我这里的swap由于是第二次分的,所以它在我这里是/dev/sdc2,当然不绝对,要看分区具体的描述决定]

mkswap /dev/sdXY
swapon /dev/sdXY

这里面的sdXY要按照自己的实际情况来填,在我的例子当中我只有一个硬盘,同时swap分区是放在sda2分区的,这里我的参数就是/dev/sda2。然后再格式化我的/dev/sda3,相应的命令是mkfs.ext4 /dev/sda3(这个是root分区,roo分区因为最大所以格式化会比较久)。如果分了更多的区,那就要依次进行格式化。这个格式化操作会比较慢一些,略微等一下就好。如果不记得自己的分区表了,可以用cfdiskfdisk -l检查一下自己的分区表,可以从容量和类型等属性来判断具体某个分区是干什么用的。

【UEFI启动模式】如果是UEFI启动模式,boot分区要格式化为FAT32分区(boot分区就是那个EFI System的)。

mkfs.vfat -F32 /dev/XXX
格式化硬盘

格式化完成以后就要挂载硬盘,因为这个时候的系统是运行在U盘里的,而你要对电脑的硬盘进行操作,显然需要挂载一下,相当于把硬盘当成大号U盘(系统u盘)插到小u盘(安装u盘)上面。命令当中的/dev/sdXY需要根据实际情况设置为自己的根目录,也就是那个比较大,占掉所有剩余空间的硬盘分区(root目录,ext4文件系统的那个,我的是/dev/sdc3)。

mount /dev/sdXY /mnt

【UEFI启动模式】如果是UEFI启动模式,需要在/mnt下新建一个boot文件夹,然后把boot分区挂载到该文件夹下(注意这里是boot分区,那个EFI System的而非root分区)。如果有更多硬盘,也可以在这个时候用同样的方法挂载上来。

mkdir /mnt/boot
mount /dev/XXX /mnt/boot

正式安装

选择合适的镜像源,使用vim打开/etc/pacman.d/mirrorlist,找一个感觉速度比较快的镜像源用dd切掉,gg到首行按p粘贴一下(最上面的最优先),然后:wq存储并退出。这样在安装软件的时候,网速就会比较快了。当然也可以直接使用清华镜像源(即第一个Server上面加一行:

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

),请参考如下帮助文档。

调整完镜像源以后,可以刷新一下软件包缓存:

pacman -Syy

现在可以正式开始安装系统了,安装系统使用pacstrap,输入如下命令安装一些基础包:

pacstrap /mnt base linux linux-firmware base-devel

除了这些包以外,我们还可以安装许多其他的包,比较重要的是一定要安装一个网络管理器和一个文本编辑器,否则新系统启动后连不上网或者是改不了配置文件就傻了。

pacstrap /mnt networkmanager dhcpcd vim

networkmanager提供nmcli(命令行工具)和nmtui(文本界面工具)用来联网,dhcpcd用来动态获取ip地址,vim用来编辑配置文件。只要能连上网,别的软件都可以晚点装,目前装这么多东西就足够开机了。需要等待安装过程完成以后,再执行后续的操作,现在可以出去上个厕所先。

生成分区表:

genfstab -U /mnt >> /mnt/etc/fstab

如果挂载了其他的硬盘,那么这一步会把他们的相关信息写入配置文件,开机启动后会自动完成硬盘挂载。如果在前面的操作当中没有挂载其他硬盘,系统便不会把相关信息写入配置文件,系统启动后如果想要使用其他硬盘,还需要手动挂载。

进入新系统:

arch-chroot /mnt

设置时区(当然了,如果不在国内肯定就不设置上海的时区了哈):

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置硬件时间

hwclock --systohc

本地化设置,使用vim打开/etc/locale.gen,把en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8取消注释,保存退出。运行下面两条命令:

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

注意到这里设置的是en_US.UTF-8,这是因为中文在终端中可能会被显示为方块块。

设置网络(这里的myhostname取一个自己喜欢的名字)(这里的网络应该是错误的说法,感觉这里设置的是windows下的主机名,我的是xxx-PC):

echo myhostname >> /etc/hostname

使用vim打开/etc/hosts,在里面输入下面三行内容(myhostname换成上面自己取的名字,localdomain随便取一个自己喜欢的组织名):

127.0.0.1	localhost
::1		localhost
127.0.1.1	myhostname.localdomain	myhostname

设置root用户的密码(连输两遍,输入时无显示):

passwd

intel的CPU安装intel-ucodeamd的CPU安装amd-ucode。如果不太确定自己的cpu型号,可以安装一个neofetch,然后使用neofetch查看。(不知道能不能两个都安装?)

# 可选项
pacman -S neofetch
neofetch # 查看cpu和显卡信息

# 必选项
# 但是需要根据实际情况安装其中某一个就可以了 
pacman -S intel-ucode
pacman -S amd-ucode 

对于BIOS启动模式,安装grub用来启动系统,注意sdX后面没有数字:

pacman -S grub
grub-install --target=i386-pc /dev/sdX
grub-mkconfig -o /boot/grub/grub.cfg

UEFI启动模式】对于UEFI启动模式,需要同时安装grubefibootmgr

pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB 
grub-mkconfig -o /boot/grub/grub.cfg

(这里注意,上面的=GRUB的GRUB似乎可以自定义,比如可以写ArchLinux)

退出系统,准备关机了:

exit

卸载刚刚挂载上来的硬盘(卸载失败也无所谓,不强求,一般会提示busy):

umount /mnt

重启电脑(黑屏的时候记得拔掉U盘,或者是在启动前重新进BIOS设置启动顺序):

reboot

进入系统

开机后显示这样的画面,就说明我们已经成功地安装好Arch Linux系统了。

等待登录

登录的时候输入root作为用户名,密码自然是自己在安装系统的时候设置好的密码。

登录成功

安装完成后

在使用NetworkManager联网之前,先启动必要的后台服务,然后用nmclinmtui(推荐)联网就可以了。

systemctl start  NetworkManager
systemctl enable NetworkManager
systemctl start  dhcpcd
systamctl enable dhcpcd

连接上互联网以后(注意,这里需要用root账号再通过nmtui来连wifi,选择Activate xxx,然后选择对应的wifi连接),我们需要创建一个普通用户账号,一直使用root不太好。username可以改成自己喜欢的用户名,-m表示创建用户的家目录~-G表示把用户放进wheel这个

useradd -m -G wheel username

创建完用户以后,设置一下该用户的密码:

passwd username

为了让新创建普通用户能够获得管理员权限,安装sudo包:

pacman -S sudo

安装完毕以后,使用vim打开/etc/sudoers,找到%wheel ALL=(ALL:ALL) ALL这一行取消注释,然后使用:wq!强制改写该文件,使得wheel这个组内的用户都可以使用sudo

使用exit退出root帐号,用普通用户登录系统后就可以正式开始使用archlinux系统了。