原创 移植linux2.6.29内核及根文件系统到UP-CPU-2410(3)

2009-10-27 19:19 4089 6 6 分类: MCU/ 嵌入式

制作cramfs+yaffs文件系统<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


所需文件:


busybox-1.13.3.tar.bz2


cramfs-1.1.tar.gz


解压在工作目录下,分别是:


busybox-1.13.3


cramfs


1.编译cramfs。


$cd cramfs


$make


将编译生成的mkcramfs复制到工作目录下


$cp mkcramfs ../


2.配置busybox


修改Makefile:


ARCH ?= arm #189行


CROSS_COMPILE ?= arm-linux-   #164行


 


$make menuconfig



Busybox Setting----->


       build option-->


         

  •  Build BusyBox as a static binary (no shared libs) 


             [ ] Force NOMMU build 


             

  •  Build with Large File Support (for accessing files>2GB) 


             ()  Cross Complier prefix 


        Installation Options-->


            

  •  Don't use /usr            


            Applets links (as soft-links)  ---> 


              (./_install) BusyBox installation prefix 


       Busybox Library Tuning-->


           

  •  vi-style line editing commands 


         

  •  Fancy shell prompts 


     


    $make install


    编译成功会有如下信息:


    --------------------------------------------------


    You will probably need to make your busybox binary


    setuid root to ensure all configured applets will


    work properly.


    --------------------------------------------------


    在_install目录下生成三个文件:


    bin  linuxrc  sbin


     


    修改busybox的属性


    $cd _install


    $chmod 4755 bin/busybox


    将_install目录下的三个文件打包


    $tar cvf 1.tar ./*


     


    3.建立文件系统


    $mkdir rootfs


    $cd rootfs


    $ mkdir dev etc home lib mnt proc usr sys tmp var


    将1.tar文件复制到这里,解压


    $tar xvf 1.tar


    $rm 1.tar


    $ls


    bin  dev  etc  home  lib  linuxrc  mnt  proc  sbin  sys  tmp  usr  var


    创建设备结点


    $cd dev


    $sudo mknod -m 600 console c 5 1


    $sudo mknod -m 666 null c 1 3



    配置etc目录下的文件


    复制主机/etc目录下的passwd、group、shadow文件到rootfs/etc目录下在etc目录下创建空文件mdev.conf,添加如下文件:


    1.inittab


    $vim /etc/inittab


    ::sysinit:/etc/init.d/rcS


    ::askfirst:-/bin/sh


    ::restart:/sbin/init


    ::ctrlaltdel:/sbin/reboot


    ::shutdown:/bin/umount -a –r


     


    2.init.d/rcS


    $vim /etc/init.d/rcS


    #!/bin/sh


    echo "-------------rcS-------------"


    PATH=/sbin:/bin:/usr/sbin:/usr/bin



    echo "----------munt all-----------"


    mount -a


    mkdir /dev/pts


    mount -t devpts devpts /dev/pts


    echo /sbin/mdev > /proc/sys/kernel/hotplug


    mdev -s


    echo "******************************"


    echo "linux-2.6.29.1"


    echo "Bob"


    echo "2009.10.26"


    echo "******************************"



    /bin/hostname -F /etc/sysconfig/HOSTNAME



    根改rcS权限:


    $chmod +x rcS


     


    3.sysconfig/HOSTNAME


    $mkdir etc/sysconfig


    $vim etc/sysconfig/HOSTNAME


    Bob  #用户名


     


    4.profile


    $vim /etc/profile


    #!/bin/sh


    echo  "--------------profile--------------"


    # Set search library path


    export LD_LIBRARY_PATH=/lib:/usr/lib



    # set user path


    export PATH=/bin:/sbin:/usr/bin:/usr/sbin



    #Set PS1


    #USER = "id -un"


    LOGNAME=$USER


    PS1='[\u@\h]#'


    PATH=$PATH


    HOSTNAME='/bin/hostname'


    export LOGNAME PS1 PATH



    ifconfig eth0 210.38.235.4 netmask 255.255.255.0 broadcast 210.38.235.254


    echo "---------------Done!-----------------"


     


    5.fstab


    $vim etc/fstab


    proc    /proc   proc    defaults 0 0


    tmpfs   /tmp    tmpfs   defaults 0 0


    sysfs   /sys    sysfs   defaults 0 0


    tmpfs   /dev    tmpfs   defaults 0 0


     


    复制友善之臂的lib:


    $cd lib


    $sudo cp -rfd opt/FriendlyARM/mini2440/root_qtopia/lib/* ./


     


    创建cramfs


    进入工作目录


    $./mkcrafs rootfs rootfs.Cramfs


    将生成的rootfs.cramfs下载到root分区


     


    挂载yaffs文件系统


    首先要将yaffs分区格式化为yaffs文件系统


    下载mtd-utils-1.0.0.tar.gz解压目录为mtd-utils-1.0.0


    $cd mtd-utils-1.0.0



    1) 修改Makefile


       CROSS=arm-linux-gcc


    2) make 



    编译好后将生成的flash_eraseall工具拷贝文件系统下的/bin下,然后格式化mtdblock4分区为yaffs文件系统



    #flash_eraseall /dev/mtd4


    #mount -t yaffs /dev/mtdblock4 /usr



    在rcS文件里添加如下命令,使系统启动时自动挂载。


    #mount -t yaffs /dev/mtdblock4 /usr



    解释一下什么是/dev/mtdx和/dev/mtdblockx  (x是数字)/dev/mtdx 是字符设备 mtd设备的主设备号为90,至于次设备号:单数为只读,双数为读写。《构建嵌入式LINUX系统》一书有介绍,可以参考一下


     


    支持串口传输文件-lrzsz


    下载lrzsz


    http://download.chinaunix.net/download/0007000/6293.shtml


     


    解压缩后进入目录,输入


    $CC=arm-linux-gcc ./configure 


    $make


    在src目录下得到两个可执行文件lszlrz,把它们下载到根文件系统的/bin目录下。


     

    1、开发板-->PC机
         在开发板上输入 lsz filename。


         在PC的串口终端选择接收文件、Zmodem 与崩溃恢复协议


      


      2、PC机-->开发板


         在开发板上输入 lrz。


         在PC的串口终端选择发送文件、zmodem与崩溃恢复协议。



  • 文章评论0条评论)

    登录后参与讨论
    我要评论
    0
    6
    关闭 站长推荐上一条 /2 下一条