Linux Kernel squashfs添加lz4支持
背景
FOTA 开发中,考虑到升级文件的颗粒度小的问题,将 squashfs 打包挪到车机上,传输期间可以做到任意小的文件,做到真正的差分升级。
-all-root -noappend -comp lzo -Xcompression-level 9
发现lzo
特别的慢,尝试用lz4
,倒是快了不少,悲剧的是,后续 mount 不上去,
查阅资料知道默认 kernel3.11 以上才有 squashfs lz4 support,谁让我们的 low cost 方案才是 kernel 3.4.5 呢。
撸起袖子开始干,修改内核 squashfs 部分增加 lz4 支持。
添加 suquashfs lz4 support
kernel 要改两部分,一部分是lib/lz4
相关源码及 Kconfig,Makefile,一部分是fs/squashfs
下的 lz4 wrapper.
make menuconfig
时,需要打开相关选项:
另外还需要添加 2 个头文件
include/linux/lz4.h
include/linux/decompress/unlz4.h
最后 make 成功,替换 Image 后,真的可以用,小激动一个,绝对是独门 solution。
SchedAutogroup 支持
mksquash 在车机端太吃 cpu,busybox 的 nice 好像没有效果。参考了下这个 发现连这个选项都没有,尝试在内核里添加 AU
算了动 kernel 太复杂 直接下个 cpulimit 搞定