http://hi.baidu.com/helium_3/blog/item/a19062878eee3b29c75cc341.html
继续前面的工作。
在上一篇中,tftp无法下载到文件的问题已经解决,原因出在fedora 7自带的防火墙,可以使用
#/sbin/service iptables stop 关闭防火墙,这样在U-boot下就可以通过以下命令获取主机上所保存的内核或文件了:
=>tftp 1000000 taihu/uImage(前提是需要先设置好U-Boot的环境变量)
可以发现tftp使用的是相对路径,且将Load Address设为1000000,经测试可用(dhcp命令默认的100000地址却无法启动内核)。
之后就可以用bootm命令启动内核了,但由于文件系统(我们使用NFS)还没有配置好,所以无法完全启动。
6.编译内核
使用CD-405EP-RCD-03光盘中所带的kernel源码包,文件名为linux- 2.6.13.tar.gz,将源码包拷贝到一个权限足够的文件夹中(如当前用户的~目录)
解压缩:#tar -xzf linux-2.6.13.tar.gz
进入linux-2.6.13目录。在编译前需要导入几个编译过程中所需要的环境变量
#export ARCH=ppc
#export CROSS_COMPILE=ppc_4xx-
开始配置并编译:
#make taihu_defconfig
#make menuconfig
#make uImage
之后就可以获取kernel的镜象文件了:arch/ppc/boot/images/uImage
需要注意的是:在进行make menconfig步骤的时候需要对内核进行配置,比较重要的一项是要将Network File System项中的NFS Root子项选中,否则无法通过NFS来建立根文件系统。
将uImage拷贝到/tftpboot/taihu下就可以通过tftp的方式下载内核文件并引导。
7.设置U-Boot环境变量
=>setenv RT_eth0_ip dhcp
=>setenv RT_eth0_ip2
=>setenv ipaddr 192.168.1.2
=>setenv serverip 192.168.1.1
=>setenv hostname taihu
=>setenv netmask 255.255.255.0
=>setenv rootpath /opt/eldk/ppc_4xx
=>setenv nfsargs 'setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath}'
=>setenv addip 'setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off'
=>setenv kernel_addr 1000000
=>setenv nfs_root 'tftp 1000000 taihu/uImage;run nfsargs addip;bootm ${kernel_addr}'
=>saveenv
每次启动目标板的时候先进入U-boot,然后运行run nfs_root来以NFS模式启动linux
至此ELDK的网络开发环境已经配置好,我们可以通过直接操作/opt/eldk/ppc_4xx,该目录和目标板 是共享的,所以我们可以直接在主机上进行编程,而不用将程序下载到开发板上,可以节约不少开发的时间。
总结一下每次进行开发前所需要的步骤:
主机:
1 开启dhcp服务 /sbin/service dhcp start
2 关闭防火墙 /sbin/service iptables stop
目标板
3 在U-Boot中,run nfs_root启动内核