在 VirtualBox 串行控制台中显示 PXE 网络引导过程

在 VirtualBox 串行控制台中显示 PXE 网络引导过程

我想在无头模式下启动 VirtualBox VM,并通过串行控制台在终端中查看网络启动过程(例如使用screenminicom)。我该如何实现这个目标?

附加上下文如下。


我有一个 VirtualBox 虚拟机,我用它来试验 PXE 网络启动。该虚拟机已命名pxeclient并运行 Debian。

我按照以下博客文章中描述的说明为虚拟机配置串行端口:

以下是我配置串行控制台的简要说明。

首先,我将 UART 串​​行端口连接到 VM:

touch "/dev/pxeclient-uart-port"
vboxmanage modifyvm "client" --uart1 "0x3F8" '4'
vboxmanage modifyvm "client" --uartmode1 server "/dev/pxeclient-uart-port"

然后我修改了VM上的grub配置文件(通过GUI界面):

cat <<HEREDOC > /etc/default/grub
# NOTE: Enable Virtual Serial Console for VirtualBox
GRUB_DEFAULT=0
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=$(lsb_release -i -s 2> /deb/null || echo Debian)
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=ttyS0 console=tty0 ignore_loglevel"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=0 --word=8 --parity=no --stop=1"
HEREDOC

然后我使用该minicom程序连接到虚拟机控制台:

minicom -D unix#/dev/pxeclient-uart-port

到目前为止,一切似乎都按预期进行。我能够成功连接到控制台,并且在启动虚拟机(在无头模式下)后,我能够通过终端观看启动过程。

然后,我更改虚拟机上的启动顺序,以便使用 PXE 执行网络启动:

vboxmanage modifyvm 'pxeclient' --boot1 'net' --boot2 'none' --boot3 'none' --boot4 'none'

但是当我启动虚拟机时,我没有看到任何写入终端的输出。如果我使用 GUI 界面重新启动 VM,则可以在 GUI 窗口中观看 PXE 启动过程,但不会通过串行控制台显示相同的输出。

我更喜欢在无头模式下运行所有​​虚拟机。我是否需要执行一些额外的配置才能通过串行控制台监视网络启动过程?

相关内容