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

roc*_*oll 12 linux

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

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

小智 17

嗨,我希望这会对你有所帮助:

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

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

"0xAA55签名是bootdisk的第一个扇区的最后两个字节(bootsector/Master Boot Record/MBR).如果是0xAA55,那么BIOS将尝试启动系统.如果没有找到(乱码或0x0000) ,你会从你的BIOS收到一条错误消息,它没有找到可引导的磁盘(或者系统尝试启动下一个磁盘).这个签名以二进制形式表示为0b1010101001010101.交替位模式被认为是防止某些故障(驱动器或控制器).

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

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


Chr*_*uin 11

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

0xAA55也是交替位模式:1010101001010101

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

另见本维基百科文章