问一个关于虚拟机调试网络的问题

我现在正在学习QNX
下载了一个x86的BSP,
想在VMware下调试一下,
现在已经将sh启动起来,
然后想通过虚拟机(qnx)与主机(xp)进行通信,
但我不知道网络设备如何调试。
我使用的是qnx 6.4
想用io-pkt-v4。

我是用如下命令,
io-pkt-v4-hc -dpcnet -ptcpip
waitfor /dev/io-net

但是运行到waitfor /dev/io-net命令出错。
察看/dev时 发现没有io-net设备。
而是增加了一个socket文件夹。

使用ifconfig查看网络情况,
发现多了一个本地设备,127.0.0.1

但我想增加的是虚拟机的网络设备。
这个设备无法与本机(xp)进行通信。

不知是不是驱动选择的不对,
如果不对,那么虚拟机的网卡设备驱动是什么呢?

或者哪个步骤出现了问题?
请哪位大侠帮帮忙

谢谢!!!

1)确保你有 /lib/dll/devnp-shim.so 存在
2)确保你有 /lib/dll/devn-pcnet.so 存在
3)不要 waitfor /dev/io-net,你可以 waitfor /dev/socket/1

如果 ifconfig -a 可以看到网卡,可以用 ifconfig en0 ipaddr/netmask 来设地址(也可以用 dhcp.client 来取得地址,取决于你的vmware的网卡设定是什么)

谢谢 xtang

我先试一下,然后再回复具体结果。

谢谢xtang
我已经能找到en0并且已经ping通。

但是我还是没能理解这个过程,
不知道我的理解对不对
devnp-shim.so是虚拟机网卡的驱动?
devn-pcnet.so是本机(127.0.0.1)的驱动?

当我执行io-ipk-v4-hc -dpcnet -ptcpip时
系统自动通过这两个驱动来引导
虚拟机网卡和本机(127.0.0.1)
然后又将tcpip协议栈引导起来?

以上

嘿嘿,这个有点历史原因。:slight_smile:

在6.4以前,网络系统叫io-net,那时的驱动都叫devn-.so 到了6.4,网络系统升成了io-pkt,驱动的API也有所变动,所以新的io-pkt的驱动就叫 devnp-

但是,为了能兼容旧的驱动,又专门写了一个 devnp-shim.so,这个是用来load旧的devn-*.so 驱动的。

至于127.0.0.1的lo0接口,是所有tcpip都有的标准本地接口。

谢谢xtang
经过您的解释我已经理解很多了。

这部分在
trunk/sys/dev-qnx/shim/devnp-shim.use中有说明。
另外有一个问题:
我在网上下载了network的packet

在trunk/sys/dev-qnx/doc/native_drvr.txt
中描述有三种类型的驱动
native driver
shim driver
BSD driver

其中native driver是为io-pkt提供的标准interface,
shim driver是为了兼容io-net而写的一个driver,
BSD driver呢?
这个我不太理解。

以上

QNX的io-pkt是从NetBSD移植过来的。在移植时刻意保留了NetBSD的驱动接口。这样可以直接移植NetBSD的网络驱动。io-pkt还提供了一个"BSD兼容库”(sys/lib/libnbdrvr),来实现一些BSD核内API。这样,只要从NetBSD里找到相应的网络驱动源码,拿到QNX下来编译、连接这个库,就能得到一个可以在io-pkt里跑的网络驱动了。

sys/dev/下有几个这样移植过来的例子。sys/dev/doc/下有更详细的解释。