也许我误解了 KVM 的功能,但在 VM 上添加/删除硬件的能力似乎意味着我可以添加一个串行端口,然后充当终端。
所以,我的问题是:
- 哪些设置最适合来宾 FreeBSD 发行版? (有许多!)
- 如何从我的 Linux 主机访问所述终端?
答案1
我现在可以根据以下内容回答我自己的问题斯特凡的评论和两篇链接的文章:
- https://askubuntu.com/questions/1733/what-reason-could-prevent-console-output-from-virsh-c-qemu-system-console-gu
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=507650#29
这是解决方案:
- 您无需编辑与主机配置相关的任何内容,只要主机配置中有指向 pty 的默认串行设备即可。
- 确保内核的引导参数附加了以下内容:
serial=tty0 console=ttyS0,115200n8
。通常通过编辑来实现/boot/grub/menu.lst
- 配置
/etc/inittab
并附加该行T0:S12345:respawn:/sbin/getty -hL ttyS0 115200 vt100
以启动 getty 并给出登录提示。
我可以使用 fedora 系统确认这对我有效(尽管我确实必须设置enforcing=0
为附加参数,因为相关系统是运行 SELinux MLS 的 fedora rawhide)。
我想从那里我可能可以弄清楚如何为 freebsd 做同样的事情。
谢谢斯特凡!
答案2
在回答如何设置 FreeBSD 机器时,获取串口有两种主要情况。如果您仅使用串行安装 FreeBSD,则需要引导加载程序串行指令。如果您已经拥有控制台并且只想进行串行访问,请按照安装后串行说明进行操作。
引导加载程序串行
- 在 FreeBSD 启动选项屏幕上按下
2
以转至加载程序提示符 - 类型
set console=comconsole
- 如果此时失去交互性,请检查虚拟 tty 波特率是否为 9600
- 类型
autoboot
这应该允许通过串行接口完成其余的安装。如果您想在安装 FreeBSD 后继续进行串行访问,那么在安装结束重新启动之前,您需要进入命令提示符。
安装后序列号
在控制台:
- 类型
echo 'console="comconsole"' >> /boot/loader.conf
- 加载
/etc/ttys
到vi中 - 修改以 ttyu0 开头的行(在其他版本的 FreeBSD 上可能是 ttyd0)
- 在那一行更改
dialup
为vt100
和off
到on
- 在那一行更改
- 重新启动后,串行终端应显示启动过程,并以登录提示结束
- 注意:设置
console="comconsole"
可以/boot/loader.conf
使启动信息仅出现在串行接口上。/etc/ttys
如果您不希望通过串行启动日志,只需修改即可。
- 注意:设置
参考
http://www.freebsd.org/doc/handbook/serialconsole-setup.html
答案3
好吧,当然,您必须在模拟器中模拟串行端口,并且可以在主机上访问它。来宾操作系统应该在其“硬件串行端口”上放置一些内容,例如通过 getty_ps 进行登录提示。现在我个人还没有必要以这种方式使用它。大多数情况下,来宾操作系统上的模拟串行端口用于调试信息(默认情况下,Haiku 仍然使用它),然后由模拟器(如 VMware)将其捕获为一个简单的文本文件,以提供可用的调试信息。我将在这里尝试在 qemu 内的模拟串行控制台上运行一些东西。
答案4
OP的答案有效,但是当我尝试使用我的环境(Linux主机,Linux客户端)时
serial=tty0
不需要- 使用 xterm 而不是 vt100
/etc/inittab
效果更好(你会得到颜色)