FreeBSD 5.2.1 boot0(启动扇区代码分析)

2009-05-13 12:58:45来源:未知 阅读 ()

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

Luonix Luo  
欢迎转载,转载时请保留原作者信息。
FreeBSD完整的内核代码在FreeBSD的“/sys”目录下。其中,FreeBSD 的 Boot Manager代码是 sys\boot\i386\boot0\boot0.s,它是FreeBSD自带的Boot Manager,其功能虽然不如Linux的lilo和Grub功能强大,但它只需按一个键就可以引导,界面直观。小小的512字节,可以给你一个简单明了的启动选择界面,还能记住你上次的选择。以下,就对此代码进行详细分析。
当我们打开计算机电源时,计算机叽叽嘎嘎进行设备和内存检测过后就读取硬盘或者软盘的引导扇区,这个扇区只有512字节,显然这512字节不能够有多大作用,这512字节的代码被BIOS放在地址从0x0000:0x7c00开始处。然后直接跳转到0x0000:0x7c00处去执行。以上工作是BIOS干的,你什么也不用作。操作系统需要通过这个引导扇区代码再装载操作系统的其他部分。
在还没有跳转到这段代码之前,也就是BIOS把磁盘的引导扇区读入到内存之后,其DL和ES、SI寄存器的内容如下:
DL:表示启动设备,例如,如果计算机是从软盘启动的则DL=0,若是从IDE的C、D盘(严格来说是物理磁盘一和物理磁盘二,而不是逻辑磁盘分区)启动的则DL分别为0x80和0x81。如果是从硬盘启动的话,ES:SI是指向BIOS中的硬盘分区表存放的地址。
好了,我们现在已经知道,计算机的BIOS已经把引导扇区的512字节的内容读入到了0:0x7c00处,然后就跳转到0:0x7C00处去执行,也就是执行引导扇区代码,引导扇区代码boot0执行代码dump如下(它很有用,以后我们还不时回头来看):
0000:  FC 31 C0 8E C0 8E D8 8E-D0 BC 00 7C 89 E6 BF 00 .1.........|....
0010:  06 B9 00 01 F3 A5 89 FD-B1 08 F3 AB FE 45 F2 E9 .............E..
0020:  00 8A F6 46 BB 20 75 04-84 D2 78 03 8A 56 BA 88 ...F. u...x..V..
0030:  56 00 E8 FC 00 52 BB C2-07 31 D2 88 6F FC 0F A3 V....R...1..o...
0040:  56 BB 73 1B 8A 07 BF 83-07 B1 03 F2 AE 74 10 B1 V.s..........t..
0050:  0B F2 AE 75 03 83 C7 0B-8A 0D 01 CF E8 C3 00 42 ...u...........B
0060:  80 C3 10 73 D6 58 2C 7F-3A 06 75 04 72 05 48 74 ...s.X,.:.u.r.Ht
0070:  0D 30 C0 04 B0 88 46 B8-BF B2 07 E8 A4 00 BE 77 .0....F........w
0080:  07 E8 B0 00 8A 56 B9 4E-E8 8C 00 30 E4 CD 1A 89 .....V.N...0....
0090:  D7 03 7E BC B4 01 CD 16-75 12 30 E4 CD 1A 39 FA ..~.....u.0...9.
00A0:  72 F2 8A 46 B9 EB 1B B0-07 E8 94 00 30 E4 CD 16 r..F........0...
00B0:  88 E0 3C 1C 74 EC 2C 3B-3C 04 76 06 2C C7 3C 04 ..
     图(一)(注:上图中的4x16个字节是保留的4个分区信息,具体解释见下面图(三))
下面,我们对FreeBSD启动扇区代码boot0.s进行逐步分析。boot0.s代码如下:
#
# Copyright (c) 1998 Robert Nordier
# All rights reserved.
#
# Redistribution and use in source and binary forms are freely
# permitted provided that the above copyright notice and this
# paragraph and the following disclaimer are duplicated in all
# such forms.
#
# This software is provided "AS IS" and without any express or
# implied warranties, including, without limitation, the implied
# warranties of merchantability and fitness for a particular

标签:

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

上一篇:制作RAMDISK in KERNEL的NetBSD微系统

下一篇:Unix/BSD/Linux的口令机制初探