Linux 版 (精华区)

发信人: tcpip (俺的昵称改了), 信区: Linux
标  题: FreeBSD连载(09):系统启动过程
发信站: 紫 丁 香 (Fri Nov 12 21:23:17 1999), 转信

【 以下文字转载自 Linux 讨论区 】
【 原文由 tcpip 所发表 】
 FreeBSD连载(09):系统启动过程
http://www.sina.com.cn 1999年11月11日 16:03 王波

第3章 系统管理和维护
  当使用安装程序Sysinstall完成了系统安装和基本配置任务之后,系统需要重新启动
。在系统从硬盘上重新启动之后,一个完好的FreeBSD系统就展现在使用者面前了。系统
将出现登录提示,允许使用者登录进入FreeB SD操作系统。

  Unix是一种多用户、多任务的操作系统,它支持并能管理多个用户使用系统,其用户
分为普通用户和管理员两类。普通用户只能使用系统提供的具体应用功能,而只有管理员
才能更改系统的配置、维护整个系统。FreeBSD系统的拥有者不但是仅仅使用系统的普通
用户,同样也是整个系统的管理员,要负责系统维护的任务。

  Unix下系统维护的任务具有相当大的伸缩性,按照不同的系统的要求,可以非常简单
,仅仅使用系统初始提供的管理策略即可,也能是一种相当复杂的任务,对访问的客户进
行更严格、更全面的限制。无论如何,FreeBSD的使用和维护都是一件富有挑战性的任务
。 


系统的启动与关闭

  不象个人计算机上的其他几种操作系统,FreeBSD被设计为一种可以永久运行的系统
,正常情况下不需要也不应该频繁的启动和关闭。然而,FreeBSD的启动过程从计算机系
统自检到载入FreeBSD系统内核,其中经过了几个不同的阶段,这些阶段的操作都涉及到
系统维护,因此相当重要,需要系统管理员加以了解。同样,由于FreeBSD是一个多用户
系统,在后台运行着相当多对系统而言非常重要的进程,系统关闭时就需要首先关闭这些
进程,因而FreeBS D的关闭过程也必须按照一定的要求来操作,否则就会对系统造成破坏
。 


系统启动过程

  普通个人计算机的启动过程相当简单,首先是系统BIOS自检,自检之后将载入启动硬
盘上的主引导区,由主引导区上的引导程序再载入具体操作系统。标准的主引导区将按照
启动分区的设置,引导该分区上的操作系统,FreeBSD也可以使用这种方式。但更常见的
引导FreeBSD的方式,是使用FreeBSD Boot Manager,来管理和负责引导包括FreeBSD在内
的多个操作系统。 


多操作系统引导程序

  按照计算机启动硬盘第一个扇区的系统主引导程序的不同,计算机有不同的启动过程
。FreeBSD最常使用 FreeBSD Boot Manager,它可以让使用者在系统中共存的不同操作系
统进行选择。 

  如果使用了Boot Manager用于多操作系统的引导,则系统自检后首先进入Boot 
Manager的引导界面。

  F1: FreeBSD

  F2: Dos

  F5: Disk 2

  Default F1

  Boot Manager使用计算机的功能键来启动各个分区的操作系统,使用F1将启动第一个
分区wd0s1 上的操作系统,F2启动wd0s2,F3对应wd0s3,等等,F5启动另一个硬盘上主引
导区的引导程序。这样可以在第二个磁盘上也安装Boot Manager,由它来引导自己硬盘上
各分区的操作系统。只有在分区的确存在的情况下, Boot Manager才显示相应的启动热
键,并从分区的类型判断它是那种操作系统。在使用者选择了某个选项,或者经过了一定
的延迟时间之后,Boot Manager就启动FreeBSD系统。

  使用Boot Manager作多操作系统引导需要注意的是:一旦在这台计算机中重新安装
Dos/Windo ws系统,则主引导区就被重写,需要重新安装BootManager。

  当不想使用Boot Manager引导系统,而打算回到标准引导区的方式(不再需要引导多
操作系统)时,可以使用DOS程序fdisk.exe来恢复主引导区的内容。也可以使用FreeBSD
的sysinstall程序来重新安装标准主引导区。

  A:> fdisk /mbr

  但是,Boot Manager仍然使用BIOS调用来获得分区上的数据,由于BIOS只能访问硬盘
1024 柱面内的分区,因此FreeBSD的引导分区必须在1024柱面以内才能正常启动系统。新
的BIOS中使用LBA等方式对硬盘数据进行了重新映射,来避免这个问题。然而就需注意不
能随意更改BIOS中的硬盘映射方式不可随便更改,必须与硬盘进行分区时的设置一致,否
则BIOS就不能正确找到以前设置的分区。 


boot loader

  无论是标准引导程序,还是FreeBSD Boot Manager,都将载入FreeBSD基本分区的第
一个扇区,这里放置着FreeBSD的启动程序Boot Block,它将载入FreeBSD文件系统中的
boot l oader程序,不需进行任何操作,boot loader程序将引导系统内核来启动系统。
但在这个过程中也可以中断自动启动进程,进入交互模式,从而更改启动内核、进行硬件
设置、甚至提供了选择不同的boot loader程序的机会。

  FreeBSD 3.1-release中更新了系统的boot loader程序,这个新boot loa der程序与
FreeBSD 2.2.x和3.0版本使用的boot loader不同,升级的原因之一是老版本的b oot 
loader不能启动ELF格式的内核,此外新版本的boot loader功能更强大。因此老版本的
boo t loader的行为与下面描述的不同。

  通常没有必要改变Boot Loader,如果要更改使用的Boot Loader程序,就要在启动屏
幕最先印出一个简单的斜线 “/” 时,在几秒时间内按下空格键,否则启动过程将略过
这个步骤,直接进入下一步。如果按下空格,则系统将出现boot提示符。

  /

  >>FreeBSD/i386 BOOT

  Default: 0:wd(0,a)/boot/loader

  boot:

  此时输入 “?” ,可以列出对应的硬盘分区中根目录下的所有文件。这时可以在
boot提示符下输入另一个b oot loader程序,启动该boot loader程序,也可以直接输入
某个内核文件名,从而略过boot l oader而直接启动相应的内核。然而,通过boot 
loader能完成更多的任务,包括进行硬件资源设置。

  此时也可以列出、选择不同的硬盘分区上的不同启动文件,正如之前的提示信息,
0:wd(0,a)用于一个包含 FreeBSD根文件系统的子分区,其中第一个0为硬盘控制器的序号
,而wd(0,a)为硬盘分区wd0a,根据硬盘分区情况,这对应第一个UFS分区上的根文件系统
。而后面可以跟随目录和文件名,以及可以使用?来列出目录下的文件,当然选择启动内
核的任务可以在boot loader内部中更好的完成,一般情况下不需要进入这个阶段改变
boot loader程序。

  此后系统将进入Boot Loader程序中,由Boot Loader将内核/kernel和内核模块载入
内存,接着Boot Loader就等待10秒间隔,在这个时间内可以让用户按下了除回车之外的
其他任意键,进入Bo ot Loader的交互模式。

  /

  BTX loader 1.00 BTX version is 1.01

  Console: internal video/keyboard

  BIOS drive A: is disk0

  BIOS drive C: is disk1

  BIOS drive D: is disk2

   

  FreeBSD/i386 bootstrap loader, Revision 0.5 638/64512kB

  (wb@email.online.ha.cn, Web Mar 3 02:54:38 CST 1999)

  /kernel text=0x1697f2 data=0x168d0+0x1f17c syms=[0x4+0x1eb70+0x4+0x2014a]


  /modules/splash_bmp.ko text=0x1025 data=0xc+0x634 syms=[0x4+0x400+0x4+0x21
3]

   

  Hit [Enter] to boot immediately, or any other key for command prompt.

  Booting [kernel] in 8 seconds...

   

  Type ‘?’ for a list of commands, ‘help’ for more detiled help.

  disk1s3a:>

  新的Boot Loader使用BIOS的硬盘表示顺序,没有区分SCSI硬盘da和IDE硬盘wd,而直
接使用disk0、disk1、disk2按BIOS中的顺序表示硬盘。本例中的提示符为disk1s3a,由
于本例中使用的硬盘为IDE接口,因此这实际就代表wd1s3a分区。

  在boot loader提示符下有很多相当有用的命令,例如使用ls命令可以列出disk1s3a
中各级目录下的文件,使用lsdev可以列出当前内核中的设备驱动,使用lsmod可以列出已
经载入的内核模块,使用load 可以载入另外的需要载入的内核模块,使用autoboot可以
在给定时间之后启动系统,而使用boot命令可以立即启动系统内核,或者使用pnpscan命
令扫描当前系统中的PNP卡。一般boot命令比较常用,例如使用 “boot -s” 命令,将启
动系统并进入单用户模式,在这个模式下可以执行系统维护任务。通常由于只有可以信任
的管理人员才能访问控制台,因此缺省状况下进入单用户模式不需要使用口令认证。

  在boot命令之后使用其他内核名字作参数,用来使用缺省内核/kernel之外的其他内
核来启动系统。每个 FreeBSD系统都至少具备一个备用的通用内核kernel.GENERIC,在当
前系统内核被破坏的情况下可以使用它来启动系统。因此在引导程序被破坏而系统完好的
情况下(通常是由于重新安装了Windows的原因),可以使用安装软盘或光盘启动,进入
Boot Loader的交互模式,选择硬盘上的内核启动,然后进行修复而不需要重新安装。当
在boot loader提示符下使用 “boot -c” 命令,在其后的启动过程中将进入UserConfig
中,用于对内核中的硬件资源参数进行配置。与系统初始安装时进入UserConfig的方式不
同,这将直接进入User Config的命令行模式,内核将出现UserConfig的提示符:

  config>

  此时可以使用help命令查询可以使用的UserConfig命令,如果输入visual指令,表示
使用vi sual方式配置系统硬件,则会进入UserConfig的全屏幕界面,否则就使用这个命
令行方式进行硬件参数配置。命令行模式中可以使用ls命令列出不同的设备驱动程序,使
用irq、drq、iomem等命令查看硬件的相应资源设置。

  命令行模式比全屏幕界面更强大的地方是能够对ISA PNP设备进行控制,这是通过pnp
命令进行的。当IS A PNP卡由BIOS分配资源的时候,内核能以非PNP的驱动去探测它,这
也是为何要在BIOS中关闭相关的PNP 选项的原因。但如果在编译内核支持了PNP控制器,
也可以在BIOS中设置为由OS(即FreeBSD)来管理硬件资源,这就需要使用pnp命令手工为
ISA PNP硬件分配资源,以便非PNP的驱动能检测并正确设置资源。但是手工设置要求对
PNP卡硬件相当了解,否则还是让BIOS来完成资源的分配更为适合。

  当退出UserConfig之后,或者在boot loader的交互模式下执行了boot命令,或者在
bo ot loader提示进入交互模式的时候10秒钟内没有任何输入,则boot loader就会载入
内核,并自动将控制权交给已经载入的FreeBSD内核程序,由内核探测计算机中的各个硬
件,并将探测结果打印到屏幕上。使用键盘右上角的Pause键可以暂停屏幕输出,并可以
使用Page Up,Page Down键上下滚动屏幕上的信息进行查看,最后再使用一次Pause键将
打开屏幕输出,继续系统启动过程。内核的启动信息也可以在登录系统之后使用dmesg 命
令查看。

  FreeBSD 3.0以前的FreeBSD版本使用的Boot Loader为一个较老的版本,因此提示信
息与命令输入方式也略有不同,但基本实现同样的功能,旧Boot Loader程序的提示符直
接就为 “boot:” ,可以直接输入 “-s” 、 “-c” 等参数进入单用户模式或进入
UserConfig。启动时boot loa der都会在屏幕上打印提示信息,解释了基本用法和具体参
数对应的含义。

  FreeBSD 3.1之后可以设定系统启动标志图象(如同Windows9x的启动标志),那么内
核的探测信息就不会显示在屏幕上,而是被这个启动图象遮住。

未完,待续。。。  

--
"这一千多年没写诗了?"
"写了, 不过只写了两句."
"千年得两句, 一定是万古丽句了. 念来听听."
"好吧, 我现丑了" 太白星清了清嗓子, 浑厚的男中音在天庭响起:
大海啊, 都是水;
骏马啊, 四条腿;

※ 来源:·紫 丁 香 bbs.hit.edu.cn·[FROM: 202.118.239.10] 
--
※ 转载:.紫 丁 香 bbs.hit.edu.cn.[FROM: 202.118.239.10]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.824毫秒