커널 시작 시 자동실행 프로그램..
글쓴이: jhandsj / 작성시간: 월, 2008/03/03 - 4:49오후
보통 bootloader, kernel, ramdisk를 올리고 부팅을 하게 되면, 터미널 프로그램등에 배쉬 셀로 부팅이 되게 되는데..
이것을 부팅 시 제가 짠 프로그램이 자동 실행 되도록 하려면 어떻게 수정을 해줘야 하나요?
예를 들어, 통신 프로그램을 짠다고 가정을 하면.
개발보드 2개가 필요하겠죠.. 하나는 송신용, 하나는 수신용.
송신용은 PC와 연결하여 적절한 명령어를 주고 받으며 수행이 되게 하고, 수신용은 부팅을 시켜 놓으면 자동적으로 수신용 프로그램이 동작하면서 자체 LCD 등을 통하여 상황을 디스플레이 한다고 합시다.
송신용은 할 줄 알겠는데.. 수신용은 어떻게 해야하는지 전혀 감이 안옵니다.
Forums:
/etc/init.d/
/etc/init.d/ 말씀인가요?
emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
https://xenosi.de/
또한 부팅시 커널에
또한 부팅시 커널에 init=/bin/sh와 같은 인자를 주면 /bin/sh가 실행됩니다. (다른 것은 하나도(?) 실행되지 않고요.) 원래 init 프로그램이 /etc/init.d/ 등을 부르게 되어있지요.
음..
/etc/init.d/가 하는 역할도 모르는 초보라서..;;
링크 주신거 가봤는데 제가 잘 몰라서 그런건지 저랑은 상관 없는 내용 같아요.
개발보드에 들어가는 커널이라 컴팩트 하고..
busybox 사용되서 실행 가능한 명령어도 거의 없어요..
램디스크 만들 때, 이런저런 프로그램도 같이 올리잖아요..
나중에 커널이랑 램디스크 다 올리고 부팅할 때.. 배쉬 셀이 프롬프트가 뜨는게 아니고
제가 짠 프로그램이 자동 실행되도록 하고 싶습니다.
추가..
지금 보드를 부팅 시키면 /etc/init.d/를 보면 rcS라는 파일 하나만 덩그러니 있습니다.
참고로 이 파일을 열어보면 다음과 같은 내용이 있습니다.
#!/bin/sh
#syslogd -O /dev/null
#klogd -c 1
#
# Create and mount the procfs file system
#
mkdir -p /proc
mkdir -p /tmp
mount -w proc -t proc /proc
mount -w tmpfs -t tmpfs /tmp
#
# Get the kernel version
#
KERNEL=`uname -r`
#
# Do actions for the 2.4 kernel
#
[ $KERNEL == "2.4.21-rmk1" ] &
mount_mmc ()
{
KERNEL_DEV_NAME=mmcblk0p$1
KERNEL_BUS_ID=dummy
KERNEL_DEV_NUM=dummy
SYSFS_DEVPATH=dummy
DEVICE_MAJOR=dummy
DEVICE_MINOR=dummy
UDEV_ROOT=dummy
TEMP_DEVNODE=/dev/mmcblk0p$1
/lib/udev/mmc_mount.sh $KERNEL_DEV_NAME $KERNEL_BUS_ID $KERNEL_DEV_NUM \
$SYSFS_DEVPATH $DEVICE_MAJOR $DEVICE_MINOR $UDEV_ROOT \
$TEMP_DEVNODE
}
#
# Do actions for the 2.6 kernel
#
[ $KERNEL == "2.4.21-rmk1" ] || { \
#
# The '/dev' mount point is required by udev
#
mkdir -p /dev
mount -n -t tmpfs none /dev
#
# Mount "/sys" if we are running a 2.4 kernel
#
mkdir -p /sys
mount -w sysfs /sys -t sysfs
udevd --daemon
udevstart
#
# Disable hotplug, so it does not conflict with udev
#
echo 0 > /proc/sys/kernel/hotplug
#
# Attempt to mount MMC/SD card on a 2.6 kernel
#
mount_mmc 1
mount_mmc 2
mount_mmc 3
mount_mmc 4
}
#
# For udhcp ...
#
mkdir -p /share
mkdir -p /share/udhcpc
ln -fs /etc/default.script /share/udhcpc/default.script
요거 참고해 보세요
http://wiki.kldp.org/wiki.php/InitScripts
웅..
참고 해봤습니다.
헌데 제 환경이랑은 좀 틀려서요..
전 /etc/에 rc 관련된게 하나도 없네요;;
제가 위에 써놓은 저게 전부입니다.
저 코드를 암만 봐도 어디서 자동 실행 시키는지 모르겠습니다..
한 번 저 코드를 직접 수정해서 부팅해 보겠습니다.
/etc/init.d/rcS
/etc/init.d/rcS 의 마지막에 원하는 application 을 실행하는 명령어를 추가하면 되지 않나요?
네 ^^
그냥 단순히 그렇게 하면 되더라구요..
초보이다 보니.. 지레 겁먹고 이거저거 해보려던게 오히려 해가 되었네요;;
덕분에 많이 배웠습니다.
답변 달아주신 모든 분들께 감사드립니다.
댓글 달기