当您第一次打开计算机时,它会进行自检以确保一切正常运行。这被称为“开机自检”。然后,一个名为引导加载程序的程序,位于 ROM BIOS 中,会查找引导扇区。引导扇区是磁盘的第一个扇区,其中包含一个可以加载操作系统的程序。引导扇区用幻数 0xAA55 = 43603 标记,位于字节 0x1FE = 510 处。这是扇区的最后两个字节。硬件就是通过这种方式判断扇区是否为引导扇区。
引导加载程序有一个查找引导扇区的位置列表。我的旧机器会先在主软盘驱动器中查找,然后在主硬盘驱动器中查找。更现代的机器还可以在 CD-ROM 上查找引导扇区。如果找到引导扇区,它会将其加载到内存中,并将控制权传递给加载操作系统的程序。在典型的 Linux 系统上,这个程序将是 LILO 的第一阶段引导加载程序。不过,设置系统启动的方式有很多种。有关详细信息,请参阅LILO 用户指南。有关 URL,请参阅 LILO 部分。
显然,关于 PC 硬件的功能还有很多要说的。但这不是说这些的地方。请参阅许多关于 PC 硬件的优秀书籍之一。
机器将其自身的一些信息存储在 CMOS 中。这包括系统中安装了哪些磁盘和 RAM。机器的 BIOS 包含一个程序,允许您修改这些设置。在机器开机时查看屏幕上的消息,了解如何访问它。在我的机器上,在它开始加载操作系统之前,您需要按 Delete 键。
了解 PC 硬件的一个好方法是用二手零件组装一台机器。至少要使用 386 或更高的型号,这样您就可以轻松地在其上运行 Linux。这不会花费太多。四处问问,也许有人会给您一些您需要的零件。
查看、下载、编译并为 Unios 制作启动盘。(他们以前在 http://www.unios.org 有一个主页,但它消失了)这只是一个可启动的“Hello World!”程序,仅由 100 多行汇编代码组成。将其转换为 GNU 汇编器 as
可以理解的格式会很好。
用十六进制编辑器打开 unios 的启动盘镜像。此镜像为 512 字节长,正好一个扇区。找到幻数 0xAA55。对可启动软盘或您自己计算机上的引导扇区执行相同的操作。您可以使用 dd
命令将其复制到文件:dd if=/dev/fd0 of=boot.sector
。非常小心地确保 if
(输入文件)和 of
(输出文件)的方向正确!
查看 LILO 引导加载程序的源代码。