标题: 小蔡笔记(1)
发信站: BBS 水木清华站 (Mon Mar6 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的功能.
页:
[1]