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

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

BusyBox에서 사용자 정의 Linux 커널을 컴파일했습니다. BusyBox는 init실행 수준을 지원하지 않습니다. BusyBox에서 커널이 시작되면 먼저 BusyBox가 init필요 하지 않은 경우 다음과 같이 동작합니다./etc/inittabinit/etc/inittabinittab

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

java이 부분은 제가 보기엔 꽤 명확한데, 네트워크를 시작하거나, 시리얼 포트를 생성하거나, 프로세스를 시작하는 데몬을 관리하는 방법을 알고 싶습니다 . 그 안에 있는 스크립트를 보았지만 /etc/init.d/관리 방법을 모르겠습니다. .buildroot/dev/consolettyAM0

답변1

$path_to_buildroot/output/target/etc/init.dbuildroot의 경우 이미지를 빌드하기 전에 모든 스크립트를 배치해야 합니다 . 내 경우에는 디렉터리에 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 $?

답변2

"대상" 폴더의 파일 시스템을 변경하는 것은 좋지 않습니다. 그 이유는 명령의 변경 사항을 output/target/저장할 수 없기 때문입니다 make clean.

빌드루트 매뉴얼에는 다음 방법이 설명되어 있습니다. 제대로 해

파일 시스템이 부분적으로 포함되는 디렉토리를 생성해야 합니다. 예를 들어, 이 구조가 생성된 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

관련 정보