커널 시작 시 자동실행 프로그램..

jhandsj의 이미지

보통 bootloader, kernel, ramdisk를 올리고 부팅을 하게 되면, 터미널 프로그램등에 배쉬 셀로 부팅이 되게 되는데..

이것을 부팅 시 제가 짠 프로그램이 자동 실행 되도록 하려면 어떻게 수정을 해줘야 하나요?

예를 들어, 통신 프로그램을 짠다고 가정을 하면.

개발보드 2개가 필요하겠죠.. 하나는 송신용, 하나는 수신용.

송신용은 PC와 연결하여 적절한 명령어를 주고 받으며 수행이 되게 하고, 수신용은 부팅을 시켜 놓으면 자동적으로 수신용 프로그램이 동작하면서 자체 LCD 등을 통하여 상황을 디스플레이 한다고 합시다.

송신용은 할 줄 알겠는데.. 수신용은 어떻게 해야하는지 전혀 감이 안옵니다.

송효진의 이미지

/etc/init.d/ 말씀인가요?

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~

Prentice의 이미지

또한 부팅시 커널에 init=/bin/sh와 같은 인자를 주면 /bin/sh가 실행됩니다. (다른 것은 하나도(?) 실행되지 않고요.) 원래 init 프로그램이 /etc/init.d/ 등을 부르게 되어있지요.

jhandsj의 이미지

/etc/init.d/가 하는 역할도 모르는 초보라서..;;
링크 주신거 가봤는데 제가 잘 몰라서 그런건지 저랑은 상관 없는 내용 같아요.
개발보드에 들어가는 커널이라 컴팩트 하고..
busybox 사용되서 실행 가능한 명령어도 거의 없어요..

램디스크 만들 때, 이런저런 프로그램도 같이 올리잖아요..
나중에 커널이랑 램디스크 다 올리고 부팅할 때.. 배쉬 셀이 프롬프트가 뜨는게 아니고
제가 짠 프로그램이 자동 실행되도록 하고 싶습니다.

jhandsj의 이미지

지금 보드를 부팅 시키면 /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

mavriel의 이미지

jhandsj의 이미지

참고 해봤습니다.
헌데 제 환경이랑은 좀 틀려서요..
전 /etc/에 rc 관련된게 하나도 없네요;;
제가 위에 써놓은 저게 전부입니다.
저 코드를 암만 봐도 어디서 자동 실행 시키는지 모르겠습니다..
한 번 저 코드를 직접 수정해서 부팅해 보겠습니다.

newmania의 이미지

/etc/init.d/rcS 의 마지막에 원하는 application 을 실행하는 명령어를 추가하면 되지 않나요?

jhandsj의 이미지

그냥 단순히 그렇게 하면 되더라구요..
초보이다 보니.. 지레 겁먹고 이거저거 해보려던게 오히려 해가 되었네요;;
덕분에 많이 배웠습니다.
답변 달아주신 모든 분들께 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.