如果来宾操作系统无头启动,则将控制台放在 ttyS0 上

如果来宾操作系统无头启动,则将控制台放在 ttyS0 上

我们的产品使用 Debian 4(无 systemd)。我将其作为由 VirtualBox 管理的来宾操作系统运行以进行测试。

我的使用方法如下:

  • 对于手动调试,我在 tty1 上安装了来宾操作系统的控制台,并在其上启动了一系列调试程序。
  • 为了使用脚本进行测试,我将控制台移动到 ttyS0(主机 python 很容易挂接到它)。我运行调试程序不是为了性能。

到目前为止我所拥有的:

我可以检测虚拟机串口是否启用。我在 dmesg 中 grep 查找 ttyS0。 (我被告知要查看 /proc,但我宁愿根本不必启用/禁用串行端口)

我认为主要问题是:

有没有办法让 Debain 操作系统上的 shell 脚本判断它是否由 VirtualBox 无头运行?我有可用的 bash。

更新1:

我开始怀疑答案是否定的。执行 lspci 显示 VGA 兼容控制器在无头模式和正常模式下都是 VirtualBox Graphics Adapter。我读过,如果主机配置为为其提供服务,则默认情况下可以远程查看无头访客。这表明从客人的角度来看没有明显的变化。

答案1

在主机上使用shell脚本修改并启动虚拟机:

正常启动

#!/bin/bash
vboxmanage modifyvm "Vir153_1000" --uart1 off
vboxmanage startvm "Vir153_1000"

无头引导

#!/bin/bash
vboxmanage modifyvm "Vir153_1000" --uart1 0x3F8 4
vboxheadless --startvm "Vir153_1000" --vrde off &

访客仍需要检查串行端口是否存在并采取相应措施。

感谢@siblenx 的想法

相关内容