'reboot' comando não funciona corretamente após o comando 'cp', 'mv' se comporta estranho, bem

2

Eu compilei o código C executado como um binário em um ARM. O ARM inicia o Linux a partir de um cartão SD usando um antigo Image que foi gerado usando o buildroot. Dentro do código C eu chamo um shell script que move o novo Image que eu quero inicializar de um subdiretório no cartão SD para o nível superior do cartão SD (sobrescrevendo o antigo Image ), e então uso o backup Image.bak para restaurar o Image no subdiretório novamente, caso eu execute o script novamente:

#!/bin/sh
mv /sd/newImage/Image /sd/
mv /sd/newImage/Image.bak /sd/newImage/Image
reboot

O reboot funciona corretamente neste caso (o Putty desconecta - > o LED na placa que estou usando fica Vermelho e Verde - > eu posso reconectar através do Putty), embora o segundo comando mv não - remove o Image.bak mas não cria um Image - mas esse não é o propósito deste post, na verdade.

Quando tento modificar o script para que o Image.bak realmente restaure o Image usando o comando cp , o reboot não funciona corretamente.

#!/bin/sh
mv /sd/newImage/Image /sd/
cp /sd/newImage/Image.bak /sd/newImage/Image
reboot

O que acontece é que o terminal Putty que eu estava usando desconecta, mas o LED na placa que fica vermelho quando sinaliza que está reiniciando fica verde e a única maneira de restabelecer uma conexão através do Putty é fazer o ciclo manualmente da placa através do interruptor de energia. Então parece que há algo estranho acontecendo quando eu chamo o comando cp no shell script. Eu tentei umount /sd e usando sync antes do reboot pensando que talvez houvesse problemas de sincronização, mas isso também não funcionou.

Estou logado como root e as permissões não devem ser um problema com isso.

    
por sdepot 08.05.2018 / 19:28

0 respostas