Por que os pacotes vêm sem scripts init.d?

3

Estou usando o Raspbian no meu pi de framboesa.

Eu baixei e instalei os drivers personalizados do Realtek para meu dongle wifi

Depois de compilar e mover o binário criado para / usr / sbin / , vi que não era possível chamar serviço hostapd start quando ele retornava ** hostapd: serviço não reconhecido **

Foi-me dito que devo criar um script init.d para isso e colocá-lo na pasta /etc/init.d/

Eu decidi procurar outro script init.d para um programa chamado dhcpd , o conteúdo do arquivo é

#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          dhcpcd
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: IPv4 DHCP client with IPv4LL support
# Description:
### END INIT INFO

PATH=/sbin:/bin
DHCPCD=/sbin/dhcpcd
NAME=dhcpcd
PIDFILE=/var/run/dhcpcd.pid

test -x $DHCPCD || exit 0

INTERFACES=/etc/network/interfaces

. /lib/lsb/init-functions

sanity()
{
        local x=

        case "$($DHCPCD --version)" in
        [1234].*)
                log_failure_msg "Not running $NAME because an older version" \
                        "is currently preferred"
                exit 6
        esac

        for x in /var/run/dhcpcd-*.pid; do
                [ -f "$x" ] || continue
                log_failure_msg "Not running $NAME because there is aleady an" \
                        "interface specific instance"
                log_failure_msg "$x"
                exit 6
        done

        if grep -q "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*dhcp" \
        $INTERFACES; then
                log_failure_msg "Not running $NAME because $INTERFACES"
                log_failure_msg "defines some interfaces that will use a" \
                        "DHCP client"
                exit 6
        fi
}

case "$1" in
start)
        sanity
        if pidofproc -p $PIDFILE $DHCPCD >/dev/null; then
                log_warning_msg "$NAME is already running"
                exit 0
        fi
        $DHCPCD
        ;;
stop)
        sanity
        $DHCPCD -x
        ;;
restart|force-reload)
        sanity
        $DHCPCD -x
        $DHCPCD
        ;;
try-restart)
        if ! pidofproc -p $PIDFILE $DHCPCD >/dev/null; then
                log_warning_msg "$NAME is not running"
        else
                sanity
                $DHCPCD -x
                $DHCPCD
        fi
        ;;
reload)
        if ! pidofproc -p $PIDFILE $DHCPCD >/dev/null; then
                log_failure_msg "$NAME is not running"
                exit 7
        fi
        sanity
        $DHCPCD -n
        ;;
status)
        status_of_proc -p $PIDFILE $DHCPCD "$NAME" || exit $?
        ;;
*)
        log_failure_msg "Usage: /etc/init.d/dhcpcd {start|stop|restart|try-restart|force-reload|status}"
        exit 1
        ;;
esac

Certamente, não é possível que o usuário crie um arquivo init.d para um binário compilado apenas? E mesmo que eles façam, quais são as chances da integridade de todas as saídas if e statings estarem certas?

Eu perdi alguma coisa aqui? existe um nome de arquivo / local comum para scripts init.d dentro do arquivo package.zip antes de chamar make?

Um arquivo específico deve ser escrito por alguém que tenha um bom entendimento do binário ...

    
por buntybudia 12.09.2015 / 14:16

1 resposta

1

Nem todas as distribuições Linux usam o mesmo tipo de scripts init. Mesmo para distros que usavam ostensivamente o sistema init do SysV, havia funções de shell que eram distro-específicas.

Além disso, há um pacote 'hostapd' em raspbian que inclui um script init hostapd, talvez isso possa ser o que você deve usar de qualquer maneira.

    
por 12.09.2015 / 14:41