嵌入式文件系统
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