Magic Number在Linux中的启动加载中的作用是什么?

时间:2009-07-14 12:21:46

标签: linux

我正在浏览linux启动过程的详细信息。据了解,主引导加载程序驻留在512字节图像(程序代码+分区表)中。 510字节包括可执行代码,错误消息和分区表信息。最后2个字节包含幻数0xAA55。有人提到“幻数作为MBR的验证检查”。现在什么是验证检查?我的猜测是像CRC这样的检查,以确保MBR没有损坏。

我在网上搜索,没有解释魔法数字及其工作原理。但有趣的是,即使是微软操作系统,它们的启动加载器中也有魔术数字。在这方面可以有人启发我们吗?

3 个答案:

答案 0 :(得分:16)

您好,我希望这会对您有所帮助:

http://en.wikibooks.org/wiki/X86_Assembly/Bootloaders

http://en.wikipedia.org/wiki/Extended_boot_record

“0xAA55签名是你的第一个扇区的最后两个字节 bootdisk(bootsector /主引导记录/ MBR)。如果是0xAA55,那么 BIOS将尝试启动系统。 如果找不到(乱码或0x0000),您将收到错误消息 从您的BIOS中找不到可引导磁盘(或系统 尝试启动下一个磁盘)。 该签名以二进制形式表示为0b1010101001010101。该 交替位模式被认为是对某些人的保护 失败(驱动器或控制器)。

当然,这是一个i386主义(我相信也出现在amd64上)。地段 其他架构可能采取不同的方法。“

http://www.mail-archive.com/misc@openbsd.org/msg18029.html

答案 1 :(得分:10)

不是校验和,而是更多的签名。它确实提供了一些某些 MBR存在的简单证据。

0xAA55也是交替位模式:1010101001010101

它通常用于帮助确定您是使用小端还是大端系统,因为它将读作AA55或55AA。我怀疑这是MBR结束的部分原因。

另见Wikipedia article

答案 2 :(得分:0)

快速搜索了这个:http://en.wikipedia.org/wiki/Master_boot_record

似乎只是标记mbr结尾的神奇数字