[9构建嵌入式linux系统项目-启动脚本的编写

启动脚本 教学回顾 shell语法 管道、重定向 变量 结构性语句 教学内容 启动脚本的写法 教学要求 熟悉掌握启动脚本的写法 shell 函数 在shell程序中, 常常把完成固定功能、且多次使用的一组命令(语句)封装在一个函数里,每当要使用该功能时只需调用该函数名即可。 函数在调用前必须先定义,即在顺序上函数说明必须放在调用程序的前面。 调用程序可传递参数给函数, 函数可用return语句把运行结果返回给调用程序。 函数只在当前shell中起作用, 不能输出到子Shell中。 函数定义格式: 函数变量作用域 全局作用域:在脚本的其他任何地方都能够访问该变量。 局部作用域:只能在声明变量的作用域内访问。 声明局部变量的格式: local variable_name =value 函数变量作用域 #! /bin/bash # echo "lclavariable in function1 = $lclvariable" echo "Gblvariable in function1 = $Gblvariable" scope() { local lclvariable=1 Gblvariable=2 echo "lclavariable in function2 = $lclvariable" echo "Gblvariable in function2 = $Gblvariable" } scope echo "lclavariable in function3 = $lclvariable" echo "Gblvariable in function3 = $Gblvariable" 启动脚本 设计启动脚本 内核挂载根文件系统后,执行第一个用户程序(/sbin/init),init进程就是1号进程,是所有其他进程的祖先进程。 init进程根据/etc下的配置文件(inittab等)来启动其他进程,初始化系统。 在嵌入式中,配置文件是要自己编写的。 inittab init进程读取/etc/inittab文件: rcS /etc/init.d/rcS是init进程启动的第一个脚本程序,也叫做系统初始化脚本,该脚本主要完成以下任务: 挂载其他文件系统 启动mdev程序来管理设备文件 配置网络等 下面给出一个比较好的rcS脚本写法: fstab /bin/mount -a 的意思是挂载文件/etc/fstab中设置的所有设备 mdev mdev是busybox下的udev的精简版,适合在嵌入式系统下管理设备 mdev 有两个主要的应用 系统启动时创建设备文件 动态生成设备文件 mdev 系统初始化脚本中一个完整的使用mdev 的代码片段 配置网络脚本 我们将配置网卡eth0的脚本放在/etc/init.d/start/目录下,文件名为network。 该脚本如下: profile init程序通过启动/etc/init.d/rcS脚本程序来进行一系列的初始化工作 然后启动一个shell(/bin/sh)。 启动/bin/sh程序时,sh程序会读取/etc/profile作为shell的环境变量配置文件 启动脚本编写好后,启动的信息如下: 用户登陆 在上面的inittab文件中,init启动的最后任务是启动定一个shell(/bin/sh)。 我们可以将其改成最后一个启动的是一个登陆程序。 bash getty会启动login启动进行登陆 当登陆成功会启动/bin/bash程序 bash是gun的一个软件,也是我们常用的命令行shell,代码可以在上下载。 从虚拟机中,拷贝登陆root所需要的相关文件拷贝到根文件系统中 $ sudo cp /etc/{group,gshadow,passwd,shadow} /home/sice/rootfs/etc 开发板启动信息如下: 课堂小结 思考题 作业题 * func2.sh Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2

嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt相关推荐

  1. 东南大学计算机学院 智能制造,东南大学牵头承担的国家重点研发计划“面向工业互联网的智能云端协作关键技术及系统”项目启动...

    4月13日,由东南大学牵头承担的国家重点研发计划"面向工业互联网的智能云端协作关键技术及系统"项目启动暨实施方案论证会在南京举行.东南大学副校长吴刚出席会议并致辞.该项目负责人.东 ...

  2. idea 启动选择profiles_玩转SpringBoot 2 之项目启动篇

    SpringBoot 启动方式有哪些? SpringBoot 有4种方式进行启动,具体方式如下: IDEA方式启动 Eclipse 方式启动 Maven 启动方式 通过SpringBoot 程序 ja ...

  3. lfs linux 教程,用LFS从零开始构建完整Linux系统

    新的任务来了,而且这次是真正的任务,一个工程! 他让我们实现用LFS从零开始,构建出一个完整的Linux~ 当然,不是平白无故的就创建,而是参考其他人的文章: 这篇文章详细的说明了如何从只有一个机器, ...

  4. linux dd命令卡住,dd后新盘系统无法启动,解决(上)

    简介: 由于suse服务器没有做raid, 系统硬盘需要更换.打算直接做硬盘对考. 目的: 使用dd命令做suse系统硬盘对考,保证新硬盘正常工作 步骤: 1.將2TB新硬盤接到服务器上 2.使用op ...

  5. Ubuntu12.04 安装(无法将 grub-efi 软件包安装到/target/中,如果没有 GRUB 启动引导期,所安装的系统无法启动)...

    这个问题是由于在安装的时候,选择了efi boot mode的原因. 所以解决方案就是:改efi boot mode 为Legacy boot mode 关于efi和bios的区别,自行百度吧. BI ...

  6. 服务器无盘启动慢什么情况,网吧无盘系统电脑启动慢是怎么回事?

    客户端为什么启动速度很慢,有时候还需要10分钟才可以启动?提高CCBoot无盘客户端启动速度从以下三个方面考虑: 1.客户端系统安装包的选择,建议使用原版安装包安装客户端系统.不要使用盗版,还有就是不 ...

  7. tomcat启动成功 未加载项目_欣冠精密eHR系统项目成功启动

    近日,"同鑫&欣冠精密eHR系统项目启动会"成功举行,会议上双方项目组成员通过充分有效的沟通,明确项目组织.计划与实施过程的注意事项,共同推进欣冠精密实现组织.人事.考勤. ...

  8. linux的进程和作业控制实验报告,Linux基础--进程管理和作业控制

    用于进程管理和作业控制的主要命令如下图所示. 大部分命令都是对进程运行状态进行查询和监控的,而工作中与进程相关的也基本就是监控进程运行状态,检查影响系统运行瓶颈在哪里,然后进行调忧工作.因此本文只着重 ...

  9. 一行命令实现Java项目启动停止和重启

    一行命令实现Java项目启动停止和重启 一行命令实现Java项目启动停止和重启 功能 默认不入参是启动项目 支持项目启动.停止.重启:start | stop | restart 支持自定义java路 ...

最新文章

  1. [Learn Notes] PowerShell学习笔记
  2. 关于织梦系统不支持php中GD库的问题
  3. CF-241 E.Flights(差分约束)
  4. FPGA学习之verilog语言入门指导
  5. Android之TextUtils类介绍
  6. 前端学习(1907)vue之电商管理系统电商系统之渲染修改用户的表单的重置操作
  7. javac参数 编译警告关闭_JVM之JIT即时编译
  8. 教你使用 IDE/Maven 快速部署 Serverless 应用
  9. [Python] L1-018. 大笨钟-PAT团体程序设计天梯赛GPLT
  10. 绿色建筑评价标准(GB/T 50378-2006)
  11. HTTP请求方式和幂等性
  12. RockWare RockWorks 17.0.0 1CD地表数据可视化软件
  13. [Android]利用金山词霸API实现英汉互译APP
  14. pdf 天线理论与技术 钟顺时_钟顺时. 天线理论与技术[M]. 北京:电子工业出版社, 2011: 290-296....
  15. 揭秘摄像头黑产链:暴露在外的80端口
  16. 彻底关闭Win10自动更新(Win10企业版或专业版)
  17. Android Studio 问题:improperly specified vm option
  18. 一个关于Linux Bridge配置的吐嘈
  19. Windows 下的一款弱网模拟工具NEWT
  20. 4路红外循迹模块使用教程

热门文章

  1. Nginx使用brotli代替gzip
  2. Python Virtualenv Anaconda
  3. Android BottomNavigation Demo
  4. 大剑无锋之delete、drop、truncate【面试推荐】
  5. Error: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.henu.WC $WCMapper.init()
  6. Redis的内存淘汰策略
  7. 基于注解进行bean的装配
  8. leetcode 155. 最小栈(常数时间获取最小值,需要维护两个栈)
  9. 小师妹学JVM之:JIT中的PrintCompilation
  10. CentOS修改主机名(hostname)