Cómo modificar vmlinuz sin recompilar

Cómo modificar vmlinuz sin recompilar

Como título, tengo dos archivos vmlinuz colgados para el sistema integrado.

Y no tengo la fuente ni el compilador, el desarrollador de este sistema integrado tampoco funciona.

El primer vmlinuz admite 4 puertos serie y dos VGA.

El segundo vmlinuz admite 6 puertos serie y un VGA.

Quiero tener un vmlinuz que admita 6 puertos serie y dos VGA.

¿Existe alguna forma de copiar el controlador del segundo vmlinuz al primer vmlinuz y reemplazar el original dentro del primer vmlinuz?

Respuesta1

¿Existe alguna forma de copiar el controlador del segundo vmlinuz al primer vmlinuz y reemplazar el original dentro del primer vmlinuz?

A falta de una extensa ingeniería inversa y parches binarios, no.

Quiero tener un vmlinuzque soporte 6 puertos seriales y dos VGA.

Es muy probable que esto sea imposible de lograr sin las fuentes.

Incluso si tiene las fuentes, el hecho de que hayan ofrecido dos núcleos con diferentes capacidades (es decir, compensación entre Serial y VGA) implica que puede haber una limitación de hardware (¿recursos FPGA/CPLD?).

No podemos hacer más que especular sin saber cuál es el dispositivo.


Si el fabricante del dispositivo ha publicado fuentes para BSP (p. ej.: Yocto), entonces es posible que puedas consultarlo desde allí, pero probablemente aún necesitarás compilaralgo.


Si el dispositivo es compatible con un kernel principal (es decir, todas las fuentes están en elrepositorio kernel.org), entonces es posible que tenga alguna capacidad para recrear la configuración y reconstruirla.

  1. Inicie el sistema y ejecútelo uname -r: esta es la versión del kernel.
    • Por ejemplo 4.15.0-48-genericapunta hacia elv4.15liberar
  2. Busque un archivo con nombre /proc/config.gz; en un sistema integrado o más reciente, es posible que no exista
    • Esto se puede descomprimir usando gzip -d < /proc/config.gz > ~/configy posteriormente usar mientras se configura el kernel.
    • Esto sólo está disponible cuando el kernel está configurado en consecuencia
      • Las distribuciones lo han ido desactivando cada vez más desde hace "preocupaciones de seguridad"
      • En un sistema integrado, se puede desactivar para reducir el tamaño de la imagen del kernel.

Otros lugares para buscar la configuración del kernel incluyen /booty en un paquete relevante (si está utilizando una distribución).


Si uno o ambos no dan resultados, probablemente no tenga suerte.

información relacionada