Unix既可以从硬盘又可以从软盘上引导。两者都是由BIOS装载硬盘或软盘的引导扇区,由引导扇区来装载执行核心引导程序??Boot程序。本文简要介绍Boot程序的引导过程。
Boot的内部命令
Boot共有“?”、“systty”、“mem”、“dir”、“link”共五个内部命令。Sco Unix 5.0以上还有“debug”、“version”两个命令。
1)?:在命令行上输入“?”,来显示Boot目前可以装载Unix核心的设备,例:
2)systty=0或1:
在系统引导时,由hdboot1来确认主显示适配器和com1的有效性。在缺省方式下,控制台位于主适配器上,如果主适配器出现故障不可用,则系统自动把com1口作为主控制台。通过systty参数来修改位置,systty=0:控制台位于主适配器上,systty=1:控制台位于com1口上。缺省的通讯参数为:9600波特率,8位,1停止位,无校验。
3)mem=[range] [/flag]:
一般来说,Boot能够检测到所有的系统内存,可以用“mem=/p”来显示内存情况。如果Boot检测内存有误,或出于特殊需要,可以用此参数来调整系统可用内存。这是Unix系统的一大特点。
range:为内存范围
格式为:
起始内存?终了内存
终了内存?起始内存/d
起始内存+内存大小
内存的单位用k(千字节)和m(兆字节)表示。 例:
1m?8m, 或8m?1m/d, 或1024k?8m:表示系统可用8m内存。另:
1m?5m,6m?8m:表示系统8m内存中,5m?6m内存不能使用。
flag标志,有以下几种形式:
/d: 高地址向低地址扫描。
/n:标明该段内存为非DMA方式存取,所有16M以外的内存,系统自动标为非DMA方式。
/r:专用内存段。如果该段内存为Rom Shadowing,则该段内存确定为专用段,防止被Boot和Unix核心所覆盖。除了Shadow Rom外,其它可以独立运行的程序正文段也可以放在专用段内。
/l: Unix核心正文须放在16m内存以下。
/p: 显示Boot初始检测到的内存情况,或经过mem参数调整后,再次验证到的内存情况。
需要说明的是,以上参数调整必须是1M以外的内存。如果内存中存在内存孔穴,孔穴以外的内存Boot不能检测到。在许多机器上,Unix不能很好地处理Rom Shadowing问题,必须在机器的设置中禁止掉。有时候,我们可能发现有些机型的机器存在Rom Shadowing,Unix仍能正常工作,是因为Boot引导时自动地把机器的Rom Shadowing禁止掉了。
4)dir: 查看当前Boot设备上的文件系统的目录情况。
5)link: Unix核心引导时装入有关设备的驱动程序(称为BTLD程序)。
格式1:在Boot命令提示符下,键入“link”后回车,系统提示:
what packages do you need linked into the system,
or q to quit?:
在“:”后,可以输入BTLD名称,多个BTLD之间用空格隔开,再根据系统提示,插入相应的BTLD盘。
格式2:在Boot命令提示符下,键入:link=“BTLD名1 BTLD名2 …”
BTLD名之间用空格隔开,并且括在引号内。
Boot的外部可执行程序
Boot的外部可执行程序是指能够脱离Unix核心代码,能独立运行的程序。一般来说,这些程序是用汇编编写的机器码,比如:dos,bootos等。
在Boot提示符下,输入dos或bootos dos就可以使系统转到dos操作系统下。除了DOS外,可启动的系统有:各种版本的DOS系统(dos_12、dos_16、dos_32、dos_ext)、Windows、Novell、NT、OS2、OS2_hpfs、picx、xenix、ccpm及Unix等。其格式为:
bootos sysname
(其中:sysname 为上述系统名称)
Unix启动的缺省配置
如果在Boot的命令行提示符“:”下,直接回车,Boot认为是要启动缺省的系统核心,初始化缺省的系统环境。这些缺省的信息放置在./etc/default/boot文件中。其常用的参数如下:
AUTOBOOT=Yes 或NO 如果AUTOBOOT=Yes,Boot在出现提示符“:”后,没有任何输入,在TIMEOUT所定义的时间后,自动装载由DEFBOOTSTR所定义的Unix核心。缺省时,AUTOBOOT=No。
TIMEOUT=秒数 系统在出现提示符后没有人为干预,系统应等待多少秒后,系统作为回车输入。缺省时,TIMEOUT=60。
DEFBOOTSTR=standalone参数表 Standalone为可独立运行的程序。定义系统缺省引导的核心名称。
RONLYROOT=Yes 或No RONLYROOT=Yes,根文件系统安装为只读状态。缺省为No。
SYSTTY=0 或 1 若为0,控制台位于主显示适配器上。若为1,则在COM1上。缺省在主显示适配器上。
SERIAL=参数1,参数2,… 定义主控台的通讯参数。例:SERIAL=9600,8,1,N 端口通讯波特率为9600,字节宽度为8位,停止位为1位,非校验。
另外,与INIT共用的参数有:
MAPKEY、PANICBOOT、MULTUSER、SLEEPTIME、SPAWN_INTERVAL、 SPAWN_LIMIT、 INHIBIT、DEFAULT_LEVEL等。
核心的自我调整
Unix核心引导时,Boot可以向核心传递参数。具体用法为:
Sco Unix System V/386
Boot
: unix kernel.name=value
可用参数有:
kernel.root=device
根文件系统缺省在hd(40)设备上,通过此项可以定位到其它设备上。
kernel.swap=device
定义初始交换区,缺省在hd(40)上。
kernel.swplo=s
定义页面调度块在交换区的位置,缺省的首块位置始于交换区的0块。
kernel.nswap=n
定义页面调度块的大小。此时,页面调度块的实际位置为s至s+n-1。
kernel.auto
使核心能够自动启动,不要人工干预。
kernel.ronly
使根文件系统为只读状态。
kernel.hd=xnamex
定义主硬盘的设备驱动程序。
引导过程显示说明
正确地引导Boot后,系统会提示:
Sco Unix System V/386
Boot
:
说明系统目前在交互式程序Boot的控制下,“:”为其命令行提示符。在该提示符下,就可以输入内部命令、Unix或其它可以独立运行的程序(standalone)。
--------------------------------------------------------------------------------
Sco-Unix错误信息注释
IO ERR:找不到活动分区。
CLY OVF:操作系统位于硬盘的1024柱面之外,主引导程序不能够装载分区引导块。
BAD TBL:在分区表上标有两个以上的活动分区。
NO OS:没有活动分区或活动分区引导块不能装载运行。
hdboot0引导程序错误信息?
cannot open:找不到/boot。
Bad param:/boot 参数出错。
stage 1 boot failure:/boot找不到或文件出错,需用系统盘启动机器。
hdboot1引导程序错误信息?
bad magic number:键入的程序不能运行。
can’t open :文件找不到。
COFF files not supported as standalone programs:该程序不能独立运行,需内核支持。
Command line too long - aborting:boot命令行长度为256字节。
not a directory:表明某一设备上没有特定的文件系统,或所查找的目录实为一文件。