Full TCPIP question for boot image

之前我以"ttcpip"使用网卡,已正常动作
目前,我想改以Full tcpip的方式,请问要如何设置:我已修改的程序如下:
出现的错误信息 :
ifconfig: socket: Address family not supported by protocol family
Uable to access “/dev/socket"(2)

请问我的程序哪里错了,要如何修改?

[virtual=x86,bios +compress] .bootstrap = {
#[virtual=x86,bios] .bootstrap = {
startup-bios
PATH=/proc/boot procnto -smp
}

[+script] startup-script = {
display_msg “Welcome to QNX Neutrino on an PC compatible BIOS system for SMP”
seedres
pci-bios &
waitfor /dev/pci

Start 1 keyboard console

devc-con -n8 &

Start serial A driver

waitfor /dev/con1
reopen /dev/con1
#reopen
devc-ser8250 -e -b38400
waitfor /dev/ser1
pipe
#touch /tmp/syslog
syslogd
slogger

scan IDE machine

devb-eide
#devb-eide blk cache=5M
waitfor /dev/hd0
mount /dev/hd0 /
devc-pty

/USB driver*/

display_msg “Start USB driver…”
io-usb -duhci -dohci -dehci
waitfor /dev/io-usb/io-usb 4

/USB adepter*/

#io-net -dasix verbose -pttcpip if=en0:10.153.29.101 &

#####/end USB driver*/


display_msg “Start network interface”
#ISA net card
#io-net -dne2000 ioport=0x340,irq=5 -pttcpip if=en0:10.153.29.101:255.255.255.0
&

#**************************************************************************************************
**#test mount on the tcpip
#d-link
io-net -i1 -dvia-rhine -ptcpip prefix=/alt
SOCK=/alt ifconfig en0 10.153.29.95 netmask 255.255.255.0

#USB adapter

io-net -i1 -dasix -ptcpip prefix=/esb

#SOCK=/esb ifconfig en0 10.153.29.94 netmask 255.255.255.0

#on board two net chip
#io-net -i2 -di82544 -ptcpip prefix=/epc0
#SOCK=/epc0 ifconfig en0 192.168.0.124 netmask 255.255.255.0

#io-net -i3 -di82544 -ptcpip prefix=/epc1
#SOCK=/epc1 ifconfig en0 10.153.29.124 netmask 255.255.255.0**
#*******************************************************************************************************

waitfor /dev/socket
#ifconfig en0 10.153.29.101 netmask 255.255.255.0
#io-net -ppppmgr -pttcpip
#waitfor /dev/io-net/ip_ppp
waitfor /dev/ptyp0 4

qconn port=8000

inetd &

qconn &
display_msg “Startup Finish”
[+session] PATH=/bin:/proc/boot esh &
}

Make /tmp point to the shared memory area…

[type=link] /tmp=/dev/shmem

Programs require the runtime linker (ldqnx.so) to be at

a fixed location

[type=link] /usr/lib/ldqnx.so.2=/proc/boot/libc.so
#[type=link] /bin/sh=/bin/ksh

[type=link] /bin/sh=/bin/esh

#[type=link] /dev/socket=/dev/socket

We use the “c” shared lib (which also contains the

runtime linker)

libc.so
libm.so
libsocket.so
npm-tcpip.so
npm-tcpip-v4.so
#npm-ttcpip.so
#npm-pppmgr.so

#devn-ne2000.so
#D-link net card LIB
devn-via-rhine.so

#RTL net card LIB
devn-rtl.so


devn-i82544.so
io-blk.so
fs-qnx4.so
cam-disk.so
libcam.so

#####/uncomment for USB driver/
libusbdi.so
devu-uhci.so
devu-ohci.so
devu-ehci.so
devn-asix.so
######/end USB driver/

The files above this line can be shared by multiple

processes

[data=c]
devc-con
devc-ser8250
devc-pty
pci-bios
seedres
mqueue
pipe
io-net
/bin/echo=echo
/bin/stty=stty
#/dev/socket=/dev/socket
cat
tail
pci
#chat
ifconfig
ping
syslogd
#touch
slogger
ls
qconn
pidin
pdebug
slay
mount
devb-eide
ftp
inetd
shutdown
sin
use
esh
mount
sloginfo
telnet

#####/USB/
io-usb
usb
#####/end USB/

#./modem_ans_ppp.sh

#Services (telnetd etc) config

/usr/sbin/telnetd=telnetd
/usr/sbin/ftpd=ftpd
#/usr/sbin/pppd=pppd
/bin/login=login
/bin/sh=esh

/etc/ppp/chap-secrets = {

Client Server Secret Addrs

#########################################

  •       *           "password"  *
    

}
/etc/syslog.conf = {
. /tmp/syslog
. /…/…
}

Inetd config Files

/etc/services= /etc/services
/etc/protocols= /etc/protocols
/etc/termcap= /etc/termcap
/etc/passwd= /etc/passwd
/etc/default/login= /etc/default/login
/etc/resolv.conf= /etc/resolv.conf
/etc/shadow = /etc/shadow
#061218-ftp
#/home/sam = /home/sam

/etc/inetd.conf = {
telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd
#tftp dgram udp wait root /usr/sbin/tftpd in.tftpd
ftp stream tcp nowait root /usr/sbin/ftpd in.ftpd
-l
}

#/etc/hosts = {
#127.1 localhost.localdomain localhost
#10.99.99.1 server server
#10.99.99.2 client client
#127.1 localhost.localdomain localhost
#::1 localhost.localdomain localhost
#}

#061218-ftp deline
/etc/services={
ftp 21/tcp
telnet 23/tcp
}

#061218-ftp deline
/etc/ftpusers={

}

#061218-ftp deline

/etc/shadow={
#ftplogin:CG9N9yA3IoFtw:1162274304:0:0
root:CDIdxOja3k5lk:1166770462:0:0
}

#061218-ftp deline
/etc/passwd={
root::0:0:Superuser:/:/bin/sh
ftp:x:14:80:FTP User:/:
ftplogin:x:0:0::/:/bin/sh
}

你做得没有错,只是第二个ifconfig命令启动太快了,io-net还没有准备好。
试试加一句waitfor。

io-net -i1 -dvia-rhine -ptcpip prefix=/alt
waitfor /alt/dev/socket/1
SOCK=/alt ifconfig en0 10.153.29.95 netmask 255.255.255.0

我目前试了二种方式
方式一:已可以正常动作,且我的telnet与ftp可正常动作
方式二:尚有问题,其中的io-net -i2 -dasix -ptcpip prefix=/esb是为USB net card,目前本人的问题是,如果有两个on board同样的network chipset,那我用方式二要 1、如何指定为io-net -i3和io-net -i4 ?
2、为何io-net -i1与io-net i2可以ping到,但是无法使用telnet 与ftp ?
请问这两个问题要如何解???要如何修改?

方式一:
#multi net card in the same /dev/io-net → Test OK 20070115
io-net -dvia-rhine -dasix -di82544 -di82544 -ptcpip
waitfor /dev/socket
ifconfig en0 10.153.29.95 netmask 255.255.255.0
ifconfig en1 10.153.29.94 netmask 255.255.255.0
ifconfig en2 192.168.0.124 netmask 255.255.255.0
ifconfig en3 10.153.29.124 netmask 255.255.255.0

方式二:
#multi net card → Test
io-net -i1 -dvia-rhine -ptcpip prefix=/alt
waitfor /alt/dev/socket/1
SOCK=/alt ifconfig en0 10.153.29.95 netmask 255.255.255.0

io-net -i2 -dasix -ptcpip prefix=/esb
waitfor /esb/dev/socket/2
SOCK=/esb ifconfig en0 10.153.29.94 netmask 255.255.255.0

io-net -i3 -di82544 -ptcpip prefix=/epc0
waitfor /epc0/dev/socket/3
SOCK=/epc0 ifconfig en0 192.168.0.124 netmask 255.255.255.0

io-net -i4 -di82544 -ptcpip prefix=/epc1
waitfor /epc1/dev/socket/4
SOCK=/epc1 ifconfig en0 10.153.29.124 netmask 255.255.255.0

Error message:
Unable to access “/epc0/dev/socket/3" (2)
Unable to init dll devn-i82544: Resource busy
Unable to access “/epc0/dev/socket/4" (2)
Ifconfig:SIOCGIFFLAGS en0: No such device or address


我的网卡信息:
Class = Network (Ethernet)
Vendor ID = 8086h, Intel Corporation
Device ID = 108ch, Unknown Unknown
PCI index = 0h
PCI Mem Address = fdbe0000h enabled
PCI Mem Address = fdb00000h enabled
PCI IO Address = df00h enabled
PCI Int Pin = INT A
Interrupt line = 15
CPU Interrupt = fh

Class = Network (Ethernet)
Vendor ID = 8086h, Intel Corporation
Device ID = 108ch, Unknown Unknown
PCI index = 1h
PCI Mem Address = fdde0000h enabled
PCI Mem Address = fdd00000h enabled
PCI IO Address = cf00h enabled
PCI Int Pin = INT A
Interrupt line = 11
CPU Interrupt = bh

Class = Network (Ethernet)
Vendor ID = 1106h, VIA Technologies Inc
Device ID = 3106h, VT6105M/LOM Rhine III PCI Fast Ethernet Controller
PCI index = 0h
PCI IO Address = ee00h enabled
PCI Mem Address = fdafe000h enabled
PCI Int Pin = INT A
Interrupt line = 15
CPU Interrupt = fh

\

io-usb -duhci -dohci -dehci

usb

USB 0 (UHCI) v1.10, v1.01 DDK, v1.01 HCD

USB 1 (UHCI) v1.10, v1.01 DDK, v1.01 HCD

USB 2 (UHCI) v1.10, v1.01 DDK, v1.01 HCD

USB 3 (UHCI) v1.10, v1.01 DDK, v1.01 HCD

USB 4 (EHCI) v1.10, v1.01 DDK, v1.01 HCD

Device Address : 1
Vendor : 0x0b95 (SMC)
Product : 0x1720 (SMC2209USB/ETH)
Class : 0x02 (Communication)
Subclass : 0x00
Protocol : 0x00

my boot program:
io-net -i1 -di82544 -ptcpip prefix=/epc0
waitfor /epc0/dev/socket/1
SOCK=/epc0 ifconfig en0 192.168.0.124 netmask 255.255.255.0
waitfor /dev/io-net1/en0

io-net -i2 -di82544 -ptcpip prefix=/epc1
waitfor /epc1/dev/socket/2
SOCK=/epc1 ifconfig /dev/io-net1/en1 10.153.29.124 netmask 255.255.255.0
waitfor /dev/io-net1/en1

io-net -i3 -dvia-rhine -ptcpip prefix=/alt
waitfor /alt/dev/socket/3
SOCK=/alt ifconfig en0 10.153.29.95 netmask 255.255.255.0
waitfor /dev/io-net3/en0

io-net -i4 -dasix -ptcpip prefix=/esb
waitfor /esb/dev/socket/4
SOCK=/esb ifconfig en0 10.153.29.94 netmask 255.255.255.0
waitfor /dev/io-net4/en0

but error message:
unable to init dll devn-i82544 : Resource busy
Ifconfig:SIOCGIFFLAGS /dev/io-net1/en1: No such device or address
Unable to access “/alt/dev/socket/3" (2)
Unable to access “/esb/dev/socket/3" (2)
Couldn’t initialize listen service: Address family not supported by protocol family

and the path “/alt/dev/socket” and path “/esb/dev/socket” only have “1”,“2”,“17”,“config”,“autoconnect”,“netmanager”

在回答你的问题之前,你能不能先讲讲你到底想做什么?你心目中想实现什么样的系统?

我有四張網卡(PCI*1、usb adapter *1 、on board net chipset *2<此為同型號>),我要做一個即時OS 的boot 開機的image,download到flash HD中,了解嗎?目前要以 TCP/IP來實現四張網卡的驅動。且要在不同的”/dev/io-netX”!且可以設定IP,並且使用telnet 與ftp與HD溝通

好。你的第一种方法已经可以做到“四张网卡,可以设IP,可以用telnet/ftp沟通”了;

为什么你要“在不同的/dev/io-netX"? 在不同的/dev/io-netX你是想达到什么效果呢?

对不起,问这些问题,是因为你的设定有一些混乱的地方,很可能你正在做的,不是你想要达到的效果。

1、是在防止若在同一個"/dev/io-net"時,若其中的en0 bad時會影響到其它的部份,所以才想分開"/dev/io-net"
2、若我想以mac來區分i82544,要如何寫呢?

XTANG, 见讨论得这么热烈,我也正好有个这方面的问题要问一下.

板子上有3块相同的网卡.我想把它们配置成同一IP地址.

我试过两种方法:

1.一个io-net
#io-net -drtl -ptcpip
#waitfor /dev/socket/1
#ifconfig en0 192.168.0.1 netmask 255.255.255.0
#ifconfig en0 …
#ifconfig en0 …
#inetd

2.三个io-net
#io-net -i0 -drtl pci=0x0,lan=0 -ptcpip
#waitfor /dev/socket/1
#ifconfig en0 …
#inetd

#io-net -i1 -drtl pci=0x1,lan=1 -ptcpip prefix=/alt
#waitfor /alt/dev/socket/1
#SOCK=/alt ifconfig en1 …
#SOCK=/alt inetd

#io-net -i2 -drtl pci=0x2,lan=2 -ptcpip prefix=/tmp
#waitfor /tmp/dev/socket/1
#SOCK=/tmp ifconfig en2 …
#SOCK=/tmp inetd

没有很完整的测试,结果是:
配置成不同的IP可以(但用cross cable直接连到电脑上好像不行).
配置成相同的IP不行(好像只有最初起来的网口可以,其它两个不行).
能否解释一下原理?谢谢!

第一种方法不可行。第二种方法理论上是可行的,但还取决于你是怎么连接的。

第二种方法,实际上你可以想像你同时有三台机器,每一台单独一块网卡。所以第二、三个io-net里都只有一个网卡,它们都是用 SOCK=/xxx ifconfig en0 来配置。

问题是,这样配置完的三张卡,你准备怎样连接呢?如果任何两张网卡在同一LAN上(接入同一Switch)的话,就会用现同一LAN上有相同IP的情形,TCPIP会无法正常工作。

如果你想试验的话,必须把三张卡接到三个不同的LAN上,(三个互不连接的Switch上)然后再试。