패키지에 init.d 스크립트가 없는 이유는 무엇입니까?

패키지에 init.d 스크립트가 없는 이유는 무엇입니까?

저는 Raspberry Pi에서 Raspbian을 실행하고 있습니다.

다음에서 사용자 정의 드라이버를 다운로드하여 설치했습니다.리얼텍내 무선 어댑터의 경우

생성된 바이너리를 컴파일하고 다음으로 이동합니다./usr/sbin/전화를 걸 수 없다는 것을 알았습니다서비스 Hostapd가 시작됩니다.**hostapd: 인식할 수 없는 서비스**가 반환되는 경우

이를 위해 init.d 스크립트를 만들어서 넣어야 한다고 들었습니다./etc/init.d/폴더

나는 다른 프로그램의 init.d 스크립트를 살펴보기로 결정했습니다.dhcpd, 파일 내용은 다음과 같습니다

#!/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

확실히 사용자가 방금 컴파일한 바이너리에 대해 init.d 파일을 만드는 것이 불가능합니까? 그렇더라도 모든 if 문과 메시지 출력의 무결성이 정확할 가능성은 얼마나 됩니까?

여기서 뭔가 빠졌나요? make를 호출하기 전에 package.zip 파일에 init.d 스크립트에 대한 공통 파일 이름/위치가 있습니까?

특정 파일은 바이너리에 대해 잘 이해하고 있는 사람이 작성해야 합니다.

답변1

모든 Linux 배포판이 동일한 유형의 초기화 스크립트를 사용하는 것은 아닙니다. 표면적으로 SysV init 시스템을 사용하는 배포판에도 배포판별 셸 기능이 있습니다.

또한, raspbian에는 hostapd init 스크립트가 포함된 "hostapd" 패키지가 있습니다. 이를 사용해야 할 수도 있습니다.

관련 정보