如何修改 vmlinuz 而不重新编译

如何修改 vmlinuz 而不重新编译

正如标题,我有两个 vmlinuz 文件挂在嵌入式系统上。

而且,我没有它的源代码和编译器,这个嵌入式系统的开发人员也不再工作了。

第一个 vmlinuz 支持 4 个串行端口和 2 个 VGA。

第二个 vmlinuz 支持 6 个串行端口和一个 VGA。

我想要一个支持 6 个串行端口和两个 VGA 的 vmlinuz。

是否有方法可以将驱动程序从第二个 vmlinuz 复制到第一个 vmlinuz 并替换第一个 vmlinuz 里面的原始驱动程序?

答案1

是否有方法可以将驱动程序从第二个 vmlinuz 复制到第一个 vmlinuz 并替换第一个 vmlinuz 里面的原始驱动程序?

缺乏广泛的逆向工程和二进制修补,没有。

我想要一个vmlinuz支持 6 个串行通信端口和两个 VGA 的。

如果没有资源的话,这很可能是不可能实现的。

即使您有源代码,他们提供两个具有不同能力的内核(即串行与 VGA 之间的权衡)这一事实意味着可能存在硬件限制(FPGA/CPLD 资源?)。

如果不知道该设备是什么,我们只能进行猜测。


如果设备制造商已经发布了 BSP 的源代码(例如:Yocto),那么您可能可以从那里查看它 - 但您可能仍然需要编译某物


如果设备由主线内核支持(即:所有源都在kernel.org 存储库),那么您可能有能力重新创建配置并重建。

  1. 启动系统并运行uname -r-这是内核版本
    • 例如4.15.0-48-generic指向v4.15发布
  2. 查找名为/proc/config.gz- 的文件,在嵌入式或较新的系统上,该文件可能不存在
    • 可以使用它解压缩gzip -d < /proc/config.gz > ~/config,然后在配置内核时使用
    • 仅当内核配置正确时才可用
      • 发行版越来越多地禁用它“安全问题
      • 在嵌入式系统上,可以禁用它以减小内核映像大小。

查找内核配置的其他地方包括/boot和相关包(如果您使用的是发行版)。


如果其中一个或两个方法都没有产生结果,那么你可能运气不佳。

相关内容