当使用安装程序sysinstall完成了系统安装和基本配置任务之后,系统需要重新启动。在系统从硬盘上重新启动之后,一个完好的freebsd系统就展现在使用者面前了。系统将出现登录提示,允许使用者登录进入freebsd操作系统。
unix是一种多用户、多任务的操作系统,它支持并能管理多个用户使用系统,其用户分为普通用户和管理员两类。普通用户只能使用系统提供的具体应用功能,而只有管理员才能更改系统的配置、维护整个系统。freebsd系统的拥有者不但是仅仅使用系统的普通用户,同样也是整个系统的管理员,要负责系统维护的任务。
unix下系统维护的任务具有相当大的伸缩性,按照不同的系统的要求,可以非常简单,仅仅使用系统初始提供的管理策略即可,也能是一种相当复杂的任务,对访问的客户进行更严格、更全面的限制。无论如何,freebsd的使用和维护都是一件富有挑战性的任务。
不象个人计算机上的其他几种操作系统,freebsd被设计为一种可以永久运行的系统,正常情况下不需要也不应该频繁的启动和关闭。然而,freebsd的启动过程从计算机系统自检到载入freebsd系统内核,其中经过了几个不同的阶段,这些阶段的操作都涉及到系统维护,因此相当重要,需要系统管理员加以了解。同样,由于freebsd是一个多用户系统,在后台运行着相当多对系统而言非常重要的进程,系统关闭时就需要首先关闭这些进程,因而freebsd的关闭过程也必须按照一定的要求来操作,否则就会对系统造成破坏。
普通个人计算机的启动过程相当简单,首先是系统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/windows系统,则主引导区就被重写,需要重新安装bootmanager。
当不想使用boot manager引导系统,而打算回到标准引导区的方式(不再需要引导多操作系统)时,可以使用dos程序fdisk.exe来恢复主引导区的内容。也可以使用freebsd的sysinstall程序来重新安装标准主引导区。
a:> fdisk /mbr
但是,boot manager仍然使用bios调用来获得分区上的数据,由于bios只能访问硬盘1024柱面内的分区,因此freebsd的引导分区必须在1024柱面以内才能正常启动系统。新的bios中使用lba等方式对硬盘数据进行了重新映射,来避免这个问题。然而就需注意不能随意更改bios中的硬盘映射方式不可随便更改,必须与硬盘进行分区时的设置一致,否则bios就不能正确找到以前设置的分区。
无论是标准引导程序,还是freebsd boot manager,都将载入freebsd基本分区的第一个扇区,这里放置着freebsd的启动程序boot block,它将载入freebsd文件系统中的boot loader程序,不需进行任何操作,boot loader程序将引导系统内核来启动系统。但在这个过程中也可以中断自动启动进程,进入交互模式,从而更改启动内核、进行硬件设置、甚至提供了选择不同的boot loader程序的机会。
freebsd 3.1-release中更新了系统的boot loader程序,这个新boot loader程序与freebsd 2.2.x和3.0版本使用的boot loader不同,升级的原因之一是老版本的boot loader不能启动elf格式的内核,此外新版本的boot loader功能更强大。因此老版本的boot loader的行为与下面描述的不同。
通常没有必要改变boot loader,如果要更改使用的boot loader程序,就要在启动屏幕最先印出一个简单的斜线 “/” 时,在几秒时间内按下空格键,否则启动过程将略过这个步骤,直接进入下一步。如果按下空格,则系统将出现boot提示符。
/
>>freebsd/i386 boot
default: 0:wd(0,a)/boot/loader
boot:
此时输入 “?” ,可以列出对应的硬盘分区中根目录下的所有文件。这时可以在boot提示符下输入另一个boot loader程序,启动该boot loader程序,也可以直接输入某个内核文件名,从而略过boot loader而直接启动相应的内核。然而,通过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秒间隔,在这个时间内可以让用户按下了除回车之外的其他任意键,进入boot 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的方式不同,这将直接进入userconfig的命令行模式,内核将出现userconfig的提示符:
config>
此时可以使用help命令查询可以使用的userconfig命令,如果输入visual指令,表示使用visual方式配置系统硬件,则会进入userconfig的全屏幕界面,否则就使用这个命令行方式进行硬件参数配置。命令行模式中可以使用ls命令列出不同的设备驱动程序,使用irq、drq、iomem等命令查看硬件的相应资源设置。
命令行模式比全屏幕界面更强大的地方是能够对isa pnp设备进行控制,这是通过pnp命令进行的。当isa pnp卡由bios分配资源的时候,内核能以非pnp的驱动去探测它,这也是为何要在bios中关闭相关的pnp选项的原因。但如果在编译内核支持了pnp控制器,也可以在bios中设置为由os(即freebsd)来管理硬件资源,这就需要使用pnp命令手工为isa pnp硬件分配资源,以便非pnp的驱动能检测并正确设置资源。但是手工设置要求对pnp卡硬件相当了解,否则还是让bios来完成资源的分配更为适合。
当退出userconfig之后,或者在boot loader的交互模式下执行了boot命令,或者在boot 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 loader都会在屏幕上打印提示信息,解释了基本用法和具体参数对应的含义。
freebsd 3.1之后可以设定系统启动标志图象(如同windows9x的启动标志),那么内核的探测信息就不会显示在屏幕上,而是被这个启动图象遮住。
未完,待续。。。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器