Respondendo a minha própria pergunta, para completar:
Estou usando o busybox em um sistema OpenEmbedded. O script rc em /etc/init.d/rc
tem o seguinte comportamento:
- No nível de execução de destino, todas as mortes são executadas antes de todas as partidas
- Todos os scripts são executados em ordem de prioridade crescente
- Mas: As partidas só são executadas se no nível de execução anterior não houver também um início equivalente (ou seja, está começando de novo)
- E, se o runlevel de destino for 0 (halt) ou 6 (reboot), então os starts serão realmente executados como Kills - isto é, "stop" é passado como argumento. Mas ainda depois de todas as mortes, e ainda não se uma partida equivalente existiu no runlevel anterior.
Além disso, o que me picou foi que shutdown now
muda para o nível de execução 1 e não o nível de execução 0. Você tem que usar halt
ou poweroff
para o nível de execução 0. Então meus scripts em rc0.d não são realmente executados, somente aqueles que também estão em rc1.d.