好贷网好贷款

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

发布时间:2016-12-5 10:35:16 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"utu2440内核移植根文件移植配置nfs",主要涉及到utu2440内核移植根文件移植配置nfs方面的内容,对于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)网卡传输速率不同,修改速率相同,而且是大速率。命令在笔记本上。

上一篇:浅析:智能指针
下一篇:Regional 2011, Asia - Kuala Lumpur 解题报告

相关文章

相关评论