BusyBox에서 시작 스크립트 생성 및 제어


11

BusyBox에서 커스텀 리눅스 커널을 컴파일했습니다. BusyBox init는 런레벨을 지원하지 않습니다. 커널이 BusyBox에서 부팅 될 때 먼저 init지정된 runlevel을 찾는 커널이 실행됩니다 /etc/inittab. BusyBox init는 없이도 잘 작동합니다 /etc/inittab. inittab발견 되지 않으면 다음과 같은 동작이 있습니다.

::sysinit:/etc/init.d/rcS

이 부분은 나에게 분명하지만 네트워킹을 시작하거나 직렬 포트를 만들거나 java프로세스 를 시작하는 데몬을 관리하는 방법을 알고 싶습니다 . 나는 상주하는 스크립트를 보았지만 스크립트 /etc/init.d/를 관리하는 방법을 이해하지 못합니다. 와 같은 자동화 된 도구없이 이러한 서비스를 직접 제어 할 수있는 훌륭한 자습서 나 솔루션을 찾고 buildroot있습니다. 이 스크립트의 작동 방식과 장치를 만드는 방법을 이해하고 싶습니다 /dev/(지금은 console및 만 가지고 있음 ttyAM0).

답변:


9

buildroot의 경우 $path_to_buildroot/output/target/etc/init.d빌드 이미지 전에 모든 스크립트를 배치해야합니다 . 필자의 경우이 디렉토리에는 rcSS [0-99] script_name이라는 스크립트가 거의 없습니다. 따라서 자신 만의 시작 \ 중지 스크립트를 만들 수 있습니다.

rcS :

#!/bin/sh

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
    *.sh)
        # Source shell script for speed.
        (
        trap - INT QUIT TSTP
        set start
        . $i
        )
        ;;
    *)
        # No sh extension, so fork subprocess.
        $i start
        ;;
    esac
done

예를 들어 S40network :

#!/bin/sh
#
# Start the network....
#

case "$1" in
  start)
    echo "Starting network..."
    /sbin/ifup -a
    ;;
  stop)
    echo -n "Stopping network..."
    /sbin/ifdown -a
    ;;
  restart|reload)
    "$0" stop
    "$0" start
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart}"
    exit 1
esac

exit $?

S[0-99]script_name파일 이름 구문은 스크립트를 실행 S10*하기 전에 실행 S2*되고 중단됩니다.
Tim

@Tim은 반드시 "스크립트를 깨는"것이 아니라 제로 패드입니다. 물론 S20*실행은 후 S10*, 당신은 전에 뭔가오고 싶은 경우에 S10당신이 그것을 호출 할 필요는 S01*, S02*, 등 NBD을.
thom_nic

5

"target"폴더에서 fs를 변경하는 것은 좋지 않습니다. 변경 사항 output/target/make clean명령에서 유지되지 않기 때문 입니다.

buildroot 매뉴얼에서 올바르게 수행 하는 방법을 설명 했습니다.

파일 시스템을 부분적으로 오버레이하는 어딘가에 dir을 작성해야합니다. 예를 들어,이 구조체를 생성하는 buildroot 디렉토리에 "your-overlay"디렉토리를 생성 할 수 있습니다

your-overlay/etc/init.d/<any_file>

그런 다음 defconfig에서이 오버레이의 경로를 설정해야합니다

System configuration > Root filesystem overlay directories

(또는 BR2_ROOTFS_OVERLAY를 찾으십시오)

또한이 오버레이의 권장 경로는 board/<company>/<boardname>/rootfs-overlay



1
OP는 BusyBox 만 사용하고 있으며 빌드 루트없이 자신의 목표를 달성하고자 함을 나타냅니다. 이 답변이 질문과 관련이 없다고 생각합니다. 허용 된 답변에 대한 의견입니다.
Tim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.