BusyBox v1.01 (2006.08.31-08:53+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
Processing /etc/profile... Done
找到了/etc/profile
E:\cygwin\home\Jim\300\rel\target\rootfs_from_rootfs_tar_gz\etc\profile
echo
echo -n "Processing /etc/profile... "
export QTDIR="/usr/qpe"
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
export LD_LIBRARY_PATH="/usr/local/lib:/usr/lib:/lib:/usr/qpe/lib:/lib/lib"
export HOSTNAME="$(hostname)"
export OLDPWD=/root
export HOME=/root
後來又想到之前提過的init和rcS檔,所以就翻了一下學長論文,其中提到
Linux kernel 在執行完系統初始化設定(包含設置記憶體、Scheduler、中斷向量表 載入驅動程式等等) 之後,會將控制權以 kernel thread 的形式轉移給 user space的第一個程式:init 在 Embedded Linux 的環境下,init 一般包含於 busybox 中 當Linux kernel將控制權轉移給init時,init會讀取/etc下的相關檔案,一般是讀取/etc/inittab,再由/etc/inittab引入/etc/init.d/rcS等相關檔案執行系統環境的設定及初始化的動作,包含掛載檔案系統、執行相關應用程式及產生shell讓使用者可以透過特定指令與作業系統互動;busybox透過以上的流程來完成系統最後的相關設定。
於是就跑去研究了一下busybox,inittab的語法(和pc上的busybox不太一樣)
Understanding Busybox Inittab
http://linuxembedded.blogspot.com/2006/11/understanding-busybox-inittab.html
BusyBox init 详解
http://blog.chinaunix.net/u3/100239/showart_2035495.html
busybox的init初始化进程
http://linux.chinaunix.net/techdoc/net/2009/02/11/1061665.shtml
其實在busybox的目錄下就有一個inittab範例,說明都寫得很詳細了
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\app\busybox-1.6.1\examples\inittab用pxa300的inittab和學長的tiny rootfs的inittab比較過後,發現長得差不多
E:\cygwin\home\Jim\300\rel\target\rootfs_from_rootfs_tar_gz\etc\inittab
::sysinit:/etc/init.d/rcS ttyS0::respawn:-/bin/sh #ttyS2::respawn:-/bin/sh #tty1::respawn:-/bin/sh #tty2::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a -
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\rootfs\rootfs_from_tiny_rootfs_tgz\etc\inittab
::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh #::once:-/bin/sh #ttyS0::respawn:-/bin/sh #ttyS2::respawn:-/bin/sh #tty1::respawn:-/bin/sh #tty2::respawn:-/bin/sh ::ctrlaltdel:/bin/umount -a -看完後,摸摸腦袋,還是不太了解,總之inittab之後要執行的就是rcS啦,到時候會把要開機所做的事情都放在那邊,設定路徑等等的...
E:\cygwin\home\Jim\release-sourceforge\android-pxa270\rootfs\rootfs_from_tiny_rootfs_tgz\etc\init.d\rcS
#! /bin/sh
# Set the path
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
hostname -F /etc/HOSTNAME
# mount proc and devpts filesystem
/bin/mount -a
mount -o remount,rw /dev/root /
if [ -n "$IN_INITLOG" ]; then
IN_INITLOG=
fi
if [ ! -f /etc/HOSTNAME ]; then
echo ${HOSTNAME} > /etc/HOSTNAME
fi
touch /var/log/wtmp
chmod 0664 /var/run/utmp /var/log/wtmp
# Delete stale subsystem files.
rm -f /var/lock/subsys/*
# Delete stale pid files
rm -f /var/run/*.pid
# Load modules
if [ -f /etc/rc.d/rc.modules ]; then
/etc/rc.d/rc.modules
fi
/etc/init.d/rc.local
謝謝, 總算找到inittab寫法.
回覆刪除