您的位置:首页 > 运维架构 > Linux

[Linux驱动开发] cramfs文件系统制作及移植

2012-03-20 19:03 465 查看
制作cramfs文件系统

此处将上一篇博文制作的first_fs文件系统拷贝到/opt中,并更改名称为rootfs

我们要做的是将rootfs文件系统制作成cramfs类型的文件系统,并将其烧录到Nand Flash中

1、准备事项:

添加内核菜单选项:

make menuconfig

General setup  --->     (设置通用设置)

[*] Configure standard kernel features (for small systems)  ---> 

Choose SLAB allocator (SLAB)  --->  

File systems ---> 

  <*> Kernel automounter support                                (支持内核自动挂载)

      Miscellaneous filesystems  ---> 

        <*> Journalling Flash File System v2 (JFFS2) support        (JFFS2支持)

         (0)   JFFS2 debugging verbosity (0 = quiet, 2 = noisy) 

        [*]   JFFS2 write-buffering support 

    <*> Compressed ROM file system support (cramfs)               (cramfs支持)

       Pseudo filesystems  --->

          [*] /proc file system support                          (procfs支持)

          [*]  Sysctl support (/proc/sys) 

          [*] sysfs file system support                          (sysfs支持)

          [*] Virtual memory file system support (former shm fs)       (tmpfs支持) 

Networking  ---> 

         [*] Networking support

            Networking options  ---> 

                [*] TCP/IP networking

                   [ ]     IP: BOOTP support     (去掉这个需选项)  

    

File systems --->  

       Network File Systems  ---> 

       < > NFS file system support          (不支持NFS)    

            [ ] Root file system on NFS      (根文件不保存为NFS格式)

2 修改内核

             


根据“nand flash的布局图”,修改内核nandflash分区请修改内核源代码的arch/arm/ plat-s3c24xx/common-smdk.c

static struct mtd_partition smdk_default_nand_part[] = {

        [0] = {

                    .name   = "uboot",

                    .size   = 0x60000,

                    .offset = 0,

              },

        [1] = {

                    .name   = "kernel",

                    .offset = 0x60000,

                    .size   = 0x200000,

              },

        [2] = {

                    .name   = "rootfs",

                    .offset = 0x260000,

                    .size   = 0x800000,

              }

};

重新编译内核make uImage,并将其拷贝到/tftpboot中

 3 制作cramfs文件系统和部署

由于系统提供制作cramfs文件系统的工具,则可以利用。具体操作如下;

terry@terry-virtual-machine:/opt$ mkfs.cramfs rootfs rootfs.cramfs



将NFS测试好的文件系统rootfs通过上述命令制作成为只读的cramfs文件系统

rootfs.cramfs.将其下载到flash的第一块分区上(注意这个根据你自己的分区来指定)

在U-BOOT的终端:

    3.1 烧录内核

    OpenJTAG> tftp 30800000 uImage          (从/tftpboot将uImage拷贝到虚拟内存的0x30800000位置)

    


    OpenJTAG> nand erase 60000 200000        (在Nand Flash的0x60000处擦出一块200000(2MB)大小的空间)

   


    OpenJTAG> nand write 30800000 60000 200000  (从虚拟内存的0x30800000读取200000大小文件内容到Nand Flash的0x60000)

   


    OpenJTAG> setenv bootcmd nand read 30800000 60000 200000 \;bootm 30800000    (设置环境参数,u_boot从Nand Flash的0x60000处读取200000大小的文件内容到内存的0x30800000,并且系统从内存的0x3080000处启动)

   


    3.2 烧录CRAMFS

    OpenJTAG> tftp 30800000 rootfs.cramfs    (从/tftpboot将rootfs.cramfs拷贝到内存0x30800000中)

    OpenJTAG> nand erase 260000 800000     (同上,在Nand Flash的0x260000处擦出800000(8MB)大小空间)

   


    OpenJTAG> nand write 30800000 260000 800000    (将内存中0x30800000处的rootfs.cramfs写到Nand Flash的0x260000处)

    这样制作好的cramfs文件系统就放置在flash的第一块分区,然后指定启动参数:

    OpenJTAG> setenv bootargs console=ttySAC0,115200 root=1f02 init=/linuxrc    (设置环境参数,此处的1f02对应我们前面设置Nand Flash分区中的rootfs分区)

    OpenJTAG> save

    OpenJTAG> boot

   


    至此cramfs的文件系统挂载成功

   


    cramfs文件系统的特性是启动快防止误操作,且只读

    在这里我们进行任何改变文件系统的事情是不能够执行的,比如:mkdir terry,得到如下结果:

  


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息