• 嵌入式文件系统


    jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs

    nfs

    setenv bootargs 'root=/dev/nfs nfsroot=192.168.22.50:/home/rootfs init=/linuxrc console=ttySAC0,115200 ip=192.168.22.107:192.168.22.50:192.168.22.1:255.255.255.0::eth0:off'
    

    /dev/nfs:网络文件系统
    ttySAC0:串口终端 (如果指定错,内核无打印信息)
    eth0:对应网卡
    off:网络参数静态指定

    网络文件系统https://blog.csdn.net/zhangxuechao_/article/details/51779590

    cramfs
    只读压缩的文件系统。不需要全部解压到ram中;解压缩时有延迟

    # mkfs.cramfs /home/rootfs rootfs.cramfs
    
    # setenv bootargs 'root=/dev/mtdblock0 init=/linuxrc console=ttyPS0,115200 rootfstype=cramfs' 
    

    mtdblock0:flash第一个分区 (根据分区设定)

    ramdisk
    划出一部分内存做文件系统。文件访问速度快;内存容量有限

    # dd if=/dev/zero of=/tmp/ramdisk bs=1k count=8192
    # /sbin/mke2fs -F -v -m0 /tmp/ramdisk
    # sudo mount -t ext2 -o loop /tmp/ramdisk /mnt/
    # sudo cp -a ./rootfs/* /mnt	//拷贝文件系统
    # sudo umount /mnt	//需要卸载再压缩
    # gzip -v9 /tmp/ramdisk	//压缩
    # mkimage -n 'Simple Ramdisk Image' -A ppc -O linux -T ramdisk -C gzip -d /tmp/ramdisk.gz /tmp/rootfs.ramdisk  //制作启动映像
    
    setenv bootargs 'root=/dev/ram rw init=/linuxrc initrd=0x20008000,10M console=ttyS0,115200'
    

    /dev/ram:内存文件系统
    initrd:内存位置

    mkimage参考https://blog.csdn.net/zhangxuechao_/article/details/52029114

    jffs2
    闪存日志型文件系统
    jffs2安装方式见jffs2小结

    # mkfs.jffs2 -r /home/rootfs -o rootfs.jffs2 -e 0x20000 -p 0xa00000 -s 0x800 -n -l
    

    e:每一块要擦除的block size,默认是64KB。要注意,不同的flash,block size不一样,三星的K9F2G08U0A的block size为0x20000。在没有加-e选项是,启动会出现以下错误:at91sam user.warn kernel: Empty flash at 0x00f0fffc ends at 0x00f10000。若有类似的错误,加上-e选项
    p:输出文件大小。如果实际大小不足此设定的大小,则用0xFF补足
    n:指明不添加清除标记(nandflash有自己的校检块,存放相关的信息)。如果挂载后会出现类似:CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0的警告,加上-n就会消失
    l:使用小端格式

    # mkfs.jffs2 -r /home/rootfs -o rootfs.jffs2 -e 0x20000 --pad=0xa00000 -s 0x800 -n -l
    

    经测试,发现一个问题。-p指定输出文件大小不正确,使用–pad才可以

    # setenv bootargs 'root=/dev/mtdblock3 console=ttyPS1,115200 rootfstype=jffs2' 
    

    yaffs2

    # git clone git://www.aleph1.co.uk/yaffs2 
    
    # mkyaffs2image /home/rootfs rootfs.yaffs2
    

    如果出现错误:

    Not enough space in object array 
    

    解决办法:

    # vi utils/mkfsyaffs2image.c
    #define MAX_OBJECTS 100000
    
    # nand write[.yaffs[1]] addr off size 
    

    内存文件系统https://blog.csdn.net/zhangxuechao_/article/details/45060639

  • 相关阅读:
    假期十一
    假期十
    假期九
    假期八
    假期七
    假期六
    假期五
    假期四
    2020.02.11
    2020.02.10
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709788.html
Copyright © 2020-2023  润新知