回复 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
~ >: 如果楼主说的是insmod *.ko这种方法的话,有下面的方法可以解决
1、 在文件系统/etc/profile 文件中添加 insmod *.ko,就会自动执行这条,这个是当前路径,根目录,确定你的ko文件路径
2、 或者是在/etc/init.d/rcS 文件中添加
这两个文件中的内容都是板子启动时要执行的,
还可以添加自动挂载SD卡,等到做成产品时还要自动运行程序 其实这个跟你在终端 输入 insmod*.ko效果是一样的,相对路径就是把*.ko跟rcS文件放同一个文件夹;
绝对路径可以随便放了,比如放到根目录 insmod /*.ko就行了
页:
[1]