/**************************************************************************
* I.MX6 Linux Qt 启动流程跟踪
* 声明:
* 1. 源代码来源MY-I.MX6;
* 2. 本文仅仅是对启动流程的解析,没有解释启动流程为什么是这样的问题。
*
* 2015-6-13 深圳 晴 南山平山村 曾剑锋
*************************************************************************/ \\\\\\\\\\\\\-*- 目录 -*-////////////
| 一、cat /etc/inittab
| 二、cat /etc/rc.d/rcS
| 三、cat /etc/rc.d/rc.local
| 四、cat /etc/rc.d/rc_gpu.S
| 五、cat /etc/profile
\\\\\\\\\\\\\\\\\\\////////////////// 一、cat /etc/inittab
# see busybox-.00rc2/examples/inittab for more examples
::sysinit:/etc/rc.d/rcS # 系统启动时调用的程序1
#::respawn:/etc/rc.d/rc_mxc.S
ttymxc0::once:/bin/login root # 内核信息打印的串口
::sysinit:/etc/rc.d/rc_gpu.S # 系统启动时调用的程序2
::ctrlaltdel:/sbin/reboot
::shutdown:/etc/rc.d/rcS stop # 关机时调用的程序
::restart:/sbin/init # 系统重启时调用的程序 二、cat /etc/rc.d/rcS
#!/bin/sh
# minimal startup script, will work with msh (this is best available in
# MMUless format). # load the configuration information 加载配置信息,并使其生效
. /etc/rc.d/rc.conf # 如果没有传入第一个参数,那么就将start字符串赋给mode
# 查看inittab文件里的一下内容,就能理解这一部分:
# ::sysinit:/etc/rc.d/rcS # 系统启动时调用的程序1
# ::sysinit:/etc/rc.d/rc_gpu.S # 系统启动时调用的程序2
# ::shutdown:/etc/rc.d/rcS stop # 关机时调用的程
# 如上可知,开机时不传参表示start,关机传入stop表示关机 mode=${:-start}
if [ $mode = "start" ]
then
services=$cfg_services # 如果mode是start,services等于cfg_services的值
else
services=$cfg_services_r # 如果mode是start,services等于cfg_services_r的值
fi
cfg_services=${:-$services} # 如果没有传入第二个参数,cfg_services等于services # run the configured sequence
for i in $cfg_services # 迭代cfg_services
do
if [ -x /etc/rc.d/init.d/$i ] # 检查文件是否可执行
then
/etc/rc.d/init.d/$i $mode # 如果可执行,那么就执行,并传入对应的mode参数,start或stop
fi
done if [ $# -ge ] # 如果参数个数大于2,到这里也就执行完毕了,不执行下面内容
then
exit
fi
# show all kernel log messages # 设置内核信息输出等级
#echo > /proc/sys/kernel/printk # run rc.local if present and executable
if [ -x /etc/rc.d/rc.local ] # 检查rc.local是否可执行
then
/etc/rc.d/rc.local $mode # 运行该脚本,跟踪该脚本
fi 三、cat /etc/rc.d/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here
# 本人查看过/usr/bin/rpm文件,不存在,所以if判断里的内容可以无视
# 当然系统运行起来之后,也没发现下面echo出来的调试信息
if [ -x "/usr/bin/rpm" -a -e "/tmp/ltib" ]
then
echo "rebuilding rpm database"
rm -rf /tmp/ltib
rpm --rebuilddb
fi # fix up permissions
# 修改/home/user的权限
if [ -d /home/user ]
then
chown -R user.user /home/user
fi # 创建一些设备节点,这之后的代码没发现对程序运行有太大价值的内容 # Add nodes when running under the hypervisor and static devices
if [ -r /sys/class/misc/fsl-hv/dev -a ! -r /dev/fsl-hv ]
then
echo "creating hypervisor nodes"
DEVID=`cat /sys/class/misc/fsl-hv/dev`
if [ -n "$DEVID" ]
then
MAJOR="${DEVID%:*}"
MINOR="${DEVID##*:}" if [ \( "$MAJOR" -gt \) -a \( "$MINOR" -gt \) ]
then
rm -f /dev/fsl-hv
mknod /dev/fsl-hv c $MAJOR $MINOR
fi
fi
for i in
do
mknod /dev/hvc$i c $i
done
fi # add the fm device nodes
if [ -n "$(cat /proc/devices | grep fm | sed 's/\([0-9]*\).*/\1/')" -a ! -r /dev/fm0 ]
then
echo "creating fman device nodes"
cd /usr/share/doc/fmd-uspace-01.01/test/
sh fm_dev_create
cd -
fi for i in ; do
if [ -e /sys/class/graphics/fb$i ]; then
chmod /sys/class/graphics/fb$i/pan
fi
done 四、cat /etc/rc.d/rc_gpu.S
#!/bin/bash
# 获取CPU的一些信息
CPUREV=$(cat /proc/cpuinfo | grep Revision | awk '{print $3}' | awk '{print substr($0,1,2)}')
# 设置一些变量,从变量的值来看,主要还解决不同CPU环境下的一些
# 依赖库的问题,后面内容都是为了处理这件事
FILEVG=/usr/lib/libOpenVG.so
FILEVG3D=/usr/lib/libOpenVG_3D.so
FILEVG355=/usr/lib/libOpenVG_355.so
echo > /sys/module/galcore/parameters/gpu3DMinClock
if [ -e $FILEVG3D ] && [ -e $FILEVG355 ]
then
if [ $CPUREV == "" ] || [ $CPUREV == "" ] || [ $CPUREV == "" ] && [ -e $FILEVG ]
then
rm -f $FILEVG
fi
if [ $CPUREV == "" ]
then
ln -s $FILEVG3D $FILEVG
fi
if [ $CPUREV == "" ]
then
ln -s $FILEVG355 $FILEVG
fi
if [ $CPUREV == "" ]
then
ln -s $FILEVG355 $FILEVG
fi
fi 五、cat /etc/profile
# 设置PATH环境变量
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin PS1='[\u@\h \W]\$ ' # shell中显示的提示信息格式 export PATH # 导出PATH位环境变量 alias ll='ls -l' # 设置命令别名
alias la='ll -a' export PS1='\u@\h \w$ ' # 导出一些环境变量
export PS2='> '
export PS3='? '
export PS4='[$LINENO]+' # 设置TSLIB、QT的库的相关信息 export GST_PLUGIN_PATH=/usr/lib/fsl_mm_linux/lib/gstreamer-0.10 export TSLIB_ROOT=/usr/local/tslib-install
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export PATH=/usr/local/tslib-install:$PATH
export LD_LIBRARY_PATH=/usr/local/Trolltech/QtEmbedded-4.8.-arm/lib
export QT_QWS_FONTDIR=/usr/local/Trolltech/QtEmbedded-4.8.-arm/lib/fonts
export QWS_MOUSE_PROTO=tslib:/dev/input/event1 # 查看/etc/pointercal文件是否存在并且是正规文件
# 通过这个文件来确定是否需要来调用触摸屏矫正程序
if [ -f /etc/pointercal ];then
echo "MXS touchscreen have calibrate!"
else
/usr/local/tslib-install/bin/ts_calibrate
fi # 运行QT程序,传入qws参数,并置于后台运行
/qt_app/myzr -qws &

I.MX6 Linux Qt 启动流程跟踪的更多相关文章

  1. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

  2. 【内核】linux内核启动流程详细分析【转】

    转自:http://www.cnblogs.com/lcw/p/3337937.html Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件 ...

  3. I.MX6 linux Qt 同时支持Touch、mouse

    /***************************************************************************** * I.MX6 linux Qt 同时支持 ...

  4. linux --> Linux 的启动流程

    Linux 的启动流程 操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但一旦进入操作系统,程序员几乎可以定制所有 ...

  5. Linux内核启动流程与模块机制

    本文旨在简单的介绍一下Linux的启动流程与模块机制: Linux启动的C入口位于/Linux.2.6.22.6/init/main.c::start_kernel() 下图简要的描述了一下内核初始化 ...

  6. linux 内核启动流程

    Linux内核启动流程详细分析: http://www.linuxidc.com/Linux/2014-10/108034.htm ARM Linux内核启动过程: http://blog.csdn. ...

  7. shell脚本编程学习笔记(二)linux服务器启动流程

    一.linux服务器启动流程 1.bios找到磁盘上的mbr主引导扇区 2.进入grub洁面选择相应的启动内核 3.读取kernel内核文件-/boot/vmlinuz-* 4.读取init的镜像文件 ...

  8. Linux内核启动流程(简介)

    1. vmlinux.lds 首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的: 第 ...

  9. Linux 的启动流程(转)

    原文链接:http://blog.jobbole.com/46078/ 半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用. 那篇文章不涉及操作系统,只与主板的板载程序 ...

随机推荐

  1. gulp4小demo

    本来想着用gulp搭建一个自动化构建工具,结果一顿报错,后来发现我重新安装的gulp版本是4.0.0,与3版本还是不太一样的,遂记之. Gulp 3版本Demo: const gulp = requi ...

  2. Spring AMQP 源码分析 05 - 异常处理

    ### 准备 ## 目标 了解 Spring AMQP Message Listener 如何处理异常 ## 前置知识 <Spring AMQP 源码分析 04 - MessageListene ...

  3. LeetCode--100--相同的树

    问题描述: 给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2, ...

  4. JS-Object(2) 原型对象 ,prototype属性。

    基础✅ prototype(✅) JS中的继承 使用JSON数据 构建对象实战 基础 关键字"this"指向了当前代码运行时的对象( 原文:the current object t ...

  5. 12月10日 render( locals:{...}) 传入本地变量。

    Jdstor第一部分后台设计,4-4上传图片. 3.4 Using Partials--3.4.4 Passing Local Variables You can also pass local va ...

  6. codeforces 494a//Treasure// Codeforces Round #282(Div. 1)

    题意:一个'('  ,  ')'  ,  '#'组成的串,可将'#'换成至少一个')'.问一个换法能使串匹配. 至少换成一个,那么就先都换成一个,记结果为str.最后一个')'的后面没有未匹配的'(' ...

  7. 『cs231n』绪论

    笔记链接 cs231n系列所有图片笔记均拷贝自网络,链接如上,特此声明,后篇不再重复. 计算机视觉历史 总结出视觉两个重要结论:1.基础的视觉神经识别的是简单的边缘&轮廓2.视觉是分层的 数据 ...

  8. 3-1 LVS-NAT集群

    ---- (整理)By 小甘丶 什么是集群: 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.(Cluster就是一组计算机,它们作为一个整体向用户提供一 ...

  9. nyoj-1367-河南省第十一届省赛-E物流配送-最小费用流

    1367-物流配送 内存限制:128MB 时间限制:8000ms 特判: No通过数:1 提交数:1 难度:4 题目描述: 物流配送是物流活动中一种非单一的业务形式,它与物品流动.资金流动紧密结合.备 ...

  10. Oracle11g温习-第四章:手工建库

     1.create database plan 1.库类型:   OLTP :  在线事务处理系统   OLAP : 在线应用处理系统   DSS :    数据决策系统 2.数据库名字及字符集 3. ...