目录
前言
我在自己安装了Arch到笔记本上后尝试安装到VMware中,但我看到的教程可能有点过时或不太正确,所以我照着archlinux 简明指南文档编写了这篇教程,在开机后的步骤和物理机的装机可以通用,在安装时确保网络通畅,因为Arch的安装需要联网下载一些软件包和其他的依赖。
一、前置准备(镜像、虚拟机创建)
1.1 下载镜像
在华为开源镜像站上下载最新的Arch Linux镜像,点击下载。

然后在下载路径上看到这个镜像文件。

记住文件的位置,下面要用到。
1.2 在VMware中创建虚拟机
打开VMware,点击创建虚拟机。

选择典型,点击下一步。

选择从镜像创建,点击浏览选择刚才下载的镜像,然后点击下一步。

客户机操作系统选择Linux,版本选择其他 Linux 6.x 内核 64 位,然后点击下一步。

添加一个虚拟机名称,用于在VMware中显示,我这里就写了Arch Linux,然后点击下一步。

输入磁盘大小,如果介意可以只分配20GB甚至更小,但要留足至少10GB用于安装系统文件和虚拟机内的操作,再预留运行内存x2的容量用于创建swap分区,不建议将虚拟硬盘分为多个文件,完成后点击下一步。

到这一步就要分配运行内存和CPU了,点击自定义硬件。

我的电脑配置较高,所以我分配的比较豪横,建议分配1核2GB(内存大小在下文有关联,修改时需要注意)
设置完硬件资源后点击关闭。

点击完成以创建虚拟机。

完成虚拟机创建后不要急着开机!!!
1.3 设置虚拟机的UEFI引导
虚拟机创建完成后的界面如下,点击编辑虚拟机设置。

点击 选项 -> 高级 -> 固件类型 -> UEFI -> 确定,操作流程如下。

现在才算真正的完成了虚拟机创建!可以开始安装系统了。
二、启动系统与系统状态备份
2.1 启动虚拟机
点击开启此虚拟机进行开机。

进入这个界面后如果不进行操作会默认选第一项,直接放着不管就行,如果不想等,可以在虚拟机内点击回车。

在一阵命令行滚动后看到这个界面就可以开始操作了。

2.1.0 外部链接
虚拟机内没法直接粘贴命令,我们可以通过邪修的方式将部分步骤提前,用外部命令行就可以边看本教程边粘贴命令到虚拟机外的命令行上,简化Arch Linux安装
我的物理机是Windows 11,所以我选择使用powershell的ssh链接到虚拟机内。
- 首先测试外部链接。
ping www.csdn.com

如果是像图中一样出现了一些链接的信息就直接打断,证明网络没有问题,跳过以下的网络链接部分。
- 链接网络
iwctl # 进入交互式命令行
device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出所有 wifi 网络
station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可
exit # 连接成功后退出
输入iwctl进入命令行交互模式,准备进行网络链接。

输入 device list 显示所有无线网卡的设备名。由于我是虚拟机进行演示的,所以没有无线网卡,如果的话名字就在第一列

后面与网络链接有关的命令都要用到设备名称!!!
使用station wlan0 scan进行网络扫描,此处的wlan0替换为实际的name(上图中圈出来的实际值);
接着使用station waln0 get-networks显示附近的WiFi;
看到熟悉的WiFi名字后使用station wlan0 connect WiFiWiFi这个单词换成实际的WiFi名;
在链接命令输入后需要输入密码,特别注意的是这个状态是仅英文输入的;
链接成功后就可以输入exit退出这个状态了。
再次使用ping命令测试链接,此时应该就是可以联网的状态,可以进行后续的链接操作了。
- 设置root的密码
输入passwd回车,然后输入密码,此处的密码是不显示的,所以放心大胆的输入进行了。

- SSH链接
使用ip addr命令显示IP地址

图中的显示的IP是192.168.220.142,这个IP将会用于在外部链接时使用。
在Windows上使用Win+R快捷键输入powershell后回车,打开Power Shell。

在power shell中输入ssh root@192.168.220.142并回车。

输入yes并输入密码,密码不显示所以尽量不要出错,然后可以看到和在arch安装界面相似的输出。

在这个状态下可以复制命令并在power shell窗口右键快速粘贴(Windows Power Shell使用小技巧)
2.1.1 禁用 reflector 服务
2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。
通过以下命令将该服务禁用:
systemctl stop reflector.service
通过以下命令查看该服务是否被禁用,按下 q 退出结果输出:
systemctl status reflector.service
确认输出为下面圈出来的部分后可以按Q退出

然后可以输入clear命令清除终端面板。
2.1.2 更新系统时钟
使用 timedatectl 确保系统时间是准确的。这一步不是可选的,正确的系统时间对于部分程序来说非常重要:
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态
我的物理机时区是东八区,所以Arch Linux的UTC标准时间和物理机时区正好相差8小时。

2.1.3 更换国内软件仓库镜像源加快下载速度
使用 vim 编辑器修改 /etc/pacman.d/mirrorlist 文件。将 pacman 软件仓库源更换为国内软件仓库镜像源:
vim /etc/pacman.d/mirrorlist
进入编辑后如下,将光标移动到红线处新增行,新增时只需要按o键就会在当前光标处向下新增一行并进入编辑模式。

将以下镜像仓库添进配置文件,如下所示。
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站

由于配置文件有优先级,所以需要将想用的镜像源放到最上面,然后按Esc在输入:wq保存并退出。
2.2 快照操作
在安装过程中可能会有一些小意外,建议初学者或刚从其他Linux换到Arch的读者每个命令前都对虚拟机先进行一次快照备份,可以回溯,增加容错。
在VMware中依次点击。

在弹出框内输入快照名称,记录安装进度方便回退

如果安装过程出事了,可以进行状态回退,回到拍摄快照的时候,现在再进行一些安装操作就可以放心大胆的玩了!
三、分区
在对硬盘分区时确保至少有以下几个成分
成分 大小 作用 boot大于265MB 引导分区 swap运行内存大小x2 swap交换分区,在系统休眠时保存内存中的数据到硬盘 其他部分 剩余容量 主要的系统存储,主分区 因为在arch安装时是将系统直接载入内存,所以在加载出系统可交互命令行就可以将启动U盘拔出,系统引导也是在此后创建的。
3.1 硬盘检查
我为了模拟物理机的硬盘情况,在VMware中修改了一下硬盘配置,感兴趣的可以同步一下我的设置,但这需要将第二步的操作重走一次,不建议初学者同步,根据后续操作灵活变通即可
3.1.0 模拟真实的一个nvme固态+sata硬盘进行装机的状态
在虚拟机设置中删除原有配置并点击添加



确认添加的是nvme(作为系统盘),点击下一步。

创建新的虚拟硬盘即可,点击下一步

这个容量可以小一点,一般在VMware中设置成32是足够的,点击下一步。

虚拟硬盘的文件在文件系统中的文件名无关紧要,但建议加上后缀nvme便于标识,然后店家完成就创建了一个系统盘。

在用同样的方式创建一个10GB大小的SATA盘模拟拓展,容量不重要,在于了解初始化,同样的在文件后面添加命名的后缀。


3.2 硬盘分区
使用lsblk命令检查硬盘状态,红框分别是SATA和NVME,后面需要用到他们的名字,所以我用蓝框标出了硬盘名称。

我的情况是nvme(系统盘)+SATA(扩容盘),我的教程会将NVME作为系统盘进行分区,SATA不划分分区直接挂载。
先处理系统盘(NVME)
使用cfdisk /dev/nvme0n1对NVME进行操作,因为Linux的设备管理方案会将外部设备先显示在/dev目录下,所以前面的/dev被默认隐藏了,使用cfdisk /den/nvme0n1后进入以下界面。

如果有选择标签类型的界面就默认选择第一项GPT就行了,如下:
此时用键盘上的← →在下方的操作中选择,目前又32GB的自由空间,选择[New]创建一个分区,调整容量为256MB,这个部分是给引导的(即/boot目录),如下:

回车后创建了一个256M的分区,然后选到[Type]上回车并选择第一项将这个分区修改为/boot的EFI引导分区,然后回车。


现在的硬盘状态应该和下面一样:

使用↑ ↓选择到自由空间再次新建,这次要创建的是swap分区,注意容量一定要是内存的两倍,当前虚拟机内存是4GB,所以要创建8G,步骤如下:





将剩余空间创建成主分区,步骤如下:

以下是NVME创建完后的效果,选择写入[Write]。

cfdisk会弹出一个写入确认,输入yes回车即可。

写入后选择退出[Quit]再回车,完成了对NVME的分盘操作

对SATA进行NVME主分区一样操作即可,因为挂载是在安装完系统才进行的。

3.3 分区格式化
完成了3.2部分的分区后再次使用lsblk命令检查硬盘就能看到以下分区情况

3.3.1 EFI引导分区格式化
使用mkfs.fat命令对EFI分区进行格式化,根据实际情况对硬盘分区进行格式化,在我这里就是/dev/nvme0n1p1。

3.3.2 格式化swap分区
使用mkswap对swap分区进行格式化,在我这里的swap分区是/dev/nvme0n1p2。

3.3.3 格式化主分区
使用mkfs.btrfs对存储的主分区进行格式化,这个命令可以带几个参数,也可以不带任何参数。
-L添加标签,相当于在win中的卷名称本地磁盘,在进入系统后
-c指定文件系统的压缩算法-f强制格式化设备(即使设备上已有文件系统)-d指定数据块的 RAID 策略。如 raid0、raid1、raid5、raid6、raid10、single(单盘)等。


四、挂载目录和子卷创建
为了创建子卷需要先将主分区挂载到/mnt下,在挂载前检查以下硬盘分区状态。

4.1 挂载到目录
用mount命令将硬盘挂载到目录上,挂载完成后可以检查以下目录大小确保挂载成功。
mount -t btrfs -o compress=zstd /dev/nvme0n1p3 /mnt
# nvme0n1p3是这个分区策略的主要存储分0区
# 需要根据实际情况调整
# 挂载后使用df命令查看目录情况
df -h # -h 选项会使输出以人类可读的单位显示

现在完成了目录的挂载,可以开始子卷创建和挂载了。
4.2 创建子卷
当前硬盘在初始化时使用的文件系统是btrfs,btrfs的子卷操作使用的命令是btrfs subvolume,我们需要根据前文提到的分区进行子卷创建
btrfs subvolume create /mnt/@ # 创建 / 目录子卷
btrfs subvolume create /mnt/@home # 创建 /home 目录子卷
创建完成应该是这样的,在使用btrfs subvolume检查子卷状态:
btrfs subvolume list -p /mnt
应该会有以下输出:

我的swap创建属于失误,读者不需要创建swap子卷
现在子卷创建完成,我们需要先卸载掉硬盘,才能进行子卷的挂载。
umount /mnt
4.3 挂载子卷
现在的目录中没有挂载硬盘,系统还完全在内存中,需要将刚才创建的子卷挂载到目录上,我们可以在mount命令中使用--mkdir命令让挂载操作自动创建挂载目录。
# 挂载 / 根目录目录
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p3 /mnt
# 创建并挂载 /home 用户主目录
mount --mkdir -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p3 /mnt/home
# 创建并挂载 /boot 目录
mount --mkdir /dev/nvme0n1p1 /mnt/boot
# 挂载交换分区
swapon /dev/nvme0n1p2

将SATA盘挂载到/mnt/elisya目录,在检查一下目录情况。

五、安装Linux系统内核以及基础软件
5.1 内核安装
pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
base系统基础组件,用于运行基本命令。base-devel开发编译工具链,用于源码编译。linux默认 Linux 内核。linux-firmware硬件固件支持,提高设备兼容性。linux-headers内核头文件,用于编译内核模块。(可选,非开发者无需这个部分)btrfs-progsBtrfs 文件系统管理工具。
输入上面的命令后可以看到这样的输出:

在等待一阵后看到以下结果:

如果提示 GPG 证书错误,可能是因为使用的不是最新的镜像文件,可以通过更新
archlinux-keyring解决此问题pacman -S archlinux-keyring
5.2 基础软件安装
使用以下命令安装一些基础系统管理和使用的软件。
pacstrap /mnt networkmanager vim sudo bash bash-completion
networkmanager网络管理vim在终端编辑文件的文件编辑器,建议单独学习vim的用法sudoroot权限工具,对Linux有经验的应该都知道sudo的重要性bash终端命令行执行工具bash-completionbash配套的,加上就行了git(可选)项目版本管理

安装成功的输出大概是以下的样子:

到这一步,Arch Linux最核心的系统层已经安装完成了,这个时候适合拍摄一个虚拟机快照记录以下还活着的虚拟机。
六、生成 fstab 文件
-
fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:
genfstab -U /mnt > /mnt/etc/fstab -
复查一下 /mnt/etc/fstab 确保没有错误:
cat /mnt/etc/fstab
现在可以正式的进入系统了,这些操作做完后就是在当前这个红色root中最后的时光了(雾)。
七、进入系统内的必要设置
现在需要输入arch-chroot /mnt进入到arch中;
效果如下,会看到用户名和主机已经被方括号包起来了。

7.1 设置主机名与时区
现在的主机名是默认的,没有设置的状态,可以通过以下命令设置主机名。
echo "Arch-Linux" >> /etc/hostname

主机名需要重新进入终端才会应用,先不管,继续使用下面的命令进行时区设置。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

7.2 硬件时间设置
使用如下命令将系统时间同步到硬件时间:
hwclock --systohc

7.3 设置系统语言
Locale 决定了软件使用的语言、书写习惯和字符集。
编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):
vim /etc/locale.gen # 编辑语言生成配置文件
进入后输入/进行搜索:

然后回车并按一下Esc,将光标移到行首时按下键盘上的Delete,中文行也是一样的操作,最终显示应该是没有注释的样子,如下(下图中仅显示了中文的部分):

如果设置完成后可以按下键盘上的Esc再输入:wq保存并退出。
使用locale-gen命令生成语言文件。
locale-gen

向 /etc/locale.conf 输入内容:
echo 'LANG=en_US.UTF-8' >> /etc/locale.conf
7.4 安装微码
通过以下命令安装对应芯片制造商的微码:
pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD
不是两条都需要执行!!!
选择你的CPU对应的那一行执行安装即可
我的是蓝U,所以是第一行
出现以下的命令时输入y并回车就像了,这个只是安装确认
7.5 安装引导程序
现在的系统还是在内存里面呆着,需要安装引导在下一次开机时自动载入系统,所以需要安装引导程序。
-
安装相应的包:
pacman -S grub efibootmgr📑 命令参数说明:
-S选项后指定要通过pacman包管理器安装的包:
grub—— 启动引导器
efibootmgr——efibootmgr被grub脚本用来将启动项写入NVRAM -
安装 GRUB 到 EFI 分区:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
📑 命令参数说明:
--efi-directory=/boot—— 将grubx64.efi安装到之前的指定位置(EFI 分区)
--bootloader-id=ARCH—— 取名为 ARCH,非必须参数

-
接下来使用
vim编辑/etc/default/grub文件:vim /etc/default/grub进入
vim后按下键盘上的字母A进入编辑模式
修改前:

修改后(AMD版):

修改后(Intel版):

以上是有区别的部分,在文件末尾最后一行注释需要删除:
修改前:

修改后:

最后按下Esc并输入:wq保存并退出。 -
最后生成 GRUB 所需的配置文件:
grub-mkconfig -o /boot/grub/grub.cfg最后的结果会是以下这样

ℹ️ 提示
- 在某些主板安装完成后,你会发现没有启动条目。这是因为某些主板的 UEFI 固件在显示 UEFI NVRAM 引导条目之前,需要在特定的位置存放可引导文件,不支持自定义存放
efi文件(如微星 Z170-A Gaming PRO)。解决方案是在默认启动路径下安装 GRUB。重新插入安装优盘,按原先顺序挂载目录(不需要再次创建文件夹了),chroot到/mnt,然后你可以重新用--removable安装grub2,如下命令所示。只有安装完成后你的主板不出现启动条目才需要尝试如下命令,正常安装无需执行。如有需要可以参考 ArchWiki 对应内容。grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH --removable
- os-prober 在 chroot 环境中可能无法正常运作。如果遇到这种情况,重启并引导进入系统后再次尝试生成配置文件。
现在完成了系统的全部安装,只需要记录快照后进行以下操作即可,建议现在再重新设置一次root用户的密码:
exit # 退回安装环境
umount -R /mnt # 卸载新分区
reboot # 重启
重启后看到这个界面就是arch安装成功了:

这个是引导的进入界面,输入用户名和密码就可以登入arch进行使用了。

然后在执行以下命令让网络服务开机自启即可开机联网。
systemctl enable --now NetworkManager
此时还只有命令行,对于大多数用户都不太友好,我们还需要图形化桌面的安装,我会另外写文章讲述桌面的安装,因为桌面可以有多个选择,所以是分支,链接会在我将桌面安装的教程写完后贴到此处。
GNOME桌面环境安装(需要完成下面部分的非root用户创建步骤)
八、创建非root普通用户
-
通过以下命令添加用户,比如新增加的用户叫 myusername:
useradd -m -G wheel -s /bin/bash myusername📑 命令参数说明:
-m创建用户的同时创建用户家目录-G选项后指定附加组wheel——wheel附加组可sudo进行提权-s选项后指定shell程序myusername—— 用户名(请自定义,但不要包含空格和特殊字符)
-
通过以下命令根据提示设置新用户 myusername 的密码:
passwd myusernameℹ️ 提示
弱密码已经不被接受,请设置一个较为复杂的密码,如 i_love_archlinux。
再设置一下root的默认编辑器# 写入环境变量 echo "export EDITOR='vim'" >> ~/.bash_profile # 检查是否成功 cat ~/.bash_profile # 刷新文件,让配置立即生效 source ~/.bash_profile
然后需要让wheel用户组拥有sudo的执行权# 进入配置文件 visudo再使用
/wheel搜索wheel所在的那一行,如下:

修改成下面这样(取消wheel的注释):

最后保存并退出,下一次启动的时候就可以用非root进入了!




1万+

被折叠的 条评论
为什么被折叠?



