自己动手编译ucLinux

来源:互联网 发布:网络词语umm什么意思 编辑:程序博客网 时间:2024/04/29 11:55

一.下载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

原创粉丝点击