出于研究目的,我想在新的 linux 机器和在 VirtualBox 上运行的旧 xenix 机器之间设置滑动串行 tcp 连接。我已经设置了带有两个串行端口的 xenix 虚拟机:一个在 /dev/ttyS0(主机管道)上,另一个在 /tmp/xenixserial(文件管道)上,使用 minicom 测试的第二个端口是正常的。在Linux上我做了
echo 1 > /proc/sys/net/ipv4/ip_forward
slattach -s 9600 -d -p slip /dev/ttyS0
ifconfig sl0 192.168.7.1 dstaddr 192.168.7.2 netmask 255.255.255.252 mtu 576 up
iptables -t nat -A POSTROUTING -s 192.168.7.0/24 -j MASQUERADE
在 xenix 上我做了
mkdev slip: only ask for relink kernel,of course answered yes
mkdev tcp: and set 192.168.7.2 as local 192.168.7.1 as remote and tty1a 9600 for serial
重新启动后我可以看到所有作品
sl0: flags=51<UP,POINTOPOINT,RUNNING>
inet 192.168.7.2 --> 192.168.7.1 netmask ffffff00
但没有 ping,从主机到访客,从访客到主机都没有。我也尝试添加路线
route add default 192.168.7.1 1
但什么也没有。建议?谢谢
答案1
找到解决方案,TTYS0 是一个驱动程序/模块,指向现有的物理串行(在我的主板上启用)。要使用这样的设置,必须使用 pty 驱动程序(pts/0,1,2,etc),但 virtualbox 不支持,qemu 支持它,如果有兴趣,这里是过程。
在 Qemu 主机上
#run qemu,256m ram disk not over 512M,pc-bios important otherwise give error
#control wich pts is running qemu,you will must use later
qemu-system-i386 -serial pty -hda Xenix.disk -boot c -fda floppy.img -no-fd-bootchk -m 256 -L pc-bios
#ip_forward
echo 1 1>/proc/sys/net/ipv4/ip_forward
#slattach
slattach -s 19200 -d -p slip /dev/pts/4 #pts/4 is used by qemu
#192.168.7.1 is on host,192.168.7.2 is guest
ifconfig sl0 192.168.7.1 dstaddr 192.168.7.2 netmask 255.255.255.252 mtu 576 up
#enable routing iptables
iptables -t nat -A POSTROUTING -s 192.168.7.0/30 -j MASQUERADE
在 Xenix 上
mkdev slip #answer yes to all
reboot
mkdev tcp #set 19200 serial speed and 192.168.7.2 ip,and correct netmask