Eu tenho um BeagleBone Black, com Debian 8.3, Linux 4.1.15-ti-rt-r43.
EDIT : O sistema está instalado no flash interno .
Modifiquei o /boot/uEnv.txt para carregar um arquivo dtb diferente, aparentemente com nome de arquivo errado, para que ele não inicialize no Linux.
Então eu conectei via pinos J1 / UART0 -> programa terminal no meu PC. Eu vejo que o U-Boot reclama que um arquivo não foi encontrado, então ele não inicia o Linux e me dá os comandos do U-Boot. O que foi listado depois de digitar "ajuda" não parecia muito útil.
É possível e viável reparar o uEnv.txt do meu console serial com comandos U-Boot - o que funcionaria... como? Ou, qual seria a melhor abordagem?
EDIT # 2 : Encontrando alguns recados úteis neste site, que não dizem exatamente, mas levam a uma direção útil: https://www.compulab.co.il/utilite-computer/wiki/index.php/Utilite_U-Boot_User_How -Para%27s descobri que posso ver uEnv.txt digitando no console do U-Boot: "ls mmc 1 boot", o comando ls no U-Boot precisa do nome do dispositivo + num, e aparentemente meu cartão SD é mmc0, o flash interno mmc1, ordem engraçada. Infelizmente, U-Boot não tem "gato", muito menos um editor aparentemente. Como uma criança com um braço de controle remoto tentando pegar um animal de pelúcia por algumas moedas, não consegue pegar meu arquivo, e está tão perto, argh!
EDIT # 3 : vi que tenho um arquivo de backup antigo de uEnv.txt em mmc1. Existe o comando U-Boot "load", para carregar um arquivo na memória, e "save", para salvar um arquivo. Você tem que especificar o endereço e tamanho. Tamanho do arquivo que você vê no comando "ls mmc 1 boot". Observando o mapa de memória na página 35 deste slide: https://www.slideshare.net/chrissimmonds/embedded-linux-quick-start-guide , a RAM começa em 0x80000000 . Supondo que, se apenas o U-Boot estiver na RAM, onde esperamos que não haja nada em, digamos, 384 Mbytes, tentei carregar o arquivo para 98000000 e salvar a partir daí, mas salvar retornou "incapaz de gravar arquivo". Que pena.
Ok, eu desisti da rota U-Boot, embora fosse legal, se isso funcionasse.
Peguei a variante IoT (somente console, sem GUI, downloads mais rápidos) da imagem BeagleBone Debian, por exemplo, "Stretch IoT (sem área de trabalho gráfica)": https://beagleboard.org/latest-images
e seguiu os passos aqui: http://beagleboard.org/getting-started
Existe um link de como fazer o flash, ou seja, são necessários passos extras para isso - bom, lembrei errado. Estava com medo de que a inicialização do sdcard piscasse o emmc interno, o que eu não quero.
Como mencionado anteriormente, quando um cartão SD é inserido, o dispositivo sdcard mmc será o número 0 e o flash interno (emmc) será 1. Além disso, o sistema de arquivos no emmc é aparentemente ext4. Então você precisa montar isso:
Então você pode simplesmente ir para a pasta de inicialização no emmc montado:
e corrija o uEnv.txt que está lá com um editor ou o backup que você certamente fez de antemão ;)
Eu escrevo um pouco mais tarde, mas pode ajudar outra pessoa.
Se você tiver um backup do
uEnv.txt
, é rápido e simples. Se você o tiver em algum lugar do seu PC, poderá copiá-lo para o cartão SD, depois do SD para a RAM e da RAM para o EMMCPrimeiro, copie o conteúdo do arquivo para a memória RAM:
Em seguida, grave o conteúdo do arquivo em um novo arquivo:
Nota: ext4write recebe o número de bytes em hexadecimal.
Nota:
mmc 1
é minha partição rootfs. Use o comandommc list
para ver as partições em sua configuração.