Temos placa personalizada Beaglebone black com 256 MB de RAM e 4 GB eMMC.
Atualizamos do Linux-3.12 para o Linux-4.4 e do busybox-1.20.2 para o busybox-1.26.2.
Agora, no busybox-1.26.2, estamos vendo um problema que não estava lá no busybox-1.20.2
Eu adicionei o seguinte código em um dos últimos scripts de inicialização.
if [ -f /home/ankur ] ; then
count=50
rm /home/ankur
echo "----Check Whoami----"
whoami #prints root
reboot
echo "--------------------"
while [ true ]
do
count=$((count - 1 ))
echo "Count = $count"
if [ $count -le 0 ];then
break;
fi
echo "Sleep 1"
sleep 1
done
fi
Toquei no arquivo /home/ankur
e reiniciei a placa.
O que observei é que o sistema não reiniciou, mas o contador caiu para 0 e, em seguida, outro script de inicialização foi executado e a placa foi reiniciada.
Portanto, parece que o busybox está recebendo sinal, reboot
mas manipulando somente após a execução dos scripts init.
Agora, minha pergunta, existe um caminho para reboot
a placa antes da conclusão de todos os scripts de inicialização. Existe alguma configuração de caixa ocupada que desabilitará esse bloqueio de reinicialização?
reboot -f
(forçar a reinicialização sem passar pelo init) funciona, mas também precisamos executar o script de parada, portanto, não podemos usá-lo.
É exatamente assim que o
init
BusyBox agora funciona, sim. Não, isso não é configurável. Você tem que alterar o programa e reconstruí-lo.Leitura adicional