电脑技术学习

FreeBSD连载(09):系统启动过程

dn001

第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+0x213]

       

      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的启动标志),那么内核的探测 信息就不会显示在屏幕上,而是被这个启动图象遮住。

未完,待续。。。  

标签: