自己動手編譯ucLinux

一.下載uclinux
首先到ftp://166.111.68.183/pub/embed/uclinux/soft/或到
ftp://166.111.8.229/OS/Embeded/uclinux/pub/uClinux/dist下載
uClinux-dist-20030909.tar.gz
假設把它下載到/usr/src/目錄下,然後依次執行下面的命令:
tar zxvf uClinux-dist-20030909.tar.gz
cd uClinux-dist/

二.配置uclinux
make xconfig  在圖形方式下可用的命令或
make menuconfig 在命令行方式下用的命令
在出來的列表中"vendor/product"中選擇"GDB/ARMulator"
kernel版本選擇2.4
然後save and exit

三.安裝uclinux
運行下面這兩條命:
make dep
make

此時在/usr/src/uClinux-dist/linux-2.4.x目錄下會生成可執行文件linux,在/usr/src/uClinux-dist/images/會生成romfs.img等文件

四.配置skyeye.conf文件
在uClinux-dist目錄下建立仿真AT91的skyeye配置文件skyeye.conf,內容如下:
######################################################################
cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=romfs.img
#file選項根據實際romfs.img所在目錄情況而定,有時候images/romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
######################################################################
這個時候就可以用skyeye來調試運行kernel了,在/usr/src/uClinux-dist執行如下命令:
skyeye linux-2.4.x/linux
然後將打印linux啓動的相應信息
注意:
要在skyeye.conf所在目錄下執行skyeye linux-2.4.x/linux

五.添加網絡功能到uclinux
a.用root用戶進行操作。
b.你要看你的/lib/modules/'uname -r'/kernel/drivers/net/目錄裏有沒有tun.o
如果沒有的話你就需要編譯你的linux內核來獲得tun.o了。
c.(1)運行tun設備模塊:

#insmod /lib/modules/'uname -r'/kernel/drivers/net/tun.o

如果你沒有該設備,那你就要用下面的命令來創建它:

#mkdir /dev/net

#mknod /dev/net/tun c 10 200

(2)運行vnet(虛擬集線器)設備模塊(這一步不是必需的):

獲取vnet的源碼,然後創建設備:

#mknod /dev/net/vnet c 10 201
#chmod 666 /dev/net/vnet

創建vnet.o
#make vnet.o

插入模塊vnet.o
#insmod vnet.o

進入test目錄,用test來測度vnet.o
#cd test
#make
#./testvnet1

d.配置skyeye.conf文件
######################################################################
cpu: arm7tdmi
mach: at91
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00004000
mem_bank: map=M, type=RW, addr=0x01000000, size=0x00400000
mem_bank: map=M, type=R, addr=0x01400000, size=0x00400000, file=romfs.img
#file選項根據實際romfs.img所在目錄情況而定,有時候images/romfs.img
mem_bank: map=M, type=RW, addr=0x02000000, size=0x00400000
mem_bank: map=M, type=RW, addr=0x02400000, size=0x00008000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00400000
mem_bank: map=I, type=RW, addr=0xf0000000, size=0x10000000
# format: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1
#下面將對上面的一些參數作下說明:
#state=on/off意思是仿真的NIC(網絡接口板)是有線還是無線的;
#mac=仿真適配器的MAC地址;
#ethmod=tuntap/vnet在主機環境裏使用的虛擬設備;
#hostip=意思是主機環境與keyeye交互用的IP
#格式: state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
#For example:
#set nic info state=on/off mac=xx:xx:xx:xx:xx:xx ethmod=tuntap/vnet hostip=dd.dd.dd.dd
#net: state=on, mac=0:4:3:2:1:f, ethmod=tun, hostip=10.0.0.1
#或
#net: state=on, mac=0:4:3:2:1:f, ethmod=vnet, hostip=10.0.0.1
######################################################################
注意:
如果你想在同一時刻運行兩個或更多的skyeye,那麼請爲每一個skyeye使用不同的skyeye.conf

e.運行skyeye linux-2.4.x/linux

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章