在 Hyper-V 中安装 Archlinux(上)

这既是一篇 Hyper-V 安装虚拟机的教程,也是一篇安装 Archlinux 的教程。

Archlinux 向来以“难安装”著称,一直以来是我心头的白月光。曾经用 Arch Liunx GUI 安装过一次并且用了很久,但是从命令行安装还真的没有完整尝试过,加之 Archlinux 在官方网站上提供了安装指南,所以再一次尝试一下 Archlinux 的安装。

先去搞一个 Archlinux 镜像

创建与配置虚拟机

Hyper-V 管理器概览

打开 Hyper-V 管理器,界面如图1-1所示

可以看到界面除了菜单栏外主要分为左中右三栏

  • 左栏为 Hyper-V 管理服务器列表,可以添加远程管理器。图中只有本地 Hyper-V 管理器。
  • 中栏为当前管理器下管理的虚拟机,虚拟机的检查点(快照),虚拟机的详细信息等三行消息。图中可以看到已经有两个虚拟机 i3wm-demomininet 了(它们会在后面的文章中出现)。
  • 右栏为操作栏,对选定的虚拟机可以执行相应的操作。

话不多说,我们开始吧。

创建虚拟机

  1. 在右栏中选择“新建→虚拟机→下一步”设置虚拟机名称和储存的位置,勾选“将虚拟机存储在其他位置”后可以选择一个C盘以外的位置(建议勾选,别把C盘撑爆)。如图1-2-1所示。

  2. 点击下一步,选择虚拟机版本,1代 Hyper-V 虚拟机显然是没二代好呀,选二代。如图1-2-2所示

  3. 点击下一步,设置虚拟机内存大小,这里我设置了6GB也就是6144MB内存。如图1-2-3所示

  4. 点击下一步,设置虚拟机的网络。默认设置中,虚拟机存在一个网卡,在后面的设置中可以添加网卡。默认设置中只有 Default Switch 一个交换机,所以就连接到它。如图1-2-4所示

    在后续的实验中,我们会创建新的交换机以及新的网卡来满足隔离、组网等需求。

  5. 点击下一步,创建虚拟磁盘,该磁盘就是虚拟机的磁盘了。默认名称和位置就好,改一下大小为32G,因为就是做实验嘛这么大够了,要是电脑存储不够,8G也能对付,再少就不太好了。如图1-2-5所示

  6. 点击下一步,选择安装介质,这里就选择我们刚刚下载的 Archlinux 镜像。如图1-2-6所示。

最后,点击“下一步→完成”即可完成虚拟创建。

设置虚拟机

你先别急,这里还需要几步配置才能启动虚拟机,不然后面有你急的

  1. 中栏选中新创建的虚拟机 archlinux-demo,在右栏中选择设置,选择“安全”,取消“启用安全启动”的勾选,点击右下角“应用”保存设置。如图1-3所示

    这是安装 Linux 系统需要的操作,至于安装 Windows 和 MacOS,以及启动 Linux系统是否可以打开,大家可以尝试一下

安装 Archlinux

Archlinux,启动!(并连接)

Archlinux 安装的过程在安装指南及其附带的链接中有详细的叙述,但是文章过于冗长。本文着重记录其中的关键步骤,关键步骤按顺序包括:

  1. 连接互联网并更新系统时间
  2. 创建并格式化硬盘分区
  3. 设置镜像并安装系统
  4. 配置系统

连接互联网并配置时间

与 Ubuntu、Debian 的安装介质不同,Archlinux 安装光盘并不包含 Linux 系统的相关组件,所以需要从互联网下载,那么连接互联网是安装系统的基础。

在物理机上连接互联网有时候并不是一件很轻松的事情,特别是当互联网服务需要 Web 认证的时候(校园网:报我身份证号得了)。然而在虚拟机中倒是相当简单,Hyper-V 的默认交换机提供了 NAT 功能,只需要虚拟机通过 DHCP 获取 IP 即可连接到互联网。而 Archlinux 安装系统在启动过程中就启动了 DHCP 服务器,所以一切都不用配置。如果不放心,可以使用 ip link 查看网卡的 IP 地址情况,以及使用 ping bing.com 确认是否真的能联网。

联网后应当使用 NTP 服务同步时间,因为一些镜像站在本地时间(虚拟机的时间)与系统时间(镜像站的时间)差别过大的时候,无法同步消息。命令如下:

1
timedatectl
SHELL

运行结果如图2-1所示:

创建并格式化硬盘分区

这是 Archlinux 甚至所有操作系统不可或缺的一步。主要分为:寻找可用设备、划分分区、格式化分区三步。

  1. 寻找可用设备

    要查找系统中可用的存储设备,使用 fdisk -l 可以看到一些设备,其中结果中以 romloop 或者 airootfs 结尾的设备可以被忽略。结果中以 rpbmboot0 或者 boot1 结尾的 mmcblk* 设备也可以被忽略。一般情况下是以 sd* 或者 nvme* 结尾。运行结果如图2-2-1所示:

  2. 划分分区

    其次,使用分区工具在磁盘的空余空间上划分分区。对于 Linux 系统而言,至少需要:一个根分区,用于挂载根目录;对于 UEFI 启动模式,一个EFI系统分区。此外,还可以设置磁盘阵列等功能,实现更多特性。然而本实验中并不需要这样多的特性,本文中规划了三个分区:

    分区 挂载点 类型 分区大小
    /dev/sda1 /boot EFI系统分区 1G
    /dev/sda2 / Linux Root (x86_64) 16G
    /dev/sda3 /home Linux文件系统 剩余空间

    使用 cfdisk 对磁盘执行分区(Linux Root (x86_64)也可以换成Linux文件系统),结果如图2-2-2所示:

  3. 格式化分区

    最后,格式化各个分区,创建文件系统。文件系统是组织文件数据的方式,不同的文件系统有不同的特点。对于这里所分的三个分区,设置如下文件系统:

    分区 文件系统 说明
    /dev/sda1 fat32 EFI系统分区必须是fat32文件系统
    /dev/sda2 ext4 Linux 默认文件系统,各方面属性很均匀
    /dev/sda3 ext4

    命令如下,运行结果如图2-2-4所示:

    1
    2
    3
    mkfs.ext4 /dev/sda2
    mkfs.ext4 /dev/sda3
    mkfs.fat -F 32 /dev/sda1
    SHELL

配置镜像并安装系统

前面说到 Archlinux 安装需要连接网络下载 Linux 相关的文件。而 Archlinux 提供的镜像远在海外,即使没有众所周知的原因,下载速度也会大打折扣,所以需要配置一下镜像。这里我使用了清华大学开源镜像站的 Archlinux 镜像,点击获取配置教程。

接着就该将 Archlinux 安装到磁盘中了。在安装之前需要将安装系统的磁盘挂载到系统中,且一定要按照层级顺序挂载目录,否则会出现无法访问目录的情况。以下是挂载的命令:

1
2
3
mount /dev/sda2 /mnt
mount --mkdir /dev/sda1 /mnt/boot
mount --mkdir /dev/sda3 /mnt/home
SHELL

接着就是安装系统。首先先更新软件库,接着更新密钥环(如果长时间不更新密钥环会导致过期证书无法更新,软件安装检查过不了),最后一键安装系统。

1
2
3
pacman -Syy
pacman -Sy archlinux-keyring
pacstrap -K /mnt base linux grub efibootmgr neovim
SHELL

这里说明一下 pacstrap 安装的几个软件包:

  • base 是必须的
  • linux 可以选择其变种
  • grubefibootmgr 是为了安装和管理 GRUB 启动器的包,后面会用到
  • neovim 是为了防止没有趁手的编辑器。

如果你还想要安装其它软件(AUR仓库的得到后面安装了),可以直接在后面添加就完事了。

配置系统

系统已经安装完啦,下面我们应该来配置系统了。有两项工作要做,一是生成 fstab,在后面的启动过程中如何挂载磁盘,二是配置 GRUB 引导器来引导操作系统。

  1. 生成 fstab

    命令如下,结果如图2-2-5所示

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

  2. 配置 GRUB

    首先切换到安装好的系统下面

    1
    arch-chroot /mnt
    SHELL

    然后,安装 GRUB 并生成配置

    1
    2
    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
    grub-mkconfig -o /boot/grub/grub.cfg
    SHELL

善后工作

至此,Archlinux 已经完整地安装在你的虚拟硬盘中了。用 exit 退出安装好的 Archlinux 系统,再 poweroff 关掉安装系统以关闭虚拟机。设置启动顺序,这里需要将 DVD 驱动器删除,接着将 grubx64.efi 移动到最上面,保存设置后就算完成啦。最终结果如图3-1所示

下一篇主要介绍系统中桌面环境的安装及配置。


在 Hyper-V 中安装 Archlinux(上)
https://blog.bcb.pub/2024/07/19/hyper-v-adventure/installing-archlinux-in-hyper-v-1/
作者
BadCodeBuilder
发布于
2024年7月19日
许可协议