Os registros dizem:
main process exited, code=exited, status=2/INVALIDARGUMENT
Isso significa que o problema é com groundcontrol
; ele retornou o status 2 (algum tipo de falha).
Normalmente, este problema específico - falha do serviço apenas na inicialização - é causado pelo serviço ser iniciado muito cedo , isto é, quando é necessário algum dispositivo de hardware que ainda não tenha sido descoberto pelo sistema. (Lembre-se que em sistemas Linux modernos, praticamente todos os dispositivos são descobertos dinamicamente; não existe nenhum ponto onde diz "oh, eu tenho todos os dispositivos, vamos iniciar o init.")
A solução seria reescrever o programa para usar o libudev e adicionar dispositivos dinamicamente.
A solução é solicitar o serviço após o dispositivo específico (não sei qual dispositivo ele precisa, por isso não posso dar uma resposta completa) ou usar Wants = + After = para atrair systemd-udev-settle.service
, que aguarda até o udev processar o primeiro lote de eventos "novo dispositivo".
Além disso, por que você tem um script .sh
totalmente separado com o único propósito de copiar para um diretório? WorkingDirectory=
+ Type=simple
seria suficiente. (O &
também é desnecessário, já que o próprio systemd - sendo um gerenciador de serviços - executa tudo em "segundo plano").