制作jffs2文件系统

600阅读 0评论2014-11-14 644924073
分类:LINUX


进入内核配置目录

make menuconfig

Memory Technology Devices (MTD) --->
      <*> Memory Technology Device (MTD) support
       [*] Debugging
       [*] MTD partitioning support
       [*] Command line partition table parsing
       [*] Direct char device access to MTD devices
       [*] Caching block device access to MTD devices

File systems --->
Miscellaneous filesystems --->
<*>Journalling Flash File System v2 (JFFS2) support
[*]JFFS2 write-buffering support
[*]Advanced compression options for JFFS2
[*]JFFS2 ZLIB compression support
[*]JFFS2 RTIME compression support
[*] JFFS2 RUBIN compression support


    1.从网上下载zlib-1.2.3.tar.gz 解压缩 $ cd zlib-1.2.3


$ ./configure –prefix=/tftpboot/my_jffs2 --shared (具体目录根据自己情况自己修改)

修改Makefile如下:

CC=arm-none-linux-gnueabi-gcc

LDSHARED=arm-none-linux-gnueabi-ld -shared
      CPP=arm-none-linux-gnueabi-gcc -E


$ make all

$ make install

注意:这里是安装在/tftpboot/my_jffs2目录下,在=/tftpboot/my_jffs2/lib目录下就生成libz.so, libz.so.1, libz.so.1.2.3


由于交叉编译mtd工具时需要zlib.h文件,所以在编译之前先安装zlib库文件。

    2.从网上下载 mtd-snapshot-20050519.tar.bz2 解压缩 $ cd mtd/util

修改该目录下的Makefile:

CROSS=arm-none-linux-gnueabi-
      LDFLAGS := -L/tftpboot/my_jffs2/lib 【主要就是要添加这句】 (这个目录就是上边zlib库文件所在的lib目录)


$ make all
      $ make install 就生成 flash_erase,flash_eraseall, mkfs.jffs2工具
    
    3.将mkfs.jffs2,flash_erase下载到开发板上,将libz.so, libz.so.1, libz.so.1.2.3下载开发板的lib目录下,这样mkfs.jffs2才能使用
    cat /proc/mtd 
    dev:    size   erasesize  name
    mtd0: 00020000 00020000 "u-boot env"
    mtd1: 00020000 00020000 "UBL"
    mtd2: 00080000 00020000 "u-boot"
    mtd3: 00400000 00020000 "kernel"
    mtd4: 1fa00000 00020000 "filesystem"
    mtd5: 08000000 00004000 "NAND simulator partition 0"
    这里mtd5是nandflash上的分区; 其余分区上放有u-boot,UBL,kernel等,所以我们这里可以使用空的nandflash上的mtd5分区。使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具体使用的步骤如下:
    3.1 擦除nandflash
    # flash_erase /dev/mtd5
    3.2 制作jffs2映像
    #cd /home/root
    #mkdir jffs2 (在jffs2下的目录可以任意建,可以包括etc、bin、lib等目录,会将jiffs目录下的文件显示在nand挂载这个jffs2文件系统下) 
    # mkfs.jffs2 -r /home/root/jiffs2 -o rootfs.jffs2 -e 0x4000 --pad=0x600000 -n    
    将生成的映像rootfs.jffs2复制到第五分区
    # cp /home/root/jffs2/jffs2.img /dev/mtd5
    将对应的块设备mount到linux目录下,这样在、mnt/mtd下就能看到etc、bin、lib等刚才建的目录。
    最后# mount -t jffs2 /dev/mtdblock5 /mnt/mtd即可,使用结束可使用$ umount /mnt/mtd 卸载.
    如果只是当作普通的jffs2 来使用dataflash或者nandflash,可不必制作 jffs2映像,只需要最后一步
    # mount -t jffs2 /dev/mtdblock5 /mnt/mtd即可。

上一篇:sysfs文件系统
下一篇:制作jffs2文件系统