从0开始安装Arch(虚拟机)

1,964 阅读9分钟

操作环境

实体机: Ubuntu22.04
虚拟机: VMware
安装系统: 原生Arch

注意

本文按照主流的UEFI+GPT的方式讲解,不涉及BIOS+MBR

Arch参考Wiki

官方wiki: wiki.archlinux.org/title/Insta…
第三方wiki: arch.icekylin.online/

准备工作

VMware下载安装

很简单,不详细讲,直接放出官方地址, 自行下载安装:
www.vmware.com/content/vmw…

Arch镜像下载

进入官网: archlinux.org/download/
下载种子包,然后可以用 transmission 等工具下载种子包里面的iso

创建虚拟机

这一步比较简单,需要注意的是,操作系统那边选择 Other linux6.x kernel 64-bit,因为我们需要安装的arch是linux的64为操作系统,为什么不直接选arch?因为没这选项 : )

同时还值得注意的一点是,内存必须大于等于 1024MB,默认分配的太小,系统将启动时会报错。

创建完虚拟机不要着急启动,因为我们是UEFI+MBR模式,而虚拟机默认是BIOS引导,所以这里需要调一下,打开虚拟机设置,在 "选项" -> "高级" 中的 Frimware type 里把 BIOS 改成 UEFI

image.png

OK,一切准备就绪,只差开机,开机后选择第一个即可:

image.png

回车,等待屏幕上跑完一大堆东西,屏幕上出现这个界面,则成功进入arch安装程序

image.png

安装前分析

大致流程

  1. 联网
  2. 分区
  3. 创建文件系统
  4. 挂载分区
  5. 安装系统
  6. 创建挂载文件
  7. 配置系统
  8. 安装引导
  9. 完成

分区规划

我们这里分4个分区,分别是

  • efi (300MB -- /dev/sda1)
  • 根目录 (7GB -- /dev/sda2)
  • home目录 (10GB -- /dev/sda3)
  • 交换分区 (2.7GB -- /dev/sda4)

其中 efi,根目录,交换分区是必须的,其他的按照你的喜好来

注:我分配的虚拟机配置是

  • 磁盘: 20GB
  • 内存: 2GB

安装过程

联网

因为我们是虚拟机,所以使用的是与实体机共享IP地址(NAT),那么这里我们就不需要配置网络

为确保网络正常连接,ping一下:

ping bing.com

image.png 如果ping不通,检查虚拟机设置中的网络部分,直到可以正常连接公网即可。

为什么要联网

用于后续在安装系统时,下载系统,如果没有连接互联网,则无法下载系统,这一步是必须的。

分区

这里我按照我的分区规划来分区,因为是 GPT 格式的分区表,所以我们使用 gdisk 来分区,大家可以按照自己的规划对磁盘进行分区

注意,在虚拟机里,磁盘的文件名称是 sda,请注意辨识

image.png

利用 gdisk /dev/sda 对硬盘进行分区,注意在分区前,确保分区表是 GPT,最好在分区前改一下格式

image.png

那么接下来开始分区,我会按照我的规划进行,大家也可以按照各自的需求进行分区
以下是我的,仅供参考:

image.png

注:不知道GUID的分区编码的,按照提示,可以输入字母 "l" (即小写的"L")查看所有支持的编码,以下给出常见的分区格式参考:

  • efi: ef00
  • swap: 8200
  • linux文件系统: 8300

image.png

有人肯定会注意到,linux /home 应该是 8302,为什么我设置的是默认的 8200,其实他俩都差不多哈,都属于linux文件系统,只是分的更细而已,不影响。

这边我为了看起来好看,改个分区名字,大家随意:

image.png

分完区之后 w 保存退出
最后再检查一下分区是否符合自己的要求,以免出错:

image.png

完美 ^_^

创建文件系统

分完区之后肯定还不能直接使用,我们需要对分区创建对应的文件系统,这一步比较简单,直接放出代码,仅供参考:

image.png

大家根据自己的分区状况选择合适的文件系统

挂载分区

分区的工作都做完后,我们需要把分区挂载好才能对该文件系统操作,根据FHS规范,我们通常把分区挂载到 /mnt,我们需要先挂载根目录,然后把efi,home分区挂载到根目录下,以下是我的代码,仅供参考:

mount /dev/sda2 /mnt
mkdir -p /mnt/boot/efi
mkdir -p /mnt/home

mount /dev/sda1 /mnt/boot/efi
mount /dev/sda3 /mnt/home

image.png

注意:当挂载 efi 的时候,需要按照 linux 的目录规范来,即路径为 /boot/efi,否则系统将无法正常启动

同时,我们需要开启 swap 分区:

swapon /dev/sda

image.png

安装系统

至此,所有的分区操作全部完成,现在我们需要给我们挂载好的文件系统里安装系统,这里需要用到 arch live 里面的安装命令 pacstrap,基本语法如下:

pacstrap 需要安装系统的根目录 需要安装的组件

代码示例:

pacstrap /mnt base linux linux-firmware

其中:

  • pacstrap: 命令名字
  • /mnt: 需要安装到的根目录路径
  • base linux linux-firmware: 安装的组件

这里需要说明一下 组件 相关东西:

  • base:系统的运行环境,是安装 arch 的基础
  • linux:提供了 linux 内核,是操作系统和硬件交互和核心
  • linux-firmware:提供了与硬件兼容的固件文件

这三个是必须安装的,否则后续系统将可能无法正常启动和使用,另外还有其他的组件可选:

  • base-devel:提供了一些开发相关依赖等
  • microcode:用于增强 CPU 稳定性的软件包

注意:这一步需要联网下载包,请确保已连接上互联网。

创建挂载文件

现在,我们基本的系统已经安装完成,不过 arch 作为一个用户高度自定义的系统来说肯定没这么简单,为了让我们系统启动时不手动挂载文件系统,减少不必要的麻烦,我们需要配置 fstab 文件,使系统在启动时能够自动挂载我们的文件系统。

这时候我们需要使用 genfstab 命令来生成一个 fstab 文件,他通常配合重定向来使用,以下是基本语法:

genfstab 选项 需要需要扫描的目录 >> 目标路径

像这样:

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

image.png

其中:

  • genfstab: 命令名字
  • -U: 使用 UUID 来标识每个文件系统
  • /mnt: 需要扫描的目录,换句话说,需要根据哪个系统生成 fstab,就写哪个
  • /mnt/etc/fstab: 生成 fstab 文件的目标路径

我们可以看看文件是否正确写入:

image.png

配置系统

至此我们所有的系统基本的已经全部完成,但之前说过,arch 作为一个用户高度自定义的系统来说肯定没这么简单,因此,一部分配置文件需要我们自己创建和编写,我们需要 chroot 进入系统配置,需要注意的是,切换到新系统里面不是使用传统的 chroot,而是用 arch live 里的 arch-chroot 命令:

arch-chroot /mnt

这里必须要设置一下用户的密码,否则后续无法登陆,因为安装完系统默认是 root,所以我以 root 为例,如果大家有需要可以自己添加其他用户并设置密码:

passwd

image.png

其他的大家可以根据自己的需要配置系统,这里我就写个主机名:

echo "CancerAi" > /etc/hostname

image.png

当然,除此之外,我们还需要配置网络。
有人会好奇,我们第一步不是配置了网络吗,没错,不过那是 live环境的网络,现在我们需要在新系统里配置新系统的网络,以便后续重启进入系统后能访问到互联网。
配置网络不需要太复杂的命令,只需要通过 arch 自带的包管理器安装即可,如下:

pacman -S networkmanager

其中:

  • pacman: arch 内置的包管理器
  • -S: 安装软件
  • networkmanager: 包名,用于管理网络

并且,为了让我们开机就能访问到网络,可以设置开机自启:

systemctl enable NetworkManager

安装引导

到这一步为止,我们的新系统已经完全安装好了,但这实际也只是把新系统下载好在拷贝到根目录 ( /mnt ) 里面,此时还无法使 UEFI 能引导启动系统,所以我们需要安装引导:

之前我们执行了 pacstrap /mnt base linux linux-firmware,里面并没有引导相关软件包,我们需要单独安装。

同样使用 arch 自带的 pacman 安装,像这样:

pacman -S grub efibootmgr

其中:

  • pacman: arch包管理器命令
  • -S: 安装软件
  • grub efibootmgr: 需要安装的软件

grub是引导的安装包,里面包含了 grub-install,grub-mkconfig 等工具,用来安装引导。
efibootmgr是 efi 管理的软件包,他使 efi能够正常引导。

安装好包后,我们需要通过包里的工具来安装引导,首先,安装 grub 引导:

grub-install --target=x86_64-efi --efi-directory=/boot/efi

其中:

  • grub-install: 命令名
  • --target=x86_64-efi: 指定硬件平台架构,即x86_64位的 efi 引导方式
  • --efi-directory: 指定 efi 的目录路径

命令输入完成后,如果最后显示 “Installation finished. No error reperted”,则表示安装成功,没有任何错误,否则安装失败,可能导致后续无法引导系统,请检查前面步骤是否正确。

image.png

接着,也是最后一步,生成一个 grub 引导的配置文件,这个文件用于配置引导菜单,使你的系统能够在引导菜单正确显示,我们将使用 grub-mkconf命令生成一个配置文件,如下:

grub-mkconfig -o /boot/grub/grub.cfg

image.png

其中:

  • grub-mkconfig: 命令名
  • -o: 指定输出文件的路径
  • /boot/grub/grub.cfg: 配置文件的路径

注意:在 grub 引导的时候会识别特定目录的配置文件,如果放在其他目录或修改了文件名,会无法读取。

完成

现在我们可以退出 chroot 环境,然后再关机。
大家可以到 虚拟机设置 里面把 iso 移除,这样开机就能自动进入我们新安装好的系统啦。

image.png

image.png

再次开机如果看到 grub 引导界面 并且 有你的系统引导项,说明安装没有任何问题:

image.png

进入系统后,让我们来 ping 一下,检查网络:

image.png

可以看到网络正常连接。

至此,我们已经成功安装并配置了 arch ^_^ (手动烟花)