2019-11-28 10:43:57 yangxueyangxue 阅读数 58
  • Linux系统安装

    1.linux开发系统安装配置 2.shell命令 3.VI编辑器 4.GCC/GDB 5.Makefile 6.ARM开发板说明 7.嵌入式交叉开发环境

    1733课时 0分钟 5985人学习 沈寒
    免费试看

我的开发板是imx6核心板。昨天移植ssh服务,服务是移植成功了,可是开机不能自启动。于是添加自启动,开始修改/etc/init.d/rcS(该文件夹下面的以rc开头文件,不一定是rcS文件)文件,可是每次修改该文件之后,系统重启之后,原来修改的内容就被覆盖了。于是各种修改,还是不行。后来想想修改之后执行一下sync命令吧,执行完之后就可以了。自己一时大意了,把这条命令给忘了,走了不少弯路。

原来linux系统为了提高读写磁盘的效率,会先将数据放在一块buffer中。在写磁盘时并不是立即将数据写到磁盘中,而是先写入这块buffer中了。此时如果重启系统,就可能造成数据丢失。sync命令用来flush文件系统buffer,这样数据才会真正的写到磁盘中,并且buffer才能够释放出来,flush就是用来清空buffer。sync命令会强制将数据写入磁盘中,并释放该数据对应的buffer,所以常常会在写磁盘后输入sync命令来将数据真正的写入磁盘。

2006-09-02 16:51:00 ifq 阅读数 0
  • Linux系统安装

    1.linux开发系统安装配置 2.shell命令 3.VI编辑器 4.GCC/GDB 5.Makefile 6.ARM开发板说明 7.嵌入式交叉开发环境

    1733课时 0分钟 5985人学习 沈寒
    免费试看
 现在做的这个蓝牙项目要在arm-linux上跑一个服务端,监听请求,为了自动化一点,我想让板子启动自动加载初始化的程序以及server程序.
找了半天找到/usr/etc/rc.local这个文件.把加载模块,初始化蓝牙以及server程序放进去,开机倒是有反应,模块确实加载了,但是后边2步就提示找不到所需的库文件.由于的一步加在模块用的命令insmod是系统命令,后边的都是自己的程序,所以怀疑库文件放置的位置不对.
想把库文件从/usr/lib挪到/lib下边去,但是不能写入.这才知道了这部分根文件系统是不能改变得.要改变必须得重新做根文件系统然后烧进去.于是照做了,把所需要的库添加到/lib下边,果然开机可以运行了.库找到了.
但是为什么启动的时候系统只在/lib下找,不再/usr/lib下找呢?而启动完成了之后又会在/usr/lib下寻找库文件呢?对于linux的启动过程还不熟悉,无法解释这个问题,流到以后解决吧.
2018-03-26 15:07:37 qingzhuyuxian 阅读数 3994
  • Linux系统安装

    1.linux开发系统安装配置 2.shell命令 3.VI编辑器 4.GCC/GDB 5.Makefile 6.ARM开发板说明 7.嵌入式交叉开发环境

    1733课时 0分钟 5985人学习 沈寒
    免费试看
把你要自启的程序放到 这个路径/etc/init.d/下的这个文件rcS里,在这个文件下的最后一行再加上这样一句命令:cd 你要执行的程序的绝对路径 ./test (test为你要执行的可执行文件)
2019-07-20 17:02:20 pingxiaozhao 阅读数 1110
  • Linux系统安装

    1.linux开发系统安装配置 2.shell命令 3.VI编辑器 4.GCC/GDB 5.Makefile 6.ARM开发板说明 7.嵌入式交叉开发环境

    1733课时 0分钟 5985人学习 沈寒
    免费试看

1.将编译好的Qt应用程序window放到/opt/路径下

2.在/etc/init.d/rcS文件末尾加入/opt/window -qws&

2011-06-20 17:14:00 llh363637230 阅读数 4459
  • Linux系统安装

    1.linux开发系统安装配置 2.shell命令 3.VI编辑器 4.GCC/GDB 5.Makefile 6.ARM开发板说明 7.嵌入式交叉开发环境

    1733课时 0分钟 5985人学习 沈寒
    免费试看

ARM-Linux开机自启动设置-mini2440开发板
 来源:Linux社区  作者:w7849516230

 

要在开发板上的Linux开机启动自己的程序,想着简单,却改了很久,绕了一圈下来确实很简单,只是自己一开始太过迂腐吧!

如果不想看完全文,这一段应该就够了,从我使用的开发板的角度讲,一般只要在/etc/init.d/rcS中加入你的程序或者脚本命令就可以实现开机自动运行;想在超级终端输入回车,登录后执行,则可以在/etc/profile中加入命令;如果想去掉每次开机完后的“Please press Enter to activate this console”这句,也就是实现开机自动登录,可以在/etc/inittab中仿照busybox中example的inittab写,只是将::askfirst:-/bin/sh改为::respawn:-/bin/sh即可,如果发现没有inittab那么就自己建一个(这就是我的杯具啊!!!!)。其他的板子可以根据自己的情况修改脚本,都差不了多少。

下面进入正题,说说我自己的理解。mini2440板子上的文件系统是root_qtopia,参考文章1,由于默认的内核命令行上有init=/linuxrc, 因此,在文件系统被挂载后,运行的第一个程序是根目录下的linuxrc。 这是一个指向/bin/busybox的链接,也就是说,系统起来后运行的第一个程序也就是busybox本身。这种情况下,busybox首先将试图解析/etc/inittab来获取进一步的初始化配置信息(参考busybox源代码init/init.c中的 parse_inittab()函数)。而事实上,root_qtopia中并没有/etc/inittab这个配置文件,根据busybox的逻辑,它将生成默认的配置 。因此如果需要的话,是可以自己添加/etc/inittab这个配置文件,对busybox默认执行稍加修改即可达到你所要求的。

接下来初始化的脚本就是/etc/init.d/rcS

#! /bin/sh


PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel


#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/bin/hostname FriendlyARM


/bin/mount -n -t proc none /proc
/bin/mount -n -t sysfs none /sys
/bin/mount -n -t usbfs none /proc/bus/usb
/bin/mount -t ramfs none /dev


echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hotplug
# mounting file system specified in /etc/fstab
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none /dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount -n -t ramfs none /tmp
/bin/mount -n -t ramfs none /var
mkdir -p /var/empty
mkdir -p /var/log
mkdir -p /var/lock
mkdir -p /var/run
mkdir -p /var/tmp


/sbin/hwclock -s


syslogd
/etc/rc.d/init.d/netd start
echo " " > /dev/tty1
echo "Starting networking..." > /dev/tty1
sleep 1
/etc/rc.d/init.d/httpd start
echo " " > /dev/tty1
echo "Starting web server..." > /dev/tty1
sleep 1
/etc/rc.d/init.d/leds start
echo " " > /dev/tty1
echo "Starting leds service..." > /dev/tty1
echo " "
sleep 1


/sbin/ifconfig lo 127.0.0.1
/etc/init.d/ifconfig-eth0


/bin/qtopia &
echo " " > /dev/tty1
echo "Starting Qtopia, please waiting..." > /dev/tty1

自己可以看到都执行了哪些操作,以及最后才加载qtopia。参考文章1讲解的很透彻了。我想补充的是在开机启动后,有些程序需要添加&来使其再后台执行,如加载qtopia,但是我们希望在开机后实时显示日志文件或者我们的应用程序写到文件中的信息怎样来做呢?首先,利用> /dev/tty1是将输出重定向到tty1(显示屏);其次是tail -f 命令,但是经过一番尝试后还是有许多问题,这时可以尝试把自己开机启动的程序放到/etc/profile中,作为我这个用户在自己登录时必须执行的程序,就像在超级终端中输入命令后的结果一样。

了解了开机自启动设置,其实完成可以仿照着利用busybox制作自己的文件系统,可以参考文章自己完成文件系统。


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2011-05/36109.htm