65.9K
CodeProject 正在变化。 阅读更多。
Home

在 QEMU/KVM 上安装 MINIX 3 并实现网络连接

2016 年 9 月 19 日

CPOL

6分钟阅读

viewsIcon

14983

在 QEMU/KVM 上安装 MINIX 3 并实现网络连接

有一段时间了,我一直想玩一下 MINIX 的源代码,部分原因是我想了解操作系统是如何运行的,部分原因是我坚信模块化微内核操作系统架构(与传统的单体方法相比)的设计理念,并想看看它是如何实现的。我曾尝试在 VirtualBox 上安装 MINIX,但无法让我的 MINIX 虚拟机内的网络正常工作,而这是我所需要的。这篇博文基本上是一个详细的(b)log(扩展自 MINIX 指南),介绍了我如何切换到 QEMU/KVM 并成功安装了带有网络连接功能的 MINIX 3,以便进行实验(当我提到“网络连接”时,我指的是从 MINIX 虚拟机访问互联网)。

首先,我需要提及我的主机操作系统是 Ubuntu 16.04 (32bit),运行在一台配有 1GB RAM 的 core 2 duo 机器上。我还禁用了 BIOS 中的虚拟化扩展(KVM 需要,否则 MINIX 安装过程中会出现错误),这在你的机器中配置起来非常简单

关于 QEMU 和 KVM:QEMU(Quick Emulator 的缩写)是一个开源的机器和外围设备模拟器,主要侧重于可移植性。KVM(Kernel-based Virtual Machine)最初是 QEMU 的一个分支,是一个处理虚拟化的 Linux 内核模块,现在是 Linux 主线源代码的一部分。长话短说,QEMU 是一个独立的软件,但如果 KVM 可用,它会使用 KVM。关于这两种技术,有很多在线资源可以参考,以便进一步理解模拟与虚拟化的区别。

为了在 Ubuntu 中安装 QEMU,我们需要在终端中输入以下命令

sudo apt-get install qemu qemu-kvm libvirt-bin

运行此命令后,QEMU 将安装在你的主机系统中。

接下来,我们将创建一个文件夹来存放我们的 QEMU VM 镜像。在我的系统上,我在我的*Home*文件夹中创建了一个名为“qemuVMs”的文件夹。此外,我们还需要 MINIX 3 ISO 文件,它将用于安装 MINIX 系统,可以从 MINIX 下载页面下载。在撰写本文时,有两个版本可供下载,我选择了 3.3.0 版本。下载文件后,你可以解压内容以获取 ISO 文件,并将其复制到我们之前创建的文件夹中(在本例中为*/Home/qemuVMs/*)。

ISO 文件放入文件夹后,我们可以打开终端,导航到包含 MINIX ISO 文件的文件夹,然后输入以下命令来创建 VM 镜像

qemu-img create minix.img 2G

上述命令将创建一个名为‘minix’、大小为 2GB 的 VM 镜像,用于存放我们的 MINIX 系统(你可以根据需要更改镜像名称和大小)。现在文件夹中的内容应该如下所示

Screenshot from 2016-06-11 22-33-52

VM 镜像准备就绪后,我们可以通过在终端运行以下命令来引导 ISO 文件

qemu-system-x86_64 -localtime -net user -net nic -m 128 
-cdrom minix_R3.3.0-588a35b.iso -hda minix.img -boot d

此命令基本上告诉 QEMU 使用*minix_R3.3.0-588a35b.iso*文件,在*minix.img* VM 中,并为 VM 分配 128MB RAM。请注意,在运行上述命令时,请将*minix_R3.3.0-588a35b.iso*替换为你下载的 ISO 文件的名称。

如果一切顺利,你将进入正常的 MINIX 3 安装过程,你可以根据 MINIX 网站上的指南进行操作。在 MINIX 设置过程中,有两个重要注意事项

  1. 当出现选择网络接口的选项时,请选择“Virtio network device”选项。
  2. 当被问及是使用 DHCP 还是手动配置网络时,请选择“Automatically using DHCP”。

(我们随时可以在 MINIX 中通过在 MINIX 命令提示符处键入“netconf”来更改上述网络配置,但如果在初始设置期间进行配置,将为我们节省重启到新系统时的一步。)

MINIX 3 安装到 VM 中后,我们需要在刚安装的 MINIX 系统中更改一些配置,以便利用虚拟化磁盘和网络驱动器,并从 MINIX 系统获得互联网访问。所以,通过在(主机操作系统)终端中键入以下命令来引导到新的 MINIX 系统

qemu-system-x86_64 -rtc base=utc -net user -net nic -m 128 -hda minix.img

登录到 MINIX 系统后,我们需要从默认文件位置向上移动一个目录,然后导航到*/etc/*文件夹以修改*boot.cfg.default*文件。下图展示了我如何从登录到 MINIX 系统开始,到使用 MINIX 系统中已有的(移植的)vi 编辑器编辑配置文件

Screenshot from 2016-06-11 23-11-07

当我用 vi 打开文件时,我需要添加一个新菜单行,其内容如下

menu=Start MINIX 3 latest serial virtio:load_mods /boot/minix_latest/mod*;multiboot 
/boot/minix_latest/kernel rootdevname=$rootdevname $args cttyline=0 virtio_blk=yes

(vi 的基本编辑命令可以在网上许多网站上找到。通常,你将输入 shift + i 来编辑文本,按 escape 键完成编辑,然后输入 shift + ‘:’ 来获取 vi 提示符,并在 vi 提示符处输入“wq”以将更改写入磁盘并退出编辑器。)

你可以在下面的截图中看到最后三行,我在*boot.cfg.default*文件中添加了这一新行文本

Screenshot from 2016-06-11 23-20-13

进行上述更改后,我们可以退出编辑器。我们仍然在*/etc/*文件夹中,所以我们需要向上移动一级文件层级,然后导航到*/bin*文件夹进行下一步。在*/bin*文件夹中,我们只需要运行update_bootcfg命令(只需在 MINIX 命令提示符处键入“update_bootcfg”并按回车键),以使我们在启动配置文件中所做的更改生效。下面的截图显示了这一点(从我们退出 vi 编辑器开始)

Screenshot from 2016-06-11 23-29-49

在完成上述步骤后,我们可以通过在 MINIX 提示符处键入“poweroff”来关闭系统,然后使用以下新命令重新启动系统

kvm -net nic,model=virtio -net user -drive file=minix.img,if=virtio -serial stdio -m 128

(最好将此命令放在一个 shell 脚本中,这样我们每次需要启动 MINIX 虚拟机时就不需要输入它。)

现在当你启动到 MINIX 虚拟机时,你应该会看到一个名为“Start MINIX 3 Latest serial virtio”的新选项,这正是我们在启动配置文件中之前配置的(下图中的选项 6)

Screenshot from 2016-06-11 23-37-24

如果我们选择此启动选项并登录系统,你会发现我们通过配置的虚拟网络接口可以完全访问互联网。如果你在 MINIX 提示符处执行“pkgin update”,你应该能看到 MINIX 通过互联网检索包详细信息并更新包数据库。

如果你在按照上述步骤在 QEMU 中安装 MINIX 3(并实现网络连接)时遇到任何问题,请留下评论。 MINIX3 Google 群组也是一个查找常见问题和获取支持的好地方,也是提交你的讨论/问题的好论坛,因为它将使整个 MINIX 社区受益。

© . All rights reserved.