Queremos colocar um computador (provavelmente um computador industrial) com Linux em um sistema alimentado por bateria. O computador será configurado para ligar quando a bateria for ligada A bateria possui um BMS, um botão e alguns pinos e/ou uma porta serial que pode ser usada para ligá-lo ou desligá-lo.
Se eu quiser desligar a bateria do computador, por exemplo, enviando o sinal para a bateria de uma porta serial, como posso fazer? Eu tenho que criar um módulo de kernel para substituir o desligamento normal da ACPI? Ou posso apenas configurar um script que faça uma sincronização, remontar o sistema de arquivos em somente leitura e enviar o sinal para a bateria?
Tenho certeza de que há uma prática recomendada e muitos exemplos, mas não consigo encontrá-los.
Coloque um script bash no
/usr/lib/systemd/system-shutdown
qual fará tudo o que você deseja, incluindo enviar uma mensagem para uma porta COM (serial). Os scripts neste diretório são executados no último, ou seja, quando todos os sistemas de arquivos foram desmontados e o root fs foi remontado somente leitura. Se você quiser executá-lo mais cedo, consulte Como executar um script com o systemd logo antes do desligamento?Existem várias maneiras de trabalhar com uma porta serial, então escolha o que funciona para você: Como enviar dados para uma porta serial e ver alguma resposta?