a reinicialização busysbox não funciona no script de inicialização

1

Temos uma placa customizada baseada em preto Beaglebone com 256MB de RAM e eMMC de 4GB.

Nós atualizamos do Linux-3.12 para o Linux-4.4 e do busybox-1.20.2 para o busybox-1.26.2. Agora em busybox-1.26.2 estamos vendo e emitimos o que não estava lá em busybox-1.20.2

Eu adicionei o seguinte código no último script de init.

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

Eu toquei no arquivo em /home/ankur e reiniciei o quadro.
O que eu observei é que o sistema não foi reinicializado, mas o contador caiu para 0 e, em seguida, outro script de inicialização foi executado e a placa foi reinicializada.

Portanto, parece que o busybox está recebendo sinal para reboot , mas manipulando apenas depois que os scripts init foram executados.

Agora, minha pergunta, existe uma maneira de reboot da placa antes da conclusão de todos os scripts de inicialização. Existe alguma configuração do busybox que irá desativar este bloqueio de reinicialização?

reboot -f (forçar a reinicialização sem passar pelo init) funciona, mas precisamos executar o script de parada também para que não seja possível usá-lo.

    
por AnkurTank 12.12.2017 / 14:58

1 resposta

1

So it seems like busybox is getting signal for reboot but handling only after init scripts executed.

É exatamente assim que o init no BusyBox funciona agora, sim. Não, isso não é configurável. Você tem que alterar o programa e reconstruí-lo.

Leitura adicional

por 12.12.2017 / 15:36