1. 介绍

OS镜像是指包含OS、可执行文件、与程序相关的数据等的文件。OS镜像可以是不可引导的,也可以是可引导的,在嵌入式QNX中,镜像可能是以下几种类型:

可引导镜像指包含了startup和procnto的镜像,IPL,Boot Rom或BIOS(X86)可以将控制权传递给它。一般的可引导镜像如下所示:

对于有些系统,可能需要与配置相关的设置,通常将提供不可引导的镜像。将这个镜像看作是第二个“文件系统”,包含一些额外的文件。由于是不可引导的,所以通常不包括操作系统以及startup文件。

1.1 QNX OS镜像

QNX OS镜像通常包括OS(procnto)、startup代码、startup及OS需要用到的库文件(libc.so)、以及访问基本硬件所需的驱动代码或其他代码和文件。

通常,一个小的嵌入式系统中只会有一个OS镜像,在QNX系统中,包含的组件:

startup代码: startup-*;

OS内核和进程管理器: procnto;

驱动和管理器:io-pkt,devnp-ncm.so,devc-ser8250,devb-eide,esh,ksh等;

应用程序;

数据文件;

其他设备的驱动程序、用户应用程序以及所需的库和数据文件通常会放在另一个文件系统中。

对于大多数嵌入式系统,最好保持OS镜像尽可能小,将在初始启动时不需要的应用程序甚至驱动放到另一个文件系统中,比如NAND或NOR文件系统。

IFS(Image Filesystem):

引导之后,QNX OS镜像的内容作为文件系统显示在/proc/boot中,实际上,考虑OS镜像的一种好方法是将其视为一个小型文件系统,在QNX中,OS镜像通常被称为IFS(image filesystem)。这个IFS有一个小的目录结构和文件,目录用于告诉OS内核和进程管理器procnto OS镜像中文件的名称和位置。比如:

镜像大小:

通常小的OS镜像,好处也是显而易见的:

节省RAM内存;

更快的boot时间;

更稳定,通常OS镜像的组件越少,引导失败的概率就越低;

如果嵌入式系统中有硬盘驱动或闪存(比如MMC/SD),可以在OS镜像文件中包含适当的文件系统驱动程序(比如devb-eide,devb-mmcsd-board_name),并从脚本中调用驱动程序来访问其中的数据。

如果嵌入式系统中有Flash设备,可以使用这个Flash设备来存储OS镜像,并直接从Flash引导系统。

2. Deciding what goes on the target

根据系统的需求,需要将IPL、OS镜像和文件系统的组合传送到目标板上。这些组合包括:

the IPL

the boot image

the boot image and flash filesystem

the boot image and other image filesystem

some other combination of the above

如果目标开发板支持Flash设备,可以将引导镜像和Flash文件系统(或两者结合)写入到目标板的Flash设备上,如果想从Flash启动的话,这一步是必须的。要组合镜像,可以使用diskimage来操作。在开发阶段,可能需要下载工具,将image固化到Flash设备中。

3. Building an OS image

OS镜像是由mkifs(make image filesystem)程序来创建的,它接受来自两个主要来源的信息:命令行和buildfile文件。可以修改buildfile来配置OS镜像。

当配置完buildfile后,假如名为shell.bld,在Host机器上,可以执行:mkifs shell.bld shell.ifs,来生成镜像文件。可以为mkifs命令指定命令行选项。

当创建完镜像后,也可以通过dumpifs工具来查看镜像中的内容。

4. Building a flash filesystem image

如果应用程序需要可写的文件系统,并且嵌入式系统上有Flash设备,那么可以使用QNX Flash文件系统驱动来提供与POSIX兼容的文件系统。

将文件构建到Flash文件系统中,可以简化到目标板的复制工作,在使用mkefs构建文件系统之后,不再需要逐个复制每个文件,只需要一条命令来移动镜像即可。

构建Flash文件系统时,有两种选择:

在主机上创建Flash文件系统镜像文件,然后将镜像文件写入到目标板的Flash中;

在目标板系统中运行Flash文件系统驱动程序,然后将文件复制到目标板上的Flash文件系统中;

创建Flash文件系统:

当改变目标板上Flash的大小或配置,需要重新创建Flash文件系统镜像。BSP包中包含了适当的Flash文件系统驱动的源代码和二进制文件,也提供了相关的库和头文件。

产生Flash文件系统二进制文件:

进入BSP目录中;

在命令行模式下,输入make即可;

5. Creating a new filesystem on your target

可以使用QNX工具来在目标板上创建一个新的文件系统。

下边的指令是在目标系统上创建文件系统的通用指令。具体的细节可能跟各个文件系统的类型、开发板、以及创建文件系统的介质(比如DOS文件系统在X86开发板的SATA硬盘)等有关系。

要在目标板上创建新文件系统,先连接目标板,然后在目标板上:

加载合适的设备驱动,比如devb-eide;

识别相关的设备;

使用fdisk来初始化或编辑分区表,以删除不需要的分区,并添加要用于新文件系统的分区;

使用mkfilesystem_typefs(比如,mkdosfs、mkqnx6fs)命令在适当的分区中创建文件系统;

使用mount挂载具有新文件系统的分区;

这些步骤之后,应该就在挂载的分区中安装了新的文件系统。

6. Combining multiple image files

将IPL、mkifs创建的OS镜像、使用mkefs创建的flash文件系统镜像结合起来可能是有用的,甚至是必需的。

尤其是:

有些开发板只接收单个镜像文件,因此必须组合在一起才能传送到开发板;

一旦系统投入生产,单个镜像可以简化系统的制作。复制单个镜像比复制多个镜像更简单、更快,也更不容易出错;

当使用mkifs构建OS文件系统时,可以指定是将可执行文件复制到RAM中运行,还是在本地执行(XIP)。XIP通过避免将对象的代码/数据段从一个RAM位置复制到另一个RAM位置来节省一点RAM。

要启动上边的配置(XIP,并在RAM中运行),创建两个单独的镜像,然后将它们组合起来。可以使用diskimage程序来为分区介质(比如硬盘驱动器、SD卡或MMC)创建单个组合镜像,然后将镜像传输到目标板。组合镜像中的每个部分(IPL、IFS(XIP)、EFS(在RAM中运行))必须从内存页边界开始,IPL代码将把执行权交给第一个镜像中的startup代码和OS。

qnx 镜像文件_QNX OS镜像相关推荐

  1. qnx 镜像文件_QNX开发最完整图文教程(官方文档,非官方翻译)

    我一直以来,就是一个用着诺基亚的黑莓控,关注BB很久很久了.(事先说明这不是BB10的开发教程,所以大家是黑莓移动应用的开发者可以移步了,这未必是你们想要的资料.;-)在我们正式开发之前,先来闲聊放松 ...

  2. 服务器镜像文件查看,查找镜像服务器地址

    查找镜像服务器地址 内容精选 换一换 IPv6的使用,可以有效弥补IPv4网络地址资源有限的问题.如果当前云服务器使用IPv4,那么启用IPv6后,云服务器可在双栈模式下运行,即云服务器可以拥有两个不 ...

  3. 镜像、镜像文件以及挂载镜像

    镜像(Mirroring):是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像. 镜像是一种文件存储形式,可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用G ...

  4. qnx 镜像文件_QNX操作系统“自适应分区”

    1 基本介绍 自适应分区是QNX嵌入式操作系统的一个特色功能,应从两方面理解:自适应和分区. 分区是指操作系统采用"虚拟墙"将共享资源(例如CPU执行时间.内存.存储空间等)以一定 ...

  5. qnx 镜像文件_一种基于Hypervisor的QNX操作系统启动方法及装置与流程

    本发明涉及计算机领域,尤其涉及一种基于Hypervisor的QNX操作系统启动方法及装置. 背景技术: 基于Hypervisor的QNX是一种商用的遵从POSIX规范,常用用在汽车及路由器上,QNX是 ...

  6. 制作带有 GRUB 引导功能的软盘镜像文件

    试自己的操作系统时一般都会用到虚拟机.软盘镜像文件或硬盘镜像文件.我用的虚拟机是 Bochs ,无论是软盘镜像还是硬盘镜像文件的格式都很简单,或者说根本就没格式,就是个空白的文件,而磁头数.柱面数等参 ...

  7. 服务器文件镜像备份,服务器备份镜像文件

    服务器备份镜像文件 内容精选 换一换 私有镜像包含操作系统.预装的公共应用以及用户的私有应用,仅用户个人可见.您可以通过以下方式创建私有镜像:通过裸金属服务器创建私有镜像当前仅支持快速发放型裸金属服务 ...

  8. linux将txt文件转化为raw,如何利用qemu-img工具将其它格式的镜像文件转换成VHD或RAW格式...

    本文在介绍的基础上如何利用qemu-img工具将其它格式的镜像文件转换成VHD或RAW格式,重点探讨了其具体步骤. 转换镜像格式 ECS只支持导入RAW.VHD和qcow2格式的镜像文件.其他镜像文件 ...

  9. 如何备份整个硬盘为镜像文件?

    怎么对硬盘做全盘镜像?本文详细介绍如何备份整盘为镜像文件,当原始数据遭到破坏的时候,可以轻松地还原数据,确保数据的安全. 我们都知道,造成数据丢失或硬盘损坏的原因非常多,并且很多都难以避免,所以,备份 ...

  10. kaliLinux安装的常见镜像文件以及蓝屏处理

    Linux 安装常见问题 1.下载VMware Workstation Pro 然后下载kali系统(kali.org.com) 个人建议下载的时候用迅雷 切记下载的时候时下载虚拟金属 kali的新版 ...

最新文章

  1. 编码,深浅拷贝和文件操作
  2. Python打包程序
  3. iOS Provisioning Portal概述
  4. tf.transpose
  5. C++ 学习基础篇(一)—— C++与C 的区别
  6. 序列每天从0开始_006 Python基础:通用序列操作
  7. AIR通过mx:html访问本地image
  8. 如何在GitHub上搜索提交消息?
  9. 计算机操作系统-详细版-王道
  10. 如何从零开始学android?
  11. React-Native-版高仿淘宝、京东商城首页、商品分类页面,android插件化和组件化
  12. 十行python代码定时给微信好友发送晚安,自动应答--python云舔狗
  13. 计算机病毒课后讨论题,《防治计算机病毒》答辩题目及解析
  14. 计算机服务添加打印机服务,无法添加打印机报错后台程序服务没有运行的解决方法...
  15. elasticserach(一)
  16. Qlikview 数据加载方法罗列
  17. Spring Social实现QQ社交登录、注册
  18. 中国与印度软件工程师的比较
  19. MDaemon功能篇之优先级邮件
  20. WSA无法调用GPU跑分解决方法

热门文章

  1. api调用实例python_基于Python的词典api调用代码实例
  2. 用 Python 分析某医院药品销售案例!
  3. 单片机音频谱曲软件_基于51单片机音乐播放仿真 乐谱制作软件 音乐资料
  4. linux下安装MP4Box
  5. DIY LDAC蓝牙接收器(二)硬件调试篇
  6. 19行Python代码让你拥有属于自己的智能聊天机器人
  7. 5款内容超赞的微信小程序,每一个都是深藏!
  8. 计算机桌面设置上时间表,如何在电脑桌面便签上设置日程安排表?
  9. ubuntu安装安卓开发环境(android studio)
  10. 蒙特卡罗方法与马尔科夫链