嵌入式文件系统

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

posted @   thomas_blog  阅读(188)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示