一、文件系统方案:
- 存在问题:
当前官方提供的根文件系统,ext3格式存储在emmc的分区2上,可读可写,存在如下问题:
1)、根文件系统文件可被随意修改,导致系统文件损坏、丢失;
2)、系统日志文件不能存储,系统重启后上一次系统日志无法获取,不方便故障排查;
3)、根文件系统没有分区,应用和系统都在一个分区上,该区数据区损坏后导致系统启动挂载失败;
4)、根文件系统不能在线升级;
2、文件系统规划:
Uboot + dtb + kernel + ramdisk:
Uboot:支持ramdisk的加载和启动;
Kernel: zImage 支持RT补丁的内核
zImage_normal 不支持RT补丁的内核
要想使用任何一种内核,修改文件名为zImage即可。
Ramdisk:根文件系统
压缩方式:cpio
大小:压缩前 203M,压缩后 75M
内存区域存储该文件系统,支持写,不支持写保存;应用所有的写入数据需要存储在/opt/apps目录下。
1)、emmc卡分区:
分区 | 挂载目录 | 大小 | 格式 | 功能 |
/dev/mmck3boot | \ | 32M | raw | Boot分区 |
/dev/mmck3p1 | /opt/update | 500M | fat | 系统镜像文件 |
/dev/mmck3p2 | /opt/logs | 1.6G | ext3 | 系统日志文件 |
/dev/mmck3p3 | /opt/apps | 4.9G | ext3 | 应用目录 |
2)、系统镜像存储:
文件类型 | 文件名称 | 存储分区 | 存储形式 | 挂载目录 |
Uboot | u-boot-6q-2g.imx | /dev/mmck3boot | 二进制 | \ |
Dtb | imx6q-c-sabresd.dtb | /dev/mmck3p1 | 文件 | /opt/update |
Kernel | zImage zImage_normal | /dev/mmck3p1 | 文件 | /opt/update |
Rootfs | ramdisk | /dev/mmck3p1 | 文件 | /opt/update |
3)、文件系统特性:
- 、perf的性能分析;
- 、valgrind的内存分析;
- 、gdb的板级调试;
- 、kgdb的内核调试;
- 、内核panic后的3s重启;
- 、内核对进程D状态的120S检测;
- 、内核对cpu-core的soft_lockup的20s软死锁检测;
- 、内核支持sysrq-magic的魔术键响应;
- 、系统支持内核ftrace的cmd-trace/cmdevent函数和事件跟踪;
- 、syslog的文件存储,logroate的文件转储;(/var/log/syslog系统日志文件,会daily | maxsize(8M) | maxcount(10) 进行压缩转储,且自动删除max_num以前的转储文件);
4)、系统启动:
/opt/apps作为应用目录使用,/opt/apps/init.sh脚本如果存在,会加载该脚本,来自动启动应用程序。
二、批量升级方法:
1、生产升级,或者第一次升级系统,使用usb-otg的方式。
2、使用PC端工具mfgtools,对整个核心板进行系统升级,镜像文件存放 在.\mfgtools\Profiles\Linux\OS Firmware\files\okmx6-c目录下。
3、开发板设置为usb启动模式,PC端运行.\mfgtools\mfgtool2-mx6qdl-c-sabresd-emmc.vbs后,点击开始即可烧写系统镜像;
三、在线升级方法:
- 指通过网络来升级系统镜像文件;
- 提供一个镜像升级tar包,上传到设备后解压缩后,执行sh update_os.sh脚本,自动完成所有系统文件升级;
- 如果不用更新uboot,可以直接通过替换/opt/update下的文件,来完成升级。
四、输出:
- usb的烧写工具mfgtools.rar,里面包含系统镜像imgs;
- 在线升级吧update.tar.bz2。
五、补充:
高版本内核不再使用initrd=来传递ramdisk的加载地址,而是内核统一管理,使用高端内存区域存储ramdisk,所以如果高端内存不够,需要通过传递vmalloc= 来重新定义高端内存区域。