如何更改x86系统下启动的延时?
在x86系统下,QNX系统能够设定两个不同的loader。第一个loader在硬盘的第一个扇区,这个扇区就是我们常说的MBR主引导记录(Master Boot Record),分区表也存储在这里。这个loader提示你选择从哪个分区启动,通常是提示:
Boot Partition 1?1
这次提示的等待键盘输入延时是四秒钟。第二个loader位于安装QNX硬盘分区的第一个扇区内。QNX分区通常以分区类型79的形式存在,在QNX系统中你可以在/dev/hd0t79看到。这个loader提示你选择缺省的QNX映象(/.boot)还是另一个启动映象(./altboot)启动系统。通常是这样提示:
Press ESC for .altboot………………….
这次等待键盘输入的延时是2秒钟。
如何改变这两个延时时间呢?
你需要使用一个QNX自带的16进制编辑器spatch来完成这个工作。用法如下:
spatch /dev/hd0 //对第一块硬盘操作
用spatch在第一个512字节中查找0xB9 0x48。0xB9是一个movw(不知怎么翻译)指令,0x48是第一个loader的延时值。这是因为每个时间小段是0.05556秒,这样1秒钟是18个时间小段,因此0x48是72个时间小段,也就是4秒钟。这时你应该明白了吧,只要修改这个值就能够改变延时的值了。比如把0x48改为0x01,那么第一个loader的延时就可以变为0秒了。
第二个loader在QNX分区的第一个扇区
spatch /dev/hd0t79
查找0xB9 0x24。0xB9是一个movw(不知怎么翻译)指令,0x24是延时的时间值,改为0x01,那么第二个loader的延时就变为0了。修改完毕后保存退出。
特别要注意的是:在用spatch修改的时候,一定不要修改了别的地方,否则可能产生不可预料的后果。