QNX的boot启动方式分析



锋影

e-mail:174176320@qq.com


一、 系统启动

系统启动时会将 CPU 重置 (Reset) ,被重置后 CPU 会执行重置 Vector 中的代码。在 X86 平台中通常都是 BIOS ,在其他平台上可以使 ROM 或直接跳至 IPL  BIOS  ROM执行后通常跳至 IPL(Initial Program Load)  IPL 将启动镜像复制到内存中,并跳至启动 (Startup) 。启动代码会初始化硬件,并为内核的启动收集硬件信息。然后加载并启动procnto( 内核和进程管理器 )  IPL  startup 通常都是 BSP(Board Support Package) 的一部分。 Procnto 启动后会执行启动脚本 (boot script) ,启动脚本控制具体的执行环境和第三方程序的启动。


二、 加载 Neutrino 镜像

当选择了一个 QNX 的分区汇, Boot Loader(OS Loader) 会启动并加载系统的核心。它是预付有文件系统的类型的。

1、 Power-safe 文件系统

Power-safe 文件系统中的 Boot Loader 会确认文件系统,并查找 .boot 目录下的所有可用的系统核心文件。如果 .boot 目录下只有一个可用的核心文件,就会立即加载这个核心,否则的回就会等个 3  4 秒让选择合适的核心文件。

可以通过命令 [mkqnx6fs -B] 来更新分区中的 Boot Loader ,而不影响分区中的其他内容。如果一个 512byte 块的分区不能作为启动分区,因为他的 Boot Loader 只有 128KB 。而一个 1KB  ( 默认 ) 它的 Boot Loader 最大可以 1GB 

2、 QNX4 文件系统

QNX4 文件系统在启动的时候会显示 [Hit Esc for .altboot] ,如果让它超时,加载器就会加载 /.boot ,如果输入 Escape 就会加载 /.altboot 。这两个核心的区别是 /.boot  DMA 模式加载,而 /.altboot 不是。

三、 Diskboot

diskboot 的作用

①    启动 slogger

②    启动 seedres 来读取 PnP BIOS 并且填充 procnto  资源数据

③    启动 pci-bios 来支持 PCI BIOS

④    启动 devb-eide 或其他磁盘驱动

⑤    查询需要 mount 的文件系统

⑥    可选:其松 fesh[Fat embedded shell]

⑦    启动控制台驱动 [devc-con-hid]  [devc-con]

⑧    最后执行 /etc/system/sysinit

1  /etc/system/sysinit

/etc/system/sysinit 文件是启动整个系统服务的脚本文件。它负责启动:

①    如果 slogger 没有启动,就启动 slogger

②    启动 pipe 

③    启动 mqueue

④    如果是安装后的第一次启动就会执行 /etc/rc.d/rc.setup-once ,它会创建目录和 swap 文件

⑤    根据 /etc/TIMEZONE 设定时区。

⑥    如果 /etc/rc.d/rc.rtc 存在并能够执行,就执行它来设定时间 (realtime clock)

⑦    设定主机名 (HostName) 。通常从 hostname 命令中取得主机名,如果 不成功会从/etc/HOSTNAME 中加载

⑧    根据 /etc/rc.d/rc.devices 来遍历设备,并加载相应驱动

⑨    如果 /etc/system/config/useqnet 存在并且 io-pkt 已经运行,就配置网络环境

⑩    执行启动脚本 /etc/rc.d/rc.sysinit

    如果启动失败 sysinit 就会试图启动一个 sh ,如果再失败就会试图启动一个 fesh

四、 设备遍历 [Device enumeration]

QNX   会通过   /etc/rc.d/rc.devices   脚本来启动   enum-devices(   设备管理器   )   ,来加载所有已知设备并启动对应驱动。

锋影

e-mail:174176320@qq.com


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值