阅前提示:本文仅提供思路,不提供完整教程、并需要此Linux内核生成时的部分源代码(生成zImage部分和生成基础文件部分)。本教程非权威教程,本人已经通过本教程内的思路成功

本文适用范围:用于一个闭源系统使用Linux后由于协议必须提供部分源代码,但是用户使用这些源代码不能成功编译出一个内核,并且用户修改了这个系统的vmlinux,需要重新打包成zImage(比如群晖)

先说一下大致思路:修改此Linux内核编译的Makefile,使其跳过vmlinux生成,让其直接使用我们vmlinux生成zImage

1.先编译一遍

首先我们再源码根目录,多线程编译源代码,直到编译出错退出(示例命令make -j4)

这一步的目的是为了让一些Linux编译需要的文件生成,比如linux/version.h什么的,这些文件不存在的话下一步会报错

2.修改Makefile

首先,再源码根目录的Makefile中修改vmlinux编译部分,比如图中

这里是将根目录的vmlinux拷贝到/arch/x86[你的CPU架构]/boot/compressed

此步骤主要是将vmlinux拷贝到他原本的生成位置

然后,到/arch/x86(你的CPU架构)修改Makefile,删除编译vmlinux的部分

最后,将vmlinux放入Linux源代码根目录(放入根目录的vmlinux命名要是vmlinux,否则可能会报错),直接make bzImage即可

PS:编译最好用官方提供的工具链!

3.完成

本方案如果有任何不妥或可用缩减步骤的地方欢迎在评论区提出!


广告
广告正在加载中...
暂不开放评论,如对本文有任何疑问,请联系i#mr-wu.top(#替换为@)