声明:版权归章哥所有!!侵权盗版必纠!
搞Linux应用时,我们经常需要在kernel启动文件系统的时候要在后台自动随系统启动一些进程,还有mount一些设备。由于最近在学习字符设备驱动,写了一个简单了流水灯程序ledshow。但是我想让他在我的2440开机的时候自动就可以运行我们的pid。自己在网上也看了许多的资料,但是对于我这种Unix菜鸟来说,真的是很难接受。搞了几天终于明白了其中的一些学问。 下面具体讲讲怎么实现。 我默认你已经熟知了shell编程知识。在虚拟机中用arm-linux-gcc生成了ledshow的可执行文件。通过共享文件夹传给了windows,然后在secureCRT中输入rz命令把你通过交叉编译过得可执行文件传给你的开发板,我放到了/tmp目录下。 然后因为我们开发板上的linux启动有他自己的一套规律。所以我们在/etc/init.d下可以找到一个rcS的脚本文件,我用gvim打开它会看到如下代码: #!/bin/sh /bin/mount -a /sbin/ifconfig eth0 192.168.0.15 up /sbin/ifconfig eth1 192.168.0.16 up /bin/mknod /dev/can c 98 0 /tmp/hello start //这是我之前的一个程序 exec /usr/etc/rc.touch 以上这些代码就是决定了在kernel加载后所要运行的一些个程序。 所以我们只需要在里面加入, cd /tmp ./ledshow & reboot就可以实现我们想要的功能。有人会有疑问,&这个是什么意思的,因为我当时试的时候没加这个东西,直接start,就会出现无法显示界面,且ledshow这个死循环无法被杀死的状态,无奈我只能把led的驱动卸载然后重新编译内核,着实麻烦了一下。希望大家可以总结经验教训。至于后台和前台的关系,由于本人也是菜鸟,不是很懂。希望大家努力学习Unix,把他当做兴趣共同探索。 |
|
来自: 清章 > 《章哥那些年和linux在一起的日子》