- 积分
- 368
贡献137
飞刀6 FD
注册时间2010-5-27
在线时间304 小时
|
发表于 2012-7-18 18:17:58
|
显示全部楼层
本帖最后由 飞凌-chongzi 于 2012-7-20 09:03 编辑
回复 2# zdh
Linux系统在启动的最后阶段会创建init进程,这个进程会读取根文件系统中的启动脚本/etc/inittab并执行里面的相关命令。所以如果你想要在启动的时候就加载驱动,那么需要修改根文件系统中的/etc/inittab文件。如我制作的根文件系统中的/etc/inittab
~ >: cat /etc/inittab
# /etc/inittab
#
# Copyright (C) 2011 GuoWenxue <guowenxue@gmail.com QQ:281143292>
#
# Note: BusyBox init doesn't support runlevels. The runlevels field is
# completely ignored by BusyBox init. If you want runlevels, use sysvinit.
#
# Format for each entry: <id>:<runlevels>:<action>:<process>
#
# id == tty to run on, or empty for /dev/console.
# If specified, then /dev/$id device must exist
# runlevels == ignored, busybox doesn't support it
# action == one of sysinit, respawn, askfirst, wait, and once
# process == program to run
# Startup the system
# mount all the file systems specified in /etc/fstab
::sysinit:/bin/mount -a 挂载/etc/fstab中指定的需要开机挂载的文件系统
#Use mdev as hotplug to auto mount USB storage or SD card 使用mdev来动态创建设备节点和自动挂载U盘和SD卡设备
::sysinit:/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug
::sysinit:/sbin/mdev -s
#make shm, pts support
::sysinit:/bin/mkdir -p /dev/pts
::sysinit:/bin/mkdir -p /dev/shm
::sysinit:/bin/mount -t devpts devpts /dev/pts
#Mount our apps/info partition
#null::wait:/bin/mount -o sync,noatime,ro -t jffs2 /dev/mtdblock3 /apps
#null::wait:/bin/mount -o sync,noatime,ro -t jffs2 /dev/mtdblock4 /info
null::wait:/usr/sbin/sysmnt 挂载我们的应用程序分区
#Set hostname
null::sysinit:/bin/hostname -F /etc/hostname
#Initialize the user account files 初始化登录用的密码文件
null::wait:/usr/sbin/initpwd
#Enable console logon 初始化串口登录
null::respawn:/sbin/getty -L ttyS0 115200 vt100
null::sysinit:/bin/mkdir -p /tmp/logs
null::sysinit:/bin/mkdir -p /tmp/stat
# install drivers 这里开始加载设备驱动,/info/install是一个shell脚本(参考下面的),他不在根文件系统中,主要是方便添加新的驱动
null::wait:/info/install
# now run any rc scripts执行/etc/init.d/rcS脚本,用来启动需要开机启动的应用程序
null::wait:/etc/init.d/rcS
# system daemon
null::respawn:/sbin/syslogd -n
null::respawn:/sbin/klogd -n
# Stuff to do before rebooting
null::shutdown:/bin/umount /apps
null::shutdown:/bin/umount /info
null::shutdown:/bin/killall klogd
null::shutdown:/bin/killall syslogd
null::shutdown:/bin/umount -a -r
#null::shutdown:/sbin/swapoff -a
这里是系统启动时安装驱动的脚本
~ >: cat /info/install
#!/bin/sh
version=`uname -r`
DRV_PATH=/lib/modules/$version/
# register drivers
insmod $DRV_PATH/at91_led.ko
insmod $DRV_PATH/at91_button.ko
insmod $DRV_PATH/at91_buzzer.ko
insmod $DRV_PATH/at91_gsm.ko
insmod $DRV_PATH/at91_iso7816.ko
insmod $DRV_PATH/usb_gsm.ko
~ >: |
|