前言
简单记录一下安装过程.以下内容大部分取取自于此文章,本文是对ESXI下安装虚拟机基于本人体验而定向修改了下.
以下为UEFI模式启动.取消了安全UFEI引导
更新系统时钟
1 | timedatectl set-ntp true |
分区
EFI 分区 512MB
SWAP 分区 4G
根目录 分区 剩余全给 (如果需要给普通用户home的话可以再建)
首先将磁盘转换为 gpt 类型,这里假设比如你想安装的磁盘名称为 sdx。如果你使用 NVME 的固态硬盘,你看到的磁盘名称可能为 nvme0n1。
1 | lsblk |
接下来使用 cfdisk 命令对磁盘分区。进入 cfdisk 后的操作很直观,用键盘的方向键、Tab 键、回车键配合即可操作分配各个分区的大小与格式。一般建议将 EFI 分区设置为磁盘的第一个分区,据说有些主板如果不将 EFI 设置为第一个分区,可能有不兼容的问题。其中 EFI 分区选择EFI System类型,其余两个分区分别选择Linux swap, Linux filesystem类型。
1 | cfdisk /dev/sdx |
分好后,如图所示

格式化
建立好分区后,需要对分区用合适的文件系统进行格式化。这里用mkfs.ext4命令格式化Linux filesystem类型的分区,用mkfs.vfat命令格式化 EFI 分区。如下命令中的 sdax 中,x 代表分区的序号。格式化命令要与上一步分区中生成的分区名字对应才可以。
磁盘若事先有数据,会提示你: ‘proceed any way?’ 按 y 回车继续即可。
1 | mkfs.ext4 /dev/sdax |
挂载
在挂载时,挂载是有顺序的,先挂载根分区,再挂载 EFI 分区。 这里的 sdax 只是例子,具体根据你自身的实际分区情况来。
1 | mount /dev/sdax /mnt |
添加国内镜像源(可选)
可选,但不推荐.推荐走代理以避免使用国内的镜像等服务.
使用如下命令编辑镜像列表:
1 | vim /etc/pacman.d/mirrorlist |
其中的首行是将会使用的镜像源。添加中科大或者清华的放在最上面即可。
1 | Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch |
如果其速度不佳,可以手动指定其他镜像源。完整的镜像源列表可参考官方镜像源生成器。
镜像源(如 arch linux 清华镜像源)以及第三方源(如 archlinux-cn)可以知道你的 ip 是什么,什么时候更新了系统,什么时候检查了系统,什么时候更新了什么软件,你安装的软件列表是什么。在威权国家的镜像源维护者完全有可能根据威权当局的要求提供这些数据,很多维护者在网络上几乎是实名上网的,他们没有任何抵抗能力,进一步的,威权国家可以根据这些元数据与你产生的其他元数据进行比对,从而对你进行进一步的定位与辨识。简单举一个例子,要求维护者提供或监视安装了 v2ray/qv2ray 等软件包的使用者的 ip,以及安装时间,以及其全部软件列表。
如果你在安装 arch linux 时的网络已经处于代理模式下,可以选择一个与你代理位置较近的,非威权国家的镜像源来使用。如果你在安装 arch linux 时的网络环境没有代理,那么在安装结束后,需要尽快更换一个非威权国家的镜像源来使用。如下列举一些较为优质的国际源。
1 | Server = https://mirror.archlinux.tw/ArchLinux/$repo/os/$arch |
安装系统
部分是可选的
1 | pacstrap /mnt base base-devel linux linux-headers dhcpcd vim open-vm-tools gtkmm3 net-tools asp wget openssh |
生成 fstab 文件
fstab 用来定义磁盘分区
1 | genfstab -U /mnt >> /mnt/etc/fstab |
可选: 复查一下 /mnt/etc/fstab 确保没有错误
1 | cat /mnt/etc/fstab |
环境切换
把环境切换到新系统的/mnt 下
1 | arch-chroot /mnt |
时区设置
设置时区,在/etc/localtime 下用/usr 中合适的时区创建符号连接。如下设置上海时区。
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
时间设置
随后进行硬件时间设置,将当前的正确 UTC 时间写入硬件时间。
1 | timedatectl set-ntp true |
语言设置
Locale 决定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。
首先使用 vim 编辑 /etc/locale.gen,去掉 en_US.UTF-8 所在行以及 zh_CN.UTF-8 所在行的注释符号(#)。这里需要使用 vim 的寻找以及编辑功能,如果你忘记了,请翻到上一节复习 vim 的操作。
1 | vim /etc/locale.gen |
然后使用如下命令生成 locale。
1 | locale-gen |
最后向 /etc/locale.conf 导入内容
1 | echo 'LANG=en_US.UTF-8' > /etc/locale.conf |
网络设置
1 | systemctl enable dhcpcd.service |
设置主机名
首先在/etc/hostname设置主机名
1 | vim /etc/hostname |
加入你想为主机取的主机名,这里比如叫 myarch。
接下来在/etc/hosts设置与其匹配的条目。
1 | vim /etc/hosts |
加入如下内容
1 | 127.0.0.1 localhost |
某些情况下如不设置主机名,在 KDE 下可能会存在网络情况变更时无法启动 GUI 应用的问题,在终端中出现形如
No protocol specified qt.qpa.xcb: could not connect to display的错误,这种情况较为少见[3][4][5]。
为 root 用户设置密码
1 | passwd root |
安装微码
1 | pacman -S intel-ucode |
安装引导程序
1 | pacman -S grub efibootmgr |
接下来编辑/etc/default/grub 文件,去掉GRUB_CMDLINE_LINUX_DEFAULT一行中最后的 log level 参数
同时在同一行加入 nowatchdog 参数,这可以显著提高开关机速度.
1 | vim /etc/default/grub |

另外,GRUB_TIMEOUT=5意思是开机引导时间为5秒,这里建议改为1秒(看个人喜好).
最后生成 GRUB 所需的配置文件
1 | grub-mkconfig -o /boot/grub/grub.cfg |
完成安装
1 | exit |
相关配置
Open-VM-Tools
可选,非必要: 先尴尬地查看下系统状态
1 | systemctl status |
然后启动Open-VM-Tools相关服务并设置为开机启动
1 | systemctl enable --now vmtoolsd.service |
可选,非必要: 然后看看都在运行没.
1 | systemctl status vmtoolsd.service |

启动后,我们可以看到,支持ESXI的关机操作了~
Vim /etc/default/grub

官方 VMware Tools(强烈不推荐,建议忽略)
1 | pacman -R open-vm-tools |
系统升级
1 | pacman -Syu |
其他
删除软件包
删除单个软件包,保留其全部已经安装的依赖关系
1 | pacman -R package_name |
删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:
1 | pacman -Rs package_name |
警告: 删除类似 gnome 这样的软件包组时,将会忽略组中软件包的安装原因,因为实际操作上执行的是逐一删除软件组的每一个软件,依赖软件包的安装原因不会被忽略。
上面这条命令在移除包含其他所需包的组时有时候会拒绝运行。这种情况下可以尝试
1 | pacman -Rsu package_name |
要删除软件包和所有依赖这个软件包的程序:
警告: 此操作是递归的,请小心检查,可能会一次删除大量的软件包。
1 | pacman -Rsc package_name |
要删除一个被其他软件包依赖的软件包,但是不删除依赖这个软件包的其他软件包:
警告: 此操作有破坏系统的能力,应该尽量避免使用。详情请看 避免某些 Pacman 命令。
1 | pacman -Rdd package_name |
pacman 删除某些程序时会备份重要配置文件,在其后面加上*.pacsave扩展名。-n 选项可以避免备份这些文件:
1 | pacman -Rn package_name |
注意: pacman 不会删除软件自己创建的文件(例如主目录中的“点文件”不会被删除。)
清理软件包缓存
pacman 将下载的软件包保存在 /var/cache/pacman/pkg/ 并且不会自动移除旧的和未安装版本的软件包。这样做有一些好处:
- 这样允许降级软件包而不需要通过其他方式提取旧版本,例如 Arch Linux Archive.
- 被卸载的软件包可以轻易地直接从缓存文件夹重新安装,不需要重新从软件仓库下载。
然而,需要定期手动清理缓存来避免该文件夹无限制增大。
pacman-contrib 提供的 paccache(8) 脚本默认会删除所有缓存的版本和已卸载的软件包,除了最近的3个会被保留:
1 | paccache -r |
可以启用paccache.timer来每周删除不使用的包
1 | systemctl enable --now paccache.timer |
要删除目前没有安装的所有缓存的包,和没有被使用的同步数据库,执行:
1 | pacman -Sc |
删除缓存中的全部文件,使用两次-c开关。这是最为激进的方式,将会清空缓存文件夹:
1 | pacman -Scc |
更多信息请查看wiki














