搭建tiny6410驱动开发环境_NFS起文件系统_NoSharedLibs

1.NFS起文件系统的制作
 (根文件系统是由一系列目录组成的,其中目录包含了应用程序,C库,以及相关的配置文件)
 1.创建文件系统的目录
  #mkdir /test_disk/rootfs/
  #cd /test_disk/rootfs
  #mkdir bin dev etc lib sbin proc sys var mnt tmp usr
  #mkdir usr/bin usr/lib usr/sbin lib/modules

 2.创建设备节点
  #cd dev/
  #mknod -m 666 console c 5 1
  #mknod -m 666 null    c 1 3

 3.安装(或创建)设备文件(inittab, profile,rcS,)
  (#tar -xzvf etc/tar.gz -C /test_disk/fs/rootfs/)

 4.编译内核模块
  #cd */linux-kernel/
  #make modules ARCH=arm CROSS_COMPILE=arm-linux-

 5.安装内核模块
  #make modules_install ARCH=arm INSTALL_MOD_PATH=/test_disk/rootfs/
  #cd /test_disk/rootfs/lib/modules/
  #ls

 6.配置busybox
  #tar xzvf busybox.tar.gz
  #cd busybox
  #make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-

  必须选中和修改的项:
   1."Build Busybox as a static binary(no share libs)"
   2."Don't use /usr"
   3."cross compiler prefix"--------->arm-linux-
   4."Busybox Installation prefix"--->/test_disk/rootfs/
   (1选择的是静态连接库的方式,如果不选就是使用动态连接库的方式)
   (采用动态连接库的方式,在lib目录中添加应用程序所需的库文件)
   (Archival Utilities-->gzip这个选项一定不能掉)
  其他的命令配置选项可自行裁剪

 7.编译安装busybox
  #make ARCH=arm CROSS_COMPILE=arm-linux-
  #make install
  (第一个命令:在当前的目录下有个busybox的应用程序)
  (第二个命令:安装配置的应用程序到/test_disk/rootfs/bin 和 /sbin)
  (其实在/test_disk/rootfs/bin下所有的应用程序,都是软连接到busybox)
  (busybox根据参数的不同,执行不同的命令)
  (检查是否安装好了--在bin目录下是否有busybox, sbin目录下是否有init)

 8.配置内核支持NFS启动,并编译
  进入到内核所在的目录下
  #vim .config
   ?CMDLINE
   找到CONFIG_COMPILE哪行,修改为:
   CONFIG_COMPILE="root=/dev/nfs nfsroot=192.168.1.16:/test_disk/tftpboot/
     ip=192.168.1.230 rw console=ttySAC0 mem=64M"

   root=/dev/nfs 内核采用nfs起根文件系统
   nfsroot=192.168.1.16:/test_disk/tftpboot/ 
   (nfs起根文件系统位于nfs服务器/test_disk/tftpboot目录,服务器IP:192.168.1.16)
   ip=192.168.1.230  开发板IP,要求与服务起在网段(Bridged)
   rw   文件系统可读可写
   console=ttySAC0  以ttySAC0作为控制台
   mem=64M 开发板的内存大小64MB
  (以上其实可以在make menuconfig中修改,但是很麻烦)

  #make menuconfig ARCH=arm CROSS_COMPILE=arm-linux-
   必须选中和修改的选项:
    "File systems"->"Network File systems"->
      <*>NFS client support
      [*]NFS client support NFS version 3
      [*]Root file system on NFS
  
  #make uImage ARCH=arm CROSS_COMPILE=arm-linux-
  (在arch/arm/boot/目录下会生成uImage文件)
  #cp */arch/arm/boot/uImage /test_disk/tftpboot/

 9.在主机上,启动NFS服务
  参见搭建nfs服务
  (启动:#/etc/init.d/nfs-kernel-server restart)
  (修改配置文件:/etc/exports文件)

 10.测试NFS文件系统
  启动开发板,进入Uboot
  uboot> printenv 
  uboot> setenv serverip  192.168.1.16
  uboot> setenv   ipaddr    192.168.1.230
  uboot> setenv   ethaddr   00:01:02:03:04:05
  uboot> saveenv
  uboot> ping 192.168.1.16
   (如果打印"host 192.168.1.16 is alive" 表示网络可用)
  
  uboot> tftp 31000000 uImage (#/etc/init.d/xinet restart)
   (tftp命令将服务器目录中uImage读入到开发板地址为31000000处)
  
  uboot> bootm 31000000
  
  出现一下情况:
  eth0: link down
  IP-Config: Complete:
        device=eth0, addr=192.168.0.2, mask=255.255.255.0, gw=255.255.255.255,
        host=192.168.0.2, domain=, nis-domain=(none),
        bootserver=192.168.0.1, rootserver=192.168.0.1, rootpath=

  Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
  (文件系统挂载失败,导致无法启动系统)
  (由上面的IP-config信息可以看出nfs服务器IP和开发板自身的IP)

  如果在Uboot命令行下使用命令使用setenv serverIP{ip}修改都无法改变以上参数中的值

  那么使用如下命令:
  uboot> setenv bootargs noinitrd root=/dev/nfs rw         nfsroot=192.168.1.16:/test_disk/fs/rootfs          ip=192.168.1.230:192.168.1.16::255.255.255.0 console=ttySAC0,115200      init=/linuxrc mem=64M

  确定/etc/exports .config中CMDLINE=  bootargs三者共享的目录是一样的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值