鋒影
e-mail:[email protected]
第一部分: QNX系統的安裝與使用 1.QNX的微核心,甚至不包括程序管理,僅提供程序間的通信(Software Bus)。但在實際編譯的系統中,仍然是程序排程、同步、程序間通信等編譯在同一個可執行檔案中的,它就是/boot/sys/procnto (QNX6).
2.QNX 4.x僅支援x86,QNX 6.x可支援PowerPC等
3.QNX 4.x隻有Process,沒有Thread,QNX 6.x都有了,這跟POSIX 1003 – 2001是同步的。
4.如何建立啟動鏡像:(QNX4)
1.在/boot/build裡,install.1是啟動鏡像的配置檔案
2.cd /boot
3.make b=install.1
4.上述步驟會成功編譯出/boot/images/install.1鏡像檔案(該檔案為MS-DOS可執行檔案),其中包含了/boot/build/install.1配置檔案中指定的所有可執行檔案的映象(如Proc32、Slib32等)。
5.copy install.1 到 /.boot即可
5.clear螢幕,使用ctrl+l
6.檔案系統/塊裝置的驅動,qnx4在/bin下,如Fsys.eide,而qnx6在/sbin目錄下。
7.塊裝置命名,可以通過/boot/build/install.1的裝置驅動加載參數來指定,一般會是hd0.0(對應primary master)、hd0.1(對應primary slave)、h1.0(對應secondary master)、hd1.1(對應secondary slave)。
8.hd0t79,其中t79是指type 和type id
9.添加塊裝置後,可以使用fdisk進行分區,如fdisk /dev/hd0.1,分區後,檢視/dev/hd*還隻能看見/dev/hd0.1,要查找新分出來的分區,需要使用mount –p /dev/hd0.1 (probe)。
10.啟動過程
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iY2IDNkNGN0UWY4UDO4YmNhRzMxYGOyI2YmlDMyEmYy8CXzNWaw9CXuFWeuVmcvwlbj5SbvNmL3BXZl5ycvR3boBXdvw1LcpDc0RHaiojIsJye.png)
11.如何制作軟碟啟動的系統(QNX4)
1.cd /boot
2.make b=floppy
3.格式化軟驅fdformat /dev/fd0;初始化軟驅dinit –hb /dev/fd0;将軟碟挂載到/fd - mount /dev/fd0 /fd
4.cp /boot/images/floppy /fd/.boot,啟動映象就好了。
5.mkdir etc;mkdir etc/config;mkdir bin;mkdir usr;mkdir /usr/bin
6.cp /etc/config/sysinit.floppy /fd/etc/config/sysinit
7.cp /etc/logo.F /fd/etc/
8.将必要的一些二進制檔案從/bin/或/usr/bin拷貝到/fd/bin或/fd/usr/bin(對應的),如ls、pax、fcat、esh、sh、echo、vi、Dev、Fsys.eide、mount、rm、rmdir、mv、melt、Fsys、Dev、Dev.con、chkfsys、ps、prefix、emu87、mount、rtc、df、dinit、fdformat等。
9.修改/etc/config/sysinit,進而加載硬碟驅動,添加下面一行:
/bin/Fsys.eide fsys –Ndsk0 –n0=hd0. –n5=cd0. eide –a1f0 –i14
10.重新啟動,從軟碟加載,搞定。
11.關機指令:shutdown –b(完全關機不重新開機)
12.使用者環境
Boot Image -> /etc/config/sysinit.node -> /etc/profile -> $HOME/.profile 13.壓縮解壓
1.melt / freeze,前者釋放abc.F為abc,後者将abc壓縮為abc.F(only for QNX4)
2.gzip / gunzip
14.拷貝
1.cp
2.cpio
第二部分:QNX網絡 QNX有很強的網絡功能,最具特色的是它的FLEET Networking,該技術架構可以将跨接于不同網絡(如Ethernet + Token)的節點直接連結起來,使用者程式隻需要使用msg_send即可跟網絡上的任意qnx節點通信。 Fleet Network的配置需修改: 1.配置結點号
修改/boot/build/install.1檔案名為install.x(x為你要的ID,比如2,下同),修改install.2中的$ /boot/sys/Proc32 –l 1為$ /boot/sys/Proc32 –l 2,後面這個2就是結點号。 2.生成新的image
1.cd /boot
2.make b=install.2
3.cp images/install.2 /.boot
3.修改配置檔案
1.cd /etc/config
2.cp sysinit.1 sysinit.2
3.cp inetd.1 inetd.2
4.cd bin
5.cp Input.1 Input.2
6.cp ph.1 ph.2
7.cp tcpip.1 tcpip.2
8.修改tcpip.2,兩個内容,一個是ip位址,如果想使用dhcp,則注釋掉/usr/ucb/ifconfig en1 10.1.1.119 node$NODE up,替換為/usr/ucb/dhcp.client
9.然後修改/.licenses,将license添加進去
10.最後修改/etc/config/netmap,把網内的各個節點添加進去,完成
4.使用netmap –f,即時更新網絡節點表,使用netmap可檢視現有的 節點,使用alive可檢視各節點的線上狀況
5.如過網卡不靈等,可用以下指令來重新開機相關服務。
1.slay Net
2.Net &
3.Net.ether2100 –l1 –p0x1080 –i9 &
4.slay Socklet
5.Socklet node2 &
其它網絡相關部分 1. 如何控制遠端機器:ditto –n3 –k,即可控制遠端node3。 2. 如何檢視網卡狀态:netstat –in 3. 如何檢視路由表: netstat –rn 4. 如何使用遠端桌面:phindows –n/dev/photon,在qnx側則需要激活phrelay(inetd)。 5. 如何查PCI卡的IO位址和中斷:show pci 6. 如何進入另外一台機起:on –f 3 /bin/sh 7. 如何檢查網絡監聽:netstat –an 8. 如何檢視啟動後系統執行過的指令: sin ar 9. sin mem:目前程序虛拟位址配置設定情況 10. sin –t: 檢視每個程序用了多少CPU時間。 關于QNX網絡架構—— 從驅動到應用層:Net -> Net.ether -> Socket/Socklet -> inetd -> nfsd 配置工具:ifconfig、route、hostname、netmap 查詢工具:netstat、alive 第三部分:QNX6基礎 1.Build Boot Image
1./boot/build仍然是build啟動映象的配置檔案
2.bios.build是X86通用的
3.mkifs –v bios.build bios.img
2.在momentics中生成一個啟動映象(支援硬碟和QNX4檔案系統)
1.生成QNX System Builder Project,在build檔案生成一節,選擇導入/boot/build/bios.build檔案。
2.輕按兩下打開project.bld,在binaries中加入devb-eide
3.在DLL中加入cam-disk.so、io-blk.so、fs-qnx4.so。
4.在share library中加入libcam.so.2
5.點選bios,右鍵菜單調出properties視窗,在SYSTEM的PATH、LD_LIBRARY_PATH中添加必要的路徑,包括/bin:/sbin:/usr/bin:/usr/sbin等PATH以及/lib:/usr/lib等庫路徑。
6.修改bios.bsh,在PCI的section後增加硬碟驅動的部分
i. #start IDE drive ii. devb-eide & iii. waitfor /dev/hd0t79 iv. mount /dev/hd0t79 / v. waitfor /bin 7.修改bios.bsh,在最後增加啟動/etc/system/sysinit腳本的部分。
i. [+session] sh –c “/etc/system/sysinit” ii. 最後注釋掉ide驅動和這之間的其它部分。 8.編譯生成bios.ifs,拷貝該檔案到/.boot即可。
1.其它
QNX6的啟動腳本已經更象Linux/Unix了,包括了sysinit和rc.d。而QNX6的裝置驅動則遠比4要靈活——順便提一下,QNX4甚至沒有提供DDK給使用者,幾乎所有的QNX4下的裝置驅動都是QNX公司自己開發的(或受客戶委托開發)。QNX6則改變了這一局面——而且QNX6已經完全開源了,QNX6使用者也不再受那些license的困擾,普通個人使用者可以直接下載下傳和安裝QNX6的RTOS和開發環境,包括使用Qnet——要知道,QNX4的Fleet Network倘若沒有2個以上的licenses,是無法使用的。 第四部分:關于QNX6的網絡架構和Qnet QNX6的網絡尤其是它的Qnet與QNX4一樣獨具特色。相對而言,QNX4的Fleet Network無論從配置還是使用來講都要顯得複雜一些,也要偏僻一些。而QNX6的Qnet則大大簡化了配置的複雜性,也同時在盡量讓遠端的通路顯得更正常。 首先,QNX6的網絡驅動不同于qnx4的Net + Net.ether + Socket/Socklet或netmap的方式,而是采用了子產品化更強,更靈活也更具一緻性的方式。這個改變應當源于QNX6底層架構的更新。 從QNX6的啟動看,在x86上,首先由BIOS啟動startup-bios(一個二進制包),然後就啟動了微核心procnto,緊接着在啟動腳本裡開始加載一些驅動。首先加載的一般是一個console,devc-con;然後應當加載pci-bios,試PCI總線開始工作;接着加載硬碟驅動和檔案系統;最後啟動一些程序通信管理程式,如mqueue、pipe等。 在QNX6裡,網絡、硬碟與其它裝置(如音頻)一樣,都由一個io-xxx的程式來管理,硬碟是io-blk,網絡則是io-net,而音頻則是io-audio。但它們之間也有差别,比如硬碟,可執行的程式是devb-eide(常用的字元裝置和塊裝置好像都是這個方式),而網絡的則是io-net(net、audio這些好像是一樣的),這多少顯得有些怪異。 扯遠了,回到io-net。 io-net的啟動一般帶一些參數,這些參數可以在加載網卡驅動的同時,加載各種協定棧,包括tcpip和Qnet。比如: # io-net –dpcnet –ptcpip –pqnet 這一步操作即可在vmware虛拟機上跑的qnx6中成功加載網卡驅動、tcpip協定棧和Qnet協定棧。通過下面的指令可以檢查io-net加載的狀況: # ls /dev/io-net en0 ip0 ip_en qnet_en 此外,還有一種方式可以向已經啟動的io-net中添加裝置驅動和協定棧。比如: # slay io-net # io-net # mount –Tio-net devn-pcnet.so # mount –Tio-net npm-tcpip.so # mount –Tio-net npm-qnet.so 這三個操作便向io-net添加了pcnet網卡驅動、tcpip和qnet協定棧。 其它一些指令: 1.檢視io-net中已經加載的驅動:ls /dev/io-net
2.檢視網絡中其它的qnet節點:ls /net
3.通路網絡中其它的qnet節點:cd /net/nodename(切換到目标結點的根目錄).至于節點名稱,則是通過hostname來設定的。