como escrever uma dependência de inicialização na disponibilidade da Internet?

3

Alguns dos serviços no meu Raspberry Pi (~ Debian) dependem da disponibilidade da Internet (especialmente ntpd , por razões críptica ). Especificamente, a disponibilidade de um dispositivo de rede ou de um link não é suficiente.

Ao olhar para /etc/init.d/ntp , vejo

### BEGIN INIT INFO
# Provides:        ntp
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Default-Start:   2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFO

que, acredito, significa que ntp depende de $network para poder iniciar. Eu encontrei uma referência em /etc/insserv.conf , mas ela não diz muito sobre o que é realmente necessário para configurá-la:

#
# Low level networking (ethernet card)
#
$network        +networking +ifupdown

Q1: Como exatamente $network é definido por meio dos elementos +networking +ifupdown ? (para que eu possa modificá-lo e tentar alcançar um host real antes de declarar a rede como 'up')

Q2: Se o pré-requisito de rede não for atendido, o ntp será atrasado ou falhará?

    
por WoJ 09.04.2014 / 10:11

1 resposta

3

Where is $network defined?

Esta é uma boa pergunta e que eu generalizei aqui .

How exactly is $network defined via the +networking +ifupdown elements?

AFAICT não é definido por isso, ele define quais serviços devem (opcionalmente) também declarar quaisquer dependências que o recurso tenha (?? - veja a pergunta que eu postei e relacionei acima). De man insserv :

insserv scans for System Facilities in the configuration file /etc/insserv.conf [...] All names followed by such a system facility will declare the required dependencies of the facility. [...] Names starting with a '+' sign are marked as optional.

E, na verdade, em raspbian /etc/init.d/networking (que é iniciado em /etc/rcS.d , que é executado na inicialização, independentemente do nível de execução) não inclui $network como pré-requisito, embora alguns outros serviços ( como ntp ).

Q2: If the network prerequisite is not met will the ntp start be delayed or will it fail?

Esses pré-requisitos (e outras coisas no bloco INIT INFO) são usados apenas para configurar e configurar os links de script nos diretórios /etc/rcN.d , por exemplo, quando você executa update-rc.d (que é um front end para insserv ). Em outras palavras, eles não são usados durante a execução real. Portanto, se S02ntp estiver em seu nível de execução padrão, ele será executado não importando o que durante a inicialização (com exceção de algum erro fatal anterior).

    
por 09.04.2014 / 12:17