| 
 | 
 
 
发表于 2003-7-2 09:44:54
|
显示全部楼层
 
 
 
发信人: frank (Frank), 信区: FreeBSD 
标  题: 小蔡笔记(1) 
发信站: BBS 水木清华站 (Mon Mar  6 21:37:21 2000) 
 
Subject: 小蔡笔记 
Date: Thu, 2 Mar 2000 21:19:08 +0800 
From: "caiqingfeng"  
To:  
 
 
hi,各位: 
 前几天抽出了点时间看了看FreeBSD启动的代码,有点心得,记于此与 
 大家共勉. 
FreeBSD's booting processing 
FreeBSD的bootstrap block:(以boot.flp为例,引自/usr/src/release/Makefile) 
# +------------------------------------------------------------------------+ 
# |boot.flp                                                                | 
# +-----+-----+------------------------------------------------------------+ 
# |boot1|boot2|floppy filesystem "bootfd"                                  | 
# +-----+-----+-+--------------------------------------------------------+-+ 
#               |kernel                                                  | 
# +-----8K----+ +------------+-----------------------------------------+-+ 
#                            |mfs filesystem "mfsfd"                   | 
#                            +-----------------------------------------+ 
# 
(以下部分引自man boot和FreeBSD HOWTO) 
通常boot block指的就是boot1+boot2 (8K), bootstrap 有三步,boot1, boot2, 
loader, 
其中loader提供更复杂的启动控制,但如果boot2不能装载loader,也可以自己直接装载 
kernel. 
第一步 
    boot1 (512bytes, 1 Sector)被读入内存中,进行初始化,并将boot2(7680bytes) 
    读入内存,跳入boot2执行 
 
第二步 
    boot2 (7680bytes)一般情况下会将loader载入并执行,如果没有装载成功loader, 
将出现 
    >> FreeBSD/i386 BOOT 
    Default: 0:wd(0,a)/kernel 
    boot: 
    然后再根据输入载入相应核心 
 
第三步 
    loader的功能,这一步可能不会执行,载入相应核心 
 
第四步 
    kernel会初始化自已,确定有哪些硬件等等. 
 
第五步 
    确定root文件系统,支持UFS,MFS等文件系统,UFS就是我们经常见到的FreeBSD文件 
系统 
    MFS其实也是UFS,只是将其与核心建在一起.是一个虚拟的文件系统.boot.flp中就 
是把 
    MFS建入核心.至于如何建立MFS,下次再说. 
 
第六步 
    创建进程1,执行/sbin/init,至于/sbin/init可以是任何程序,如boot.flp中的 
sysinstall 
 
第七步 
    /sbin/init的功能. |   
 
 
 
 |