1.基于openwrt编译环境的initramfs固件编译方法,其特征在于:包括如下步骤:
S1,接收用户指令,将编译完成的内核文件vmlinux中的.init.data段内容保存至包含已压缩的rootfs文件的init_data文件中;
S2,将所述init_data文件按照两个分割点拆分为3份,拆分后形成的3个文件分别命名为head、body、tail,其中body文件为压缩后的rootfs文件系统;
S3,接收待更新的rootfs文件,将所述待更新的rootfs文件打包压缩形成新的压缩文件,并使其压缩格式与S2步骤中的body文件的压缩格式及文件大小相同;
S4,将S3步骤生成的压缩文件与S2步骤中的head文件、tail文件合并生成new_init_data文件;
S5,将所述new_init_data文件的内容更新至内核文件vmlinux中的.init.data段中,得到新的vmlinux内核文件;
S6,根据目标系统固件格式将新的vmlinux内核文件打包生成对应的固件。
2.根据权利要求1所述的基于openwrt编译环境的initramfs固件编译方法,其特征在于:所述S2步骤中的两个分割点中,第一个分割点为已压缩的rootfs文件的起始位置,第二个分割点根据固件系统的位数进行确定。
3.根据权利要求2所述的基于openwrt编译环境的initramfs固件编译方法,其特征在于:
在S2步骤中,当所述固件系统的位数为32位,所述第二分割点为倒数第四个字节;
当所述固件系统的位数为64位,所述第二分割点为倒数第八个字节。
4.根据权利要求1所述的基于openwrt编译环境的initramfs固件编译方法,其特征在于:在所述S3步骤中,当所述新压缩文件的大小不足所述S2步骤中的body文件大小时,在所述新压缩文件中填充0字节内容。
5.基于openwrt编译环境的initramfs固件编译系统,其特征在于:包括
文件提取单元,用于接收用户指令,将编译完成的内核文件vmlinux中的.init.data段内容保存至包含已压缩的rootfs文件的init_data文件中;
文件拆分单元,用于将所述init_data文件按照两个分割点拆分为3份,拆分后形成的3个文件分别命名为head、body、tail,其中body文件即为压缩后的rootfs文件系统;
扩容单元,用于接收待更新的rootfs文件,将所述待更新的rootfs文件打包压缩形成新的压缩文件,并使其压缩格式与S2步骤中的body文件的压缩格式及文件大小相同;
合成单元,用于将扩容单元生产的压缩文件与S2步骤中的head文件、tail文件合并生成new_init_data文件;
更新单元,用于将new_init_data文件内容更新至内核文件vmlinux中的.init.data段中,得到新的vmlinux内核文件;
以及,生成单元,用于根据目标系统固件格式将新的vmlinux内核文件打包生成对应的固件。
6.根据权利要求5所述的基于openwrt编译环境的initramfs固件编译系统,其特征在于:所述文件拆分单元的第一个分割点为已压缩的rootfs文件的起始位置;当所述固件系统的位数为32位,所述第二分割点为倒数第四个字节;当所述固件系统的位数为64位,所述第二分割点为倒数第八个字节。
7.根据权利要求5所述的基于openwrt编译环境的initramfs固件编译系统,其特征在于:所述扩容单元中设置有内核patch文件。