utu2440内核移植根文件移植配置nfs

http://blog.chinaunix.net/uid-27016046-id-3244494.html

内核移植成功,其实我都不知道为什么成功,胡乱鼓捣鼓捣就出来了。

最重要的一点:移植完内核以后一定先要复位一下所以要先把bootcmd环境变量给删掉,再添加环境变量setenv bootargs 'noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200'

移植时的命令是

tftp 30000000 uImage

nand erase 60000 200000

nand write.i 30000000 60000 $(filesize)

复位一下,一定要复位,否则就会出现init进程的各种问题

如kernel panic-not syncing Attemped to kill init等等等等

移植文件系统:

tftp 30000000 utu2440.yaffs

nand erase 260000 3d9c000

nand write.yaffs1 30000000 260000 $(filesize)

再重启一下,然后添加环境变量setenv ‘nand read.i 0x32000000 0x60000 0x200000; bootm’再重启,ok!

一.先编译内核

在编译之前先把编译工具mkimage复制到/usr/bin下,有一点要注意,编译器的版本是什么对编译成功与否起着一些作用,而且内核和文件系统的编译器要使用相同的如我这儿用的是arm-linux-gcc3.4.1

1,make distclean

2,配置内核选用已经写好的配置文件make menuconfig-->load an Alternate Configuration File-->config_480272_ts

如果要使用默认配置,如在arch/arm/configs中找到相似的配置文件make xxx_defconfig,再make menuconfig。这里我用的是厂家提供的配置文件。

3,make uImage产生内核uImage。uImage即是真正的内核加一个头部,这样uboot才会识别。这一步主要完成了两步:1是.config自动生成autoconf.h。2是自动生成auto.conf这个文件,这个文件会被顶层Makefile所包含,完成了转入c语言的一步。

二.编译最小文件系统

最小根文件系统包括:1、dev/console ,/dev/null设备节点,对应驱动程序

                                 2,sbin/init(来源于busybox)

                                 3.etc/inittab配置项(先要被init程序读取解析)

                                 4.配置文件指定应用程序

                                 5.应用程序所需要的库函数,即安装glibc,把所有的glbic下的*.so文件拷贝到lib目录下注意这个地方要用cp *.so* /test/busybox/_install/lib/ -d   “-d”一定要加上,如果原文件是个链接文件就保持链接,否则会很大

根文件系统是linux启动时使用的第一个文件系统

mknod –m 660 console c 5 1

                            mknod –m 660 null c 1 3来创建/dev下的两个

etc下的文件一般可以下载或者拷过来直接用

先要下载busybox,所谓busybox就是一个应用程序,我们所使用的命令如ls,cp等都是执行这个应用程序,程序根据参数来区别不同命令。所有的命令都链接到busybox。进入busybox目录执行make menuconfig进行配置,配置安装到哪里是你创建的根文件系统等等make编译,安装时千万不能直接make install,而是先创建一个文件然后安装到那里,我这里用的是make  CONFIG_PREFIX=/test/busybox/_install install。看安装成功与否要看sbin下的init进程是不是链接到busybox,否则安装失败。这样会生成sbin etc linuxrc等,

内核目的启动应用程序,启动的第一个进程是init进程,就是位于sbin下的init,init要先读取和解析配置文件,根据配置文件来启动执行用户的程序和时间,在etc下如果没有inittab要创建它。

bootargs ‘nointitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200’

代表root是放到第三个分区上的。

三.做映像文件

把mkyaffsimage拷贝到 /usr/bin下,要加可执行属性。chmod +x mkyaffsimage

然后进入到busybox目录下,mkyaffsimage _install utu2440.yaffs文件系统制成啦~~

 

四,配置NFS服务器

1.先在ubuntu10.04下安装ubuntu nfs服务器apt-get install nfs-kernel-server

2.配置/etc/exports定义允许ubuntu允许挂载的目录和权限

如我这里是在root下建立了一个rootfs在export下添加如下一行:/rootfs  *(rw,sync,no_root_squash)

其中/rootfs是要共享的目录,*允许所有网络段访问,rw是可读写权限,sync是资料可以同步写入内存和硬盘,no_root_squash是ubuntu nfs客户端分享目录使用者的权限,如果客户端用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。

3,重启nfs服务

/etc/init.d/portmap restart

/etc/init.d/nfs_kernel_server restart

4,测试nfs

显示共享目录showmount –e

用以下命令把它挂载到本地磁盘上例如将rootfs挂载到/mnt下:

mount –t nfs localhost:/rootfs /mnt 用df命令查看是否挂载成功

umount /mnt卸载

5开发板上如果设置ubootbootargs会使其从nfs启动

但是我这里没有,所以只是设置了挂载。在开发板上输入命令:mount –t nfs 192.168.1.23:/rootfs  /mnt    其中ip是linux主机ip挂载成功后,在linux主机下可以写一个hello.c的程序,注意!!!这个地方要用交叉编译链来编译,否则在开发板上无法直接运行,不识别!

 

 

 

 

nfs: server 192.168.1.23 not responding, still trying

解决方法:1)协议不同,修改为tcp协议

     2)网卡传输速率不同,修改速率相同,而且是大速率。命令在笔记本上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值