BusyBox에서 사용자 정의 Linux 커널을 컴파일했습니다. BusyBox는 init
실행 수준을 지원하지 않습니다. BusyBox에서 커널이 시작되면 먼저 BusyBox가 init
필요 하지 않은 경우 다음과 같이 동작합니다./etc/inittab
init
/etc/inittab
inittab
::sysinit:/etc/init.d/rcS
java
이 부분은 제가 보기엔 꽤 명확한데, 네트워크를 시작하거나, 시리얼 포트를 생성하거나, 프로세스를 시작하는 데몬을 관리하는 방법을 알고 싶습니다 . 그 안에 있는 스크립트를 보았지만 /etc/init.d/
관리 방법을 모르겠습니다. .buildroot
/dev/
console
ttyAM0
답변1
$path_to_buildroot/output/target/etc/init.d
buildroot의 경우 이미지를 빌드하기 전에 모든 스크립트를 배치해야 합니다 . 내 경우에는 디렉터리에 rcS
S[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