Oct
2
系统启动过程主要由以下几步组成(以硬盘启动为例):
1 系统启动过程主要由以下几步组成(以硬盘启动为例):
系统启动过程主要由以下几步组成(以硬盘启动为例):
1. 开机 :-)
2. BIOS 加电自检 ( Power On Self Test -- POST )
内存地址为 0ffff:0000
3. 将硬盘第一个扇区 (0头0道1扇区, 也就是Boot Sector)
读入内存地址 0000:7c00 处.
4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于
则转去尝试其他启动介质, 如果没有其他启动介质则显示
"No ROM BASIC" 然后死机.
5. 跳转到 0000:7c00 处执行 MBR 中的程序.
6. MBR 首先将自己复制到 0000:0600 处, 然后继续执行.
7. 在主分区表中搜索标志为活动的分区. 如果发现没有活动
分区或有不止一个活动分区, 则转停止.
8. 将活动分区的第一个扇区读入内存地址 0000:7c00 处.
9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则
显示 "Missing Operating System" 然后停止, 或尝试
软盘启动.
10. 跳转到 0000:7c00 处继续执行特定系统的启动程序.
11. 启动系统 ...
作者: Felix021 2007-10-2 01:42 回复此发言
--------------------------------------------------------------------------------
2 回复:系统启动过程主要由以下几步组成(以硬盘启动为例):
王江民的逻辑锁,就是改写了主引导区,中了逻辑锁,不光是无法用硬盘启动,而且,软盘、光盘都无法启动!实际上这是利用了微软win98以前的一个BUG,(nt系统没有这个BUG)最先用这个方法的是DOS时代的一个叫“猴子”的病毒,让这个BUG大出名的是王江民逻辑锁!
主引导区是如此重要,在里面任意改动都有可能造成系统无法启动!
MBR是关键的东西,它就是一段代码,通过检查DPT分区信息引导系统跳转至DBR;它就象是一根火柴点亮整个系统,MBR里的内容是在操作系统前载入的,你在这里可以做很多想做的事情,如果你编程水平足够厉害的话!
作者: Felix021 2007-10-2 01:42 回复此发言
--------------------------------------------------------------------------------
3 回复:系统启动过程主要由以下几步组成(以硬盘启动为例):
http://www.oldlinux.org/oldlinux/viewthread.php?tid=2360
赵博,以前在论坛中谈到bootsect是软盘启动需要的,硬盘启动不需要bootsect,由lilo等程序完成bootsect的功能,近日在看到如下一段论述:
“INT 19会将MBR的512 bytes load到内存0x7c00中,然后JUMP到0x7c00处,开始执行MBR的可执行程序master booter,Master booter最起码需要做这些事情:
1 检测MAGIC(Signature)是否为合法值(Hex 55AA);
2 将自己移动到其它位置,将0x7C00到0x7c00+512K的空间让出来,以备其后将boot sector程序装入这个位置,这样才能和直接从软盘直接装入boot sector程序相一致;具体移动到什么位置,则根据设计而定,理论上,可以移动到任何非冲突位置(即没有被预留为其它程序所用的位置);但一般情况下,都是在0X000800至0X0A0000之间寻找一端空间存放。
3 查看分区表,将被设为活动的分区的第一个Sector装入0X7C00的位置,正常的情况下,此Sector放置的就是boot sector程序;
4 最终,master booter跳转到0X7C00的位置,开始执行boot sector。”
其中,第二点的叙述“这样才能和直接从软盘直接装入boot sector程序相一致”,似乎有些矛盾。
作者: Felix021 2007-10-31 18:43 回复此发言
--------------------------------------------------------------------------------
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。
系统启动过程主要由以下几步组成(以硬盘启动为例):
1. 开机 :-)
2. BIOS 加电自检 ( Power On Self Test -- POST )
内存地址为 0ffff:0000
3. 将硬盘第一个扇区 (0头0道1扇区, 也就是Boot Sector)
读入内存地址 0000:7c00 处.
4. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于
则转去尝试其他启动介质, 如果没有其他启动介质则显示
"No ROM BASIC" 然后死机.
5. 跳转到 0000:7c00 处执行 MBR 中的程序.
6. MBR 首先将自己复制到 0000:0600 处, 然后继续执行.
7. 在主分区表中搜索标志为活动的分区. 如果发现没有活动
分区或有不止一个活动分区, 则转停止.
8. 将活动分区的第一个扇区读入内存地址 0000:7c00 处.
9. 检查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于则
显示 "Missing Operating System" 然后停止, 或尝试
软盘启动.
10. 跳转到 0000:7c00 处继续执行特定系统的启动程序.
11. 启动系统 ...
作者: Felix021 2007-10-2 01:42 回复此发言
--------------------------------------------------------------------------------
2 回复:系统启动过程主要由以下几步组成(以硬盘启动为例):
王江民的逻辑锁,就是改写了主引导区,中了逻辑锁,不光是无法用硬盘启动,而且,软盘、光盘都无法启动!实际上这是利用了微软win98以前的一个BUG,(nt系统没有这个BUG)最先用这个方法的是DOS时代的一个叫“猴子”的病毒,让这个BUG大出名的是王江民逻辑锁!
主引导区是如此重要,在里面任意改动都有可能造成系统无法启动!
MBR是关键的东西,它就是一段代码,通过检查DPT分区信息引导系统跳转至DBR;它就象是一根火柴点亮整个系统,MBR里的内容是在操作系统前载入的,你在这里可以做很多想做的事情,如果你编程水平足够厉害的话!
作者: Felix021 2007-10-2 01:42 回复此发言
--------------------------------------------------------------------------------
3 回复:系统启动过程主要由以下几步组成(以硬盘启动为例):
http://www.oldlinux.org/oldlinux/viewthread.php?tid=2360
赵博,以前在论坛中谈到bootsect是软盘启动需要的,硬盘启动不需要bootsect,由lilo等程序完成bootsect的功能,近日在看到如下一段论述:
“INT 19会将MBR的512 bytes load到内存0x7c00中,然后JUMP到0x7c00处,开始执行MBR的可执行程序master booter,Master booter最起码需要做这些事情:
1 检测MAGIC(Signature)是否为合法值(Hex 55AA);
2 将自己移动到其它位置,将0x7C00到0x7c00+512K的空间让出来,以备其后将boot sector程序装入这个位置,这样才能和直接从软盘直接装入boot sector程序相一致;具体移动到什么位置,则根据设计而定,理论上,可以移动到任何非冲突位置(即没有被预留为其它程序所用的位置);但一般情况下,都是在0X000800至0X0A0000之间寻找一端空间存放。
3 查看分区表,将被设为活动的分区的第一个Sector装入0X7C00的位置,正常的情况下,此Sector放置的就是boot sector程序;
4 最终,master booter跳转到0X7C00的位置,开始执行boot sector。”
其中,第二点的叙述“这样才能和直接从软盘直接装入boot sector程序相一致”,似乎有些矛盾。
作者: Felix021 2007-10-31 18:43 回复此发言
--------------------------------------------------------------------------------
欢迎扫码关注:
转载请注明出自 ,如是转载文则注明原出处,谢谢:)
RSS订阅地址: https://www.felix021.com/blog/feed.php 。