[翻译]FreeBSD的启动和内核初始化(未完)

2009-05-13 08:06:38来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

[翻译]FreeBSD的启动和内核初始化(未完)
-------------------------------------
#    Copyleft@零同学
#    2007.05.11/12~~
#    原稿:FreeBSD Architecture Handbook
-------------------------------------
目录
#0.提要(Synopsis)
#1.概述(Overview)
#2.BIOS POST(BIOS加电自检)
#3.boot0阶段(boot0 stage)
#4.boot2阶段(boot2 stage)
#5.装载阶段(loader stage)
#6.内核初始化(kernel initialization)
#0.提要
本章从BIOS加电自检(BIOS POST)到第一个用户进程的创建来讲述启动和系统初始化过程的大概过程。系统启动的初始化步骤跟具体构架有关,所以我们这里仅以IA-32构架为例。
#1.概述(Overview)
一台计算机可以由多种方法启动,虽然通过装有系统的硬盘来启动是最普通的方法,但我们这里仍然讨论。启动过程可以分成几个步骤:
    @BIOS POST(BIOS加电自检)
    @boot0阶段
    @boot2阶段
    @装载阶段
    @内核初始化
boot0和boot2(参考boot(8)中的启动阶段1和2),被视为FreeBSD三步启动过程的第一步。每一个阶段都会在屏幕上显示各种相关信息,所以对照下表你可以认得这些信息。不过需要强调的是,不同的机器显示的信息是不一样的。
[BIOS信息(可能不一样)]
[boot0]
F1 FreeBSD
F2 BSD
F3 Disk 2
[boot2](*)
>>FreeBSD/i386 BOOT
Default: 1:ad(1,a)/boot/loader
boot:
[loader]
BTX loader 1.0 BTX version is 1.01
BIOS drive A: is disk0
BIOS drive C: is disk1
BIOS 639kB/64512kB available memory
FreeBSD/i386 bootstrap loader, Revision 0.8
Console internal video/keyboard
(jkh@bento.freebsd.org, Mon Nov 20 11:41:23 GMT 2000)
/kernel text=0x1234 data=0x2345 syms=[0x4+0x3456]
Hit [Enter] to boot immediately, or any other key for command prompt
Booting [kernel] in 9 seconds..._
[内核]
Copyright (c) 1992-2002 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD 4.6-RC #0: Sat May  4 22:49:02 GMT 2002
    devnull@kukas:/usr/obj/usr/src/sys/DEVNULL
Timecounter "i8254"  frequency 1193182 Hz
注意:
*.用户在boot0选择一个系统后这些提示才会出现。
#2.BIOS POST(BIOS加电自检)
打开电源后,计算机处理器的寄存器将被一些预设的值设定。其中有一个称为指令指针寄存器,开机后立即被定义为一个32位的值:0xfffffff0.这个指令指针寄存器指向处理器要执行的代码。另一个称为ctl的32位控制寄存器,重启后它的值被设位0.它的PE(允许保护)位决定处理器运行于保护模式或实模式。虽然在启动过程中这个位被清楚掉了,但处理器启动的时候仍然是实模式的。在其他事情中,实模式是指线性物理地址是可以被标志的。(Real mode means,among other things,that linear and physical addresses are identical.)
0xfffffff0的值稍微小于4GB,除非你的机器有4GB的物理内存,否则它不会指向一个无效的内存地址。计算机将这个地址解释后指向一个BIOS内存块。
BIOS 是Basic Input Output System(基本输入输出系统)的简称,它是主板上一个含有小块只读内存的芯片。这个只读内存含有各种区分主板随带的硬件的低级路由表。所以处理器第一步会跳到0xfffffff0这个地址,这样才可以在BIOS内存里reside(???)。通常这个地址包含一个转跳倒BIOS自检路由表的指令。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FreeBSD.6.2服务器架设视频_Code365.Net 收藏

下一篇:什么是主分区?什么是扩展分区?什么是逻辑分区?