VirtualBox虚拟机串口输出配置
VirtualBox 可模拟标准 16550A UART 串口(如 COM1,I/O 0x3F8)。虚拟串口可重定向到主机的管道、文件、TCP 端口等,便于调试和日志采集。虚拟串口与物理串口功能一致,Linux 内核和 GRUB 可直接识别并输出信息。大部分桌面版 Linux 镜像(如 Ubuntu Desktop、Fedora Workstation 等)默认启用 VGA 终端,无需特殊配置即可
·
VirtualBox虚拟机串口输出配置
目录
1. 虚拟串口原理简介
- VirtualBox 可模拟标准 16550A UART 串口(如 COM1,I/O 0x3F8)。
- 虚拟串口可重定向到主机的管道、文件、TCP 端口等,便于调试和日志采集。
- 虚拟串口与物理串口功能一致,Linux 内核和 GRUB 可直接识别并输出信息。
补充说明:
- 大部分桌面版 Linux 镜像(如 Ubuntu Desktop、Fedora Workstation 等)默认启用 VGA 终端,无需特殊配置即可在虚拟机窗口看到终端和图形界面。
- 但部分嵌入式、服务器或定制 Linux 镜像(如 ONIE、OpenWrt、某些最小化发行版)仅启用串口终端,此时虚拟机窗口(VGA)只显示 GRUB 菜单,Linux 启动后无任何输出。
- 这时必须正确配置虚拟串口,并在内核启动参数中添加
console=ttyS0,115200等,才能在串口终端(如 PuTTY、minicom)看到 Linux 的输出。
2. VirtualBox 虚拟串口配置
Windows 主机下配置步骤
- 虚拟机设置 → 串口 → 启用串口1(COM1,0x3F8,IRQ 4)。
- 端口模式选"主机管道(Host Pipe)“,路径如
\\.\pipe\vboxcom1,(规定需使用\.\pipe\name格式)勾选"创建管道”。 - 启动虚拟机后,用 PuTTY 连接
\\.\pipe\vboxcom1,即可看到串口输出。
其他模式
-
输出到文件:
- 选择"原始文件"模式
- 指定输出文件路径,如
C:\vbox_serial.log - 可选择"创建文件"或"追加到文件"
- 虚拟机启动后,串口输出会直接写入该文件
-
输出到 TCP:
- 选择"TCP"模式
- 设置主机 IP(如 127.0.0.1)和端口(如 23)
- 选择"服务器"或"客户端"模式:
- 服务器模式:虚拟机等待主机连接
- 客户端模式:虚拟机主动连接主机
- 主机用 telnet/nc 等工具连接对应端口:
telnet 127.0.0.1 23 # 或 nc 127.0.0.1 23
-
输出到物理串口:
- 选择"主机设备"模式
- 指定主机实际串口,如 Windows 的 COM1 或 Linux 的 /dev/ttyS0
- 需确保主机串口未被其他程序占用
- 可用物理串口线连接其他设备查看输出
3. Linux 串口设备节点说明
- 串口设备节点为
/dev/ttyS0(第一个串口),由内核+udev自动生成。 - 查看设备信息:
udevadm info -a -n /dev/ttyS0 dmesg | grep ttyS
4. GRUB 控制台参数设置
同时输出到 VGA 和串口
- 编辑
/etc/default/grub:GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200" - 更新 GRUB 并重启:
sudo update-grub sudo reboot - 可选:让 GRUB 菜单本身输出到串口,在
/etc/grub.d/40_custom添加:serial --unit=0 --speed=115200 terminal_input serial console terminal_output serial console
5. 常见问题与排查
5.1 权限不足
- 报错
Permission denied:- 临时:
echo "xxx" | sudo tee /dev/ttyS0 - 长期:
sudo usermod -aG dialout $USER,重登生效。
- 临时:
5.2 没有串口输出
- 检查内核参数是否有
console=ttyS0,115200。 - 检查虚拟机串口配置是否正确。
- 用
dmesg | grep console查看实际控制台。
6. 参考命令与技巧
- 查看当前内核启动参数:
cat /proc/cmdline - 查看串口设备信息:
udevadm info -a -n /dev/ttyS0 - 监听串口事件:
udevadm monitor --udev - 发送信息到串口:
echo "Hello Serial" | sudo tee /dev/ttyS0 - 串口终端工具:
sudo minicom -D /dev/ttyS0 -b 115200 sudo screen /dev/ttyS0 115200
更多推荐



所有评论(0)