VMware下ArchLinux的安装与配置
本文仅为作者记录备忘使用,还原作者安装时思路环境,实际配置请结合自身环境修正
前言
作者在使用了 macOS 后,深感类 unix 系统的 gooood 之处,决定加入 Arch-Linux 神教,所以开始了这个折腾之旅。
由于早有 ArchLinux "难入门的耳闻",所以准备先在虚拟机上试一下,避免火葬场。
正文
1. VMware 虚拟机安装
真的以为我会写 VMware 怎么安装吗?
哈哈
补充一下:VMware 记得调整一下网络设置
编辑 -> 🛜虚拟网络编辑器
新建的虚拟机中,网络如果有问题的话,也要自己手动调整一下。 虚拟机 -> 设置 -> 网络适配器 参考教程
还有个槽点:
VMware 安装后,默认的启动方式应该是 BIOS 启动。 现在的挺多教程应该都是 UEFI 启动,所以要注意下(因为没注意看跟着教程翻车了)。
虚拟机 -> 设置 -> 选项 -> 高级 -> 固件类型 -> UEFI
2. ArchLinux 安装
- 官方 Wiki:https://wiki.archlinux.org
- 官方 Wiki (CN):https://www.archlinuxcn.org
- 作者跟着的教程:https://arch.icekylin.online/guide/rookie/basic-install
1. 进入安装环境
如果是 UEFI 启动的话,正常的启动是这样的:

04A9731D-1B1D-496B-88BD-37CAADDD885E.png
2. 确定是否为 UEFI 模式
作者这一步没有确认好,所以上一次的安装翻车了。
ls /sys/firmware/efi/efivars

3. 禁用 reflector 服务
这里按照教程的原话:
2020 年,archlinux 安装镜像中加入了
reflector服务,它会自己更新mirrorlist(软件包管理器pacman的软件源)。在特定情况下,它会误删某些有用的源信息。 这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。
systemctl stop reflector.service
systemctl status reflector.service
当然,有条件的宝宝可以配置一下代理。
什么? 你问我哪里来的代理? 没准翻翻我前面的文章能看出来点什么端倪。
export https_proxy=http://127.0.0.1:6152
export http_proxy=http://127.0.0.1:6152
export all_proxy=socks5://127.0.0.1:6153
4. 测试网络联通性
这还用说吗哈哈(
ping www.baidu.com
5. 更新系统时钟
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态

6. 更换国内软件源
输入以下命令进行编辑:
由于是虚拟机环境,所以这里图方便就直接编辑了。 生产环境建议先备份后操作!
vim /etc/pacman.d/mirrorlist
部分常用的国内源:
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 # 兰州大学开源镜像站
7. 硬盘分区
7.1 分区
这里按照教程使用 Btrfs 文件系统。
我们按照 ArchWiki 上的教程,一般来说需要三个分区(根目录和用户主目录视作一个就好了):
/根目录/home用户主目录/bootEFI 分区[SWAP]分区
我们首先使用 lsblk 进行查看下硬盘:

我们需要使用 nvme0n1 这一硬盘安装。
cfdisk /dev/nvme0n1
创建三个分区如下:

之后使用 fdisk -l / lsblk 进行查看分区的情况:

7.2 格式化并创建 Btrfs 子卷
首先格式化 EFI 分区:
mkfs.fat -F32 /dev/nvmexn1p1
虚拟机才可以这么干,双系统一般 EFI 分区已经有系统的文件了。
格式化 Swap 分区:
mkswap /dev/nvmexn1p1

格式化 Btrfs 分区:
mkfs.btrfs -L arch /dev/nvme0n1p3

创建子卷,把 Btrfs 分区挂载到 /mnt 下, 再使用 df -h 查看下挂载情况:
mount -t btrfs -o compress=zstd /dev/nvme0n1p3 /mnt

通过以下命令创建两个 Btrfs 子卷,之后将分别挂载到 / 根目录和 /home 用户主目录:
btrfs subvolume create /mnt/@ # 创建 / 目录子卷
btrfs subvolume create /mnt/@home # 创建 /home 目录子卷
btrfs subvolume list -p /mnt # 查看子卷情况

子卷创建好后,将 /mnt 卸载掉,以挂载子卷:
umount /mnt
8. 挂载
挂载有顺序,需要从根目录开始挂载。
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p3 /mnt # 挂载 / 目录
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p3 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot # 创建 /boot 目录
mount /dev/nvmexn1pn /mnt/boot # 挂载 /boot 目录
swapon /dev/nvmexn1pn # 挂载交换分区
然后使用 df -h 查看挂载情况:

再使用 free -h 查看下 Swap 的情况:

9. 安装系统
安装系统:
# 如果使用 btrfs 文件系统,额外安装一个 btrfs-progs 包
pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
安装基础组件:
pacstrap /mnt networkmanager vim sudo zsh zsh-completions
10. 生成 fstab 文件
fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:
genfstab -U /mnt > /mnt/etc/fstab
检查一下:
cat /mnt/etc/fstab

11. 切换到新系统
arch-chroot /mnt
3. 新系统的设置
1. 设置主机名与时区
vim /etc/hostname
vim /etc/hosts
设置时区:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
硬件时间设置:
hwclock --systohc
2. 设置 Locale (语言)
编辑 /etc/locale.gen 文件:
vim /etc/locale.gen
取消以下行的注释:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
然后生成 locale:
locale-gen
向 /etc/locale.conf 输入内容:
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
3. 为 root 用户设置密码
passwd root
4. 安装引导程序
安装引导程序对应的包:
pacman -S grub efibootmgr os-prober
安装 GRUB 到 EFI 分区:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
编辑 grub:
vim /etc/default/grub
进行如下修改:
- 去掉
GRUB_CMDLINE_LINUX_DEFAULT一行中最后的quiet参数 - 把
loglevel的数值从3改成5。这样是为了后续如果出现系统错误,方便排错 - 加入
nowatchdog参数,这可以显著提高开关机速度
生成 GRUB 所需的配置文件:
grub-mkconfig -o /boot/grub/grub.cfg

5. 完成安装
exit
umount -R /mnt
reboot
6. 进入系统后的设置
密码账号就是刚刚设置的。
当然,更推荐再创建一个非 root 用户进行操作。
systemctl enable --now NetworkManager # 启用网络
ping www.baidu.com

我们也可以安装一个"必玩"项目:
pacman -S fastfetch

恭喜你,已经安装好 ArchLinux 啦~
结语
其实没什么想说的,只是在折腾的路上,记录一下自己的学习过程。
学习永无止境。