close
        我想 , 乍看到這樣的主題時 , 大概多數人一定或摸不清楚 , 這是在說什麼吧. 其實, 我自己要下這標題也是挺爭扎的. 想了很久 , 最後還是以這樣的標題為名.

        問題的起源是 , 在Embedded Linux上 , 在製作核心後 , 開發PC 必須想辦法把Kernel image 給燒到Target Board上的儲存資料區 , 這可以是硬碟 , DOC(Disk on chip) , 也可以是在flash ic上 . 但不管那一種 , 只要核心一動 , 就得再弄一次 , 總讓人覺得 , 有那麼點的曠日費時.  但這一個問題早在Linux的前輩中想到了法子. 在Linux上 , 存有一個nfs server的架構. nfs 故名思義就是 network filesystem. 只要target board的boot loader 能夠透過網路與開發系統相連 , 就可以透過指定ip address 下的目錄 , 將核心給載過來用. 如此就可以不斷的進行核心開發 , 卻不用擔心需要花很多時間來進行燒錄了.

        但問題是 , 多數人大概就只有一台pc , 一片開發板 , 如果沒有一台DHCP Server  , 這兩台電腦的ip address , 到底要怎樣assign 呢? target board上, 或許可以在開發時 , 利用parameter先設定好 , 那開發pc 呢? 當然也是可以透過Linux  cmd 或是 X window 來進行設定. window 的視窗比較像是Microsoft windows 的設定 , 就不進行描述. 而文字模式的呢? 我們可以在下面的目錄中  , 找到一個說明檔. 位置在

       /etc/sysconfig/network-scripts/ifcfg-eth0 (eth0 代表第一個網路卡的裝置)

通常這樣的檔案下 , 可能會指明的內容如下

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

意思是說 , 裝置eth0 , 將在開機時 , 利用DHCP Server取得ipaddress. 但以我們現在的狀況 , 那有dhcp server呀? 所以 , 我們可以修改這個檔案如下:

DEVICE=eth0
BOOTPROTO=static
BORADCAST=192.168.1.255(廣播區段)
IPADDRESS=192.168.1.1(指定eth0的IP Address)
NETMASK=255.255.255.0(子網路遮罩)
NETWORK=192.168.1.0
ONBOOT=yes

這樣系統就會在一開機時 , 對這eth0裝置 , 進行ip及遮罩設定.
我們可以在更改完檔案後 , 利用ifup eth0 , 來對新設定進行啟動.

host># ifup eth0
host># ifconfig eth0


當然也可以利用上述的ifconfig , 將eth0的相關資料dump出來看 ,就可以知道系統是否已經設定完成.

如果是這樣 , 就完成兩台電腦網路連接了嗎?  當然不!!!

       傳統 , 我們會很習慣的拿條網路線 , 一邊往pc的網路port 插 , 一邊對著牆璧的RJ45接頭插. 然後系統一下子就會連上線了. 但在兩台的電腦互連時, 可不能這樣幹!! 原因是一般接上SERVER的過程中 , 中間通常串著一台hub , 在hub的實體層 , 就已經替傳輸封包的雙方 , 做了data cross change的動作. 也就是原本pin腳的pin 1 , pin2 為傳送端 ,pin6 , pin7為接收端. 當兩台互串時, 必須將pin 1連到對方的pin3 , pin2連到對方的pin6 , 這樣才可以是兩方的傳送與與接收端完全的連接上.

通常 , 我們完成這樣的程序後 , 就可以利用ping 這個指令 , 去ping對方的ip address ,來確定網路是否串通的.



arrow
arrow
    全站熱搜

    jslinux 發表在 痞客邦 留言(0) 人氣()