Gravação de BIOS no Linux!

Com dicas de hardware e exemplos de comandos, veja como gravar uma BIOS usando o seu sistema Linux e um adaptador comum!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

A gente sempre passa uns “perrengues” diversos quando se estuda e usa Linux. À algum tempo tive a incumbência – observe que menino rebuscado – de fazer uma gravação de BIOS de um notebook. E obviamente o plano era testar no Linux!

O notebook em questão é um HP Pavilion 14 que não dava vídeo. Utilizei um soprador térmico, saquei o chip da BIOS.

O dito cujo chip da BIOS:

CI 25x20bvnig Winbond 25x20 Bvnig Chip Bios - VOG Center

A pergunta foi: Um gravador daqueles genéricos poderia funcionar normalmente com Linux? Posso ler e gravar? Posso confiar?

2. Ch341a

O gravador que utilizei foi uma versão USB do chip Ch341a, basicamente este das fotos:

 

Até a data desta publicação o equipamento estava disponível no Mercado Livre na faixa dos 60 reais, um exemplo é este. Produzido na China, fiquei surpreso com o suporte pelo Linux, utilizando o pacote FlashRom disponível na maioria das distros.

2.1 Implicância chinesa?

O problema com hardware chinês está em diversos aspectos históricos na comunidade opensource: documentação ruim, impopularidade – ou seja, fóruns com pouco conteúdo a respeito para solucionar dúvidas – e drivers proprietários que normalmente só existem no Windows. Um exemplo clássico são as placas de vídeo antigas da VIA® Software, cujos drivers simplesmente são ausentes no Linux. – E mesmo no Windows costumam ser somente para Windows 7, com problemas na versão 10 e 11.

Não diria que isso seja um preconceito contra o país asiático, apenas aponto que sua economia com foco em produção de baixo custo leva a tomarem a decisão de produzirem hardware cujos drivers são disponíveis somente para o Windows, por ser o sistema mais popular e algo economicamente viável e também altamente lucrativo.

Para nossa sorte a comunidade open source criou o flashrom.org, que é um canal de desenvolvimento de drivers para hardwares proprietários como este para gravadores de BIOS, EPROMs e até BGAs!

3. FlashRom

O pacote FlashR0m permite ler e gravar uma centena de BIOS’es, GBAs, EEPROMs e outros tantos chips diversos.

Instale o pacote em seu sistema baseado em Debian com:

$ sudo apt install flashrom

Se for um sistema baseado em ArchLinux, ele está no repositório principal, podendo ser instalado com:

$ sudo pacman -S flashrom

Pronto, só isso basta!
Após instalar o pacotinho do FlashRom, vamos  aos comandos de leitura e gravação.

Da lista de compatibilidade, destacamos que o pacote permite gravar DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40, TSOP48, BGA e muito mais: Contempla 476 flash chips, 291 chipsets, +500 placas mãe, 79 PCI e 17 USBs.

4. Utilizando

Vamos utilizar aqui o referido chip Ch341a para gravar uma bios. Com o chip da bios devidamente posicionado no leitor – por favor tenha atenção e não erre a polaridade dos terminais por nada neste mundo! – plugue o leitor no seu computador. Os comandos são os seguintes:

Identificando o chip:

$ sudo flashrom --p ch341a_spi

Assim o terminal exibirá o código do chip. Isso é suficiente pra provar que está Ok, foi lido e está bem encaixado. Se houverem erros, verifique se o chip está de fato bem encaixado no jacaré.

Fazendo backup da ROM armazenada no chip – É interessante ter um backup…:

$ sudo flashrom --p ch341a_spi -r backup.bin

Isso vai gerar um arquivo backup.bin na pasta de trabalho de onde o comando foi executado.
Ele terá aprox. 8 Mb, o tamanho de uma BIOS comum. – OU outro tamanho, dependendo do que você estiver lendo.

Gravar uma nova bios no chip:

$ sudo flashrom –p ch341a_spi -w bios.bin

Sendo bios.bin o arquivo da bios que você pretende gravar.
Após esse comando o flashrom vai automaticamente:

  • Verificar se cada bit da BIOS não apresenta erros e está apto para gravação.
  • Vai apagar o conteúdo da BIOS totalmente.
  • Vai gravar a BIOS com o novo arquivo .bin definido.
  • Vai verificar se o que foi gravado é a mesma coisa do que há no .bin desejado localmente.

Após o terminal exibir um VERIFIED em letras garrafais, sem erros, basta desconectar o adaptador do USB e soldar a bios novamente na placa mãe do computador/notebook, que se você gravou o arquivo .bin na versão correta, voltará a funcionar normalmente!

5. Interface de Usuário!

Por sugestão do leitor Alexandre C. Leite, a quem interessar, existe uma interface de usuário para gravação de chips desse gênero.

Escrito em QT e compatível para a maioria das distribuições Linux, o código fonte pode ser baixado aqui, porém, se você utiliza um sistema baseado no ArchLinux com repositório AUR, poderá instalá-lo com:

$ yay -S imsprog

A interface dele se assemelha às vistas em interfaces desse gênero no sistema da Microsoft!

6. Conclusão

O linux tem fama de permitir o controle total do hardware, porém se o sistema não possui drivers para tal, ele fica inútil, onde o Windows se sobressai.

No caso da gravação de bios fico feliz em ter testado e confirmar que, pelo menos no gravador ch341a tudo funciona perfeitamente: Após a gravação o notebook que eu estava trabalhando voltou ao normal!

Portanto, caso precisem de regravar uma BIOS, podem utilizar este gravador em um sistema Linux que serão bem sucedidos!

#UrbanCompassPony

6 comentários em “Gravação de BIOS no Linux!”

  1. Ótima matéria. Estou querendo comprar um desses para regravar o bios do meu chromebook que eu brickei (burrice minha kkk) e estava em dúvida se funcionaria, mas a matéria foi bem esclarecedora.

    Responder
  2. Muito bom!!!
    Bem esclarecedora essa matéria, sobre esse tal de CH341, que comprei e estava funcionando somente no Windows. Instalei o Flashrom, e, seguindo suas instruções, regravei e regravo BIOS… perfeitamente!
    Recuperei um Acer Aspire 4520…!!!!
    Obrigado pela postagem
    Eu nao sou programador e nem desenvolvedor Linux, mas usuario do UbuntuStudio e agradeço muito mesmo a ajuda de voces, que são experts em Linux.
    Obrigado, mais uma vez !!! Ismar Russano

    Responder
  3. Eu estava um tempo atrás tentando fazer uma interface grafica para o FlashRom (em GTK).
    O problema é como fazer os botões da interface, ativarem os comandos específicos do FlashRom.
    Depois que eu descobrir como fazer, vou tentar fazer um flatpak da interface.

    Responder
  4. Estou ressuscitando essa postagem para deixar uma dica aqui pra quem quer utilizar a gravadora CH341a no Linux e quer uma interface gráfica.
    Sempre me perguntava porque será que não tinha nenhum software gráfico pra gravar EEPROM’s no Linux. Até que há pouco tempo atrás, descobri o aplicativo IMSProg, feito utilizando QT e muito parecido com os aplicativos do Windows!
    Gostei tanto que até entrei em contato com o desenvolvedor e traduzi o mesmo para o nosso ptBR.
    Agora temos essa ótima opção para utilizar nossa CH341a no Linux! (Tem pacotes Debian, RPM, AUR e também AppImage)
    Confiram:
    https://github.com/bigbigmdm/IMSProg

    Responder

Deixe um comentário