![加快 Virtualbox 启动时间](https://linux22.com/image/1626958/%E5%8A%A0%E5%BF%AB%20Virtualbox%20%E5%90%AF%E5%8A%A8%E6%97%B6%E9%97%B4.png)
我正在寻找加快 VirtualBox VM 启动时间的技巧和窍门。“启动时间”是指启动 VM 和出现登录窗口/提示之间的时间间隔,因此它涵盖 VirtualBox 内部内容、引导加载过程和操作系统启动。
背景是,我正在设置一个基于 Vagrant 的基础设施用于测试。它将启动数十台虚拟机,这就是为什么我想尽可能降低启动成本。目前的重点是 Linux(Debian),但我也对 Windows 和 MacOS 的建议感兴趣。我可以完全控制使用的 Vagrant 基础盒和 VirtualBox 设置。
我对 BIOS 和 EFI 都很感兴趣。我也很乐意听听关于软件包的建议(出于内存占用的原因,我选择了dropbear
和udhcpc
而不是更标准的openssh-server
和isc-dhcp-client
,但从性能角度来看,它们可能是糟糕的选择)。
相关问题:最小化无头 Ubuntu 的启动时间
一些数据:
- 目前,我的 Debian VM 只需要 8 秒就能到达登录控制台
dmesg
告诉我网络在 4 秒后就绪(这对 很重要vagrant ssh
),我估计还需要 2 秒钟才能真正得到提示,因此剩下 2 秒钟用于 VirtualBox 启动选择菜单和引导加载程序(GRUB)过程
我已经使用的技巧示例:
- 我开始使用 EFI,但后来又恢复到 BIOS,因为我找不到控制 EFI 中启动菜单显示时间的方法(请参阅我的评论在另一个问题中)
vboxmanage modifyvm vagrant_base --bioslogodisplaytime 1
通过将 BIOS 菜单显示时间设置为 1 毫秒来节省几秒钟(0
将其设置为默认值,大约 3 秒)vboxmanage storagectl vagrant_base --name "Floppy Controller" --add floppy
通过避免在寻找软盘控制器时出现内核超时(“floppy0:未找到软盘控制器”)节省了 3 秒(!)(将模块列入黑名单floppy
可能是一种替代方案)--portcount 1
为硬盘控制器设置,以避免内核枚举默认值 30- 如果仅为虚拟机分配一个 CPU,请禁用 IO-APIC
我现在保留 DHCP,但可能会切换到静态 IP 配置,因为这对于启动时间来说成本很高,尽管一旦启动多个虚拟机,它可能会成为网络问题。
当然,当前时间在很大程度上取决于我使用的硬件,而硬件还不是生产环境。我没有对虚拟机进行压力测试,因此增加 CPU 数量或使用高速存储(已经是 SSD)不是我现在想要考虑的事情。