一、内核压缩
我们的内核使用的是gz格式镜像,项目中采用的lzma格式镜像并分布解压的方法。我使用pb47方案的工具链编译发现内核的lzma镜像在最终的bin中地址发生了偏移,导致redboot无法正确读取的内核的地址,lzma解压失败,无法启动内核。该问题弄了好久,后面突然发现使用pb44的工具链编译出来的内核的lzma镜像在最终的bin中地址是正确的,可用之前套用我们原来项目中一整套内核解压的方案,所以该问题就算结束了。内核解压方案和openwrt里面实现是类似的,具体实现就不方便给出了。
二、文件系统
2.6.15内核的squashfs文件系统版本是3.4;对应的宿主机工具可用创建大端的文件系统;而2.6.31内核的squashfs文件系统版本是4.0,不能创建大端的文件系统,只有小端格式;而7161又是个大端片子。本打算修改squashfs-tools使其支持大端文件系统制作,后面通过对比发现不好修改,所以想了下,内核自己应该能够识别小端的文件系统,故修改文件系统头识别函数,转换下就可以了。