Como modificar o vmlinuz sem recompilar

Como modificar o vmlinuz sem recompilar

Como título, tenho dois arquivos vmlinuz travados para sistema embarcado.

E, não tenho fonte e compilador para isso, o desenvolvedor desse sistema embarcado também não funciona mais.

O primeiro vmlinuz suporta 4 portas seriais e duas VGA.

O segundo vmlinuz suporta 6 portas seriais e uma VGA.

Quero ter um vmlinuz que suporte 6 portas seriais e duas VGA.

Existe alguma maneira de copiar o driver do segundo vmlinuz para o primeiro vmlinuz e substituir o original dentro do primeiro vmlinuz?

Responder1

Existe alguma maneira de copiar o driver do segundo vmlinuz para o primeiro vmlinuz e substituir o original dentro do primeiro vmlinuz?

Exceto por extensa engenharia reversa e patches binários, não.

Eu quero ter um vmlinuzque suporte 6 portas seriais e duas VGA.

É muito provável que isto seja impossível de conseguir sem as fontes.

Mesmo se você tiver as fontes, o fato de elas oferecerem dois kernels com habilidades diferentes (ou seja: compensação entre Serial vs VGA) implica que pode haver uma limitação de hardware (recursos FPGA/CPLD?).

Não podemos fazer mais do que especular sem saber qual é o dispositivo.


Se o fabricante do dispositivo lançou fontes para o BSP (por exemplo: Yocto), então você poderá analisá-lo a partir daí - mas provavelmente ainda precisará compilaralgo.


Se o dispositivo for suportado por um kernel principal (ou seja: todas as fontes estão norepositório kernel.org), então você poderá ter alguma capacidade de recriar a configuração e reconstruir.

  1. Inicialize o sistema e execute uname -r- esta é a versão do kernel
    • Por exemplo 4.15.0-48-genericaponta para ov4.15liberar
  2. Procure um arquivo chamado /proc/config.gz- em um sistema embarcado ou mais recente, ele pode não existir
    • Isso pode ser descompactado gzip -d < /proc/config.gz > ~/confige posteriormente usado durante a configuração do kernel
    • Isto só está disponível quando o kernel está configurado adequadamente
      • As distribuições têm desabilitado cada vez mais por "preocupações com segurança"
      • Em um sistema embarcado pode ser desabilitado para reduzir o tamanho da imagem do kernel.

Outros locais para procurar a configuração do kernel incluem /boote em um pacote relevante (se você estiver usando uma distribuição).


Se um ou ambos não produzirem resultados, provavelmente você está sem sorte.

informação relacionada