如何修改vmlinuz而不重新編譯

如何修改vmlinuz而不重新編譯

如標題,我有兩個用於嵌入式系統的 vmlinuz 檔案。

而且,我沒有它的原始碼和編譯器,這個嵌入式系統的開發人員也不再運作了。

第一個vmlinuz支援4個序列埠和兩個VGA。

第二個vmlinuz支援6個串列埠和1個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相關套件中的 和 (如果您使用的是發行版)。


如果其中一項或兩項都沒有產生結果,那麼您可能不走運。

相關內容