我需要为教学制作定制的 VirtualBox VM(以 .ova 形式提供):一个是带有终端接口和 LAMP 的 Ubuntu 服务器,另一个是最小的桌面 Ubuntu,只有选定的应用程序可用。我需要它们是轻量级的,因为学生将它们都用于网络,并且他们的 BYOD 计算机的质量各不相同。
在过去(18.04LTS),我曾经下载一个最小的 .iso 并逐步进行。现在这不可能了,因为 20.04 只有完整的 .iso 可用(例如link)。我不想递减,因为结果是非最优的、不确定的和耗时的。
我浏览了网络,但(非常令人惊讶)没有找到解决方案。我怀疑我错过了一些相关的东西,所以在花时间发现沸水之前我在这里问。
谢谢您的帮助!
使用云图像的解决方案
我的问题是从一个最小的开始创建一个自定义的 Ubuntu VirtualBox VM。结果应该包括在本地 VirtualBox 安装(而不是在云中)中运行的 VM。
此任务以前是使用最小安装 mini.iso 执行的。但是这个磁盘映像现在是遗留的,尽管仍然非官方可用。
我想要一个有据可查的长期解决方案,可能基于官方版本。浏览互联网我发现了各种建议,但不是一个完整的解决方案。以下是基于此类建议的分步指南。
该解决方案可以解释为什么基于“mini.iso”的解决方案将被解雇。事实上,新的执行速度更快,并返回一个可能更好地配置为在 VirtualBox 环境中使用的 VM。此外,该过程可能是完全自动化的(参见this或this),而旧版本需要手动安装需要很长时间。
该解决方案从云图像开始,正如有关该主题的一篇文章中所建议的那样(如何进行 20-04 的最小安装)。
我将这个专为 Linux 机器设计的过程分为几个步骤:
我还就它在 Windows 环境中的使用给出了一些未经测试的建议。
安装云镜像
云图像可从多个来源获得。本指南适用于 Ubuntu 官方网站上的用户,该网站提供各种风格。我选择了 OVA 格式的 20.04,它在 VirtualBox 中很容易使用(链接)。编辑 URL,您会发现其他格式和 repo。
下载映像,然后在 VirtualBox GUI 中使用 File -> Import virtual application 创建 VM,无需启动它。使用更简单的名称(例如“minimal-focal”)更改描述中的名称(双击描述行)可能会很方便。
配置虚拟机
联网
在虚拟机的网络配置中,将网络适配器配置为“NAT”,并(在“高级”框中)将主机端口2222(或您喜欢的任何一个)重定向到22。这样,您的VM将连接到互联网并通过 ssh 访问。
贮存
在虚拟机的存储配置中:
配置云镜像
创建一个 .iso 映像,其中包含 cloud-init 在 VM 启动时将使用的文件。在方便的地方,创建以下两个 YAML 文件:
元数据:
用户数据:
在这里,您可以选择在 VM 中配置两个详细信息:主机名(这里是元数据文件中的 ''local-hostname'' 字段的 ''vb-desktop'' 值)和用户名(这里是 '用户数据文件中“名称”字段的“用户”值)。查看手册以获取更多详细信息。
接下来,使用命令创建 .iso 文件(例如 ciconf.iso)
''cloud-localds'' 命令位于“cloud-image-utils”包中,您可以使用该包(在 Debian/Ubuntu 中)安装
Windows 用户也应该可以使用相同的功能。
在 VirtualBox GUI 的 Storage 部分中,安装您刚刚在上一步中创建的 IDE 驱动器中创建的 .iso 文件。
启动 VM 并等待终端登录,然后“关闭 ACPI”。由于您没有凭据,因此无法登录。
定义用户凭据
移动到 VM 虚拟磁盘的目录(可能是 ~/VirtualBox VMs/minimal-focal),并挂载磁盘映像。需要 qemu 包,安装时使用
要安装磁盘映像,请执行以下操作:
''ubuntu-focal-20.04-cloudimg.vdi'' 指的是镜像文件,替换为你自己的。最后,VM 文件系统在 /mnt 目录中可用。
要为 VM 文件系统创建用户凭据“chroot”,请更改用户凭据(“passwd”命令将提示您输入新密码),然后退出“chroot”环境:
将 ''user'' 替换为上一步中配置的用户名。使用 chroot 命令搞砸系统的机会有限,所以要小心。如果您不知道,请查看手册页。
仅当您安全地离开 ''chroot'' 环境(仔细检查)后,在 VM 文件系统中复制您的公钥(我假设您有一个):
上述步骤是可选的,但非常方便。如果您没有公钥,则有数以千计的教程(''ssh-keygen'')。
完成后,卸载 VM 磁盘映像:
如果您忘记卸载,VM 磁盘已损坏,您需要重新启动整个设备。在继续之前仔细检查。
准备定制
从 VirtualBox GUI 界面启动机器并使用“用户”用户名和定义的密码登录。
也可以通过 PC 的命令行访问 VM
(''user''替换成你的用户名,2222是第一步配置的端口号)。
然后用你喜欢的方式(我建议''ssh'')完成工作。
登录 VM 并使用行编辑器修复 VM 中“/etc/hosts 文件”中缺少的详细信息:在“localhost”行的末尾添加新机器的名称,在示例“最小焦点”。
接下来给出以下命令:
第一个命令使 VM 键盘适应您使用的键盘,而其余命令则更新配置,安装包含云映像中缺少的模块的捆绑包和可用于自定义的 tasksel 实用程序。
最终检查和结论
使用''tasksel'' 命令,您可以安装各种捆绑包,例如LAMP 服务器。但是您可能决定安装您最喜欢的软件包集合,就像使用 mini.iso 一样。
上述过程在概念上比使用 mini.iso 执行的过程更困难,但速度更快,大约需要 10 分钟才能让机器准备好进行定制。相反,您需要下载比 mini.iso 更大的 VDI。最后,云技术将继续存在,所以我希望在最终放弃 mini.iso 后,这种模式将可用于多个 Ubuntu 版本。
最后的检查可能包括使用 tasksel 安装桌面发行版,如 Xubuntu。该测试对于检查显示管理器是否可以正常运行具有重要意义。要运行检查,请克隆 VM 并从 VM 终端调用“tasksel”。接下来选择(使用“空格”)“Minimal Xubuntu 桌面”。等到安装完成并重新启动。
Windows 用户应该能够使用相同的策略,但需要挂载 VM 文件系统和 chroot 命令的步骤是使用用户数据文件中的特定字段执行的。