Linux服务器启动过程详解

2009-05-13 01:23:19来源:未知 阅读 ()

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

(1)从BIOS到内核BIOS自检

计算机在接通电源之后首先由BIOS进行自检,即进行所谓的POST(PowerOnSelf
Test),然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入“引导块”。在PC中,引导Linux是从BIOS中的地址0xFFFF0处开始的。BIOS的第一个步骤是加电自检(POST)。POST的工作是对硬件进行检测。BIOS的第二个步骤是进行本地设备的枚举和初始化。给定BIOS功能的不同用法之后,BIOS由两部分组成:POST代码和运行时服务。当POST完成之后,它被从内存中清理了出来,但是BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务。

要引导一个操作系统,BIOS运行时会按照CMOS的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备,甚至是USB闪存。通常,Linux都是从硬盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。MBR是一个512字节大小的扇区,位于磁盘上的第一个扇区中(0道0柱面1扇区)。当MBR被加载到RAM中之后,BIOS就会将控制权交给MBR。

提取MBR的信息

要查看MBR的内容,请使用下面的命令:

#ddif=/dev/hdaof=mbr.binbs=512count=1#od-xambr.bin

这个dd命令需要以root用户的身份运行,它从/dev/hda(第一个IDE盘)上读取前512个字节的内容,并将其写入mbr.bin文件中。od命令会以十六进制和ASCII码格式打印这个二进制文件的内容。
(2)启动GRUB/LILO

GRUB和LILO都是引导加载程序。最简单地讲,引导加载程序(bootloader)会引导操作系统。当机器引导它的操作系统时,BIOS会读取引导介质上最前面的512字节(即人们所知的主引导记录(masterbootrecord,MBR))。在单一的MBR中只能存储一个操作系统的引导记录,所以当需要多个操作系统时就会出现问题。所以需要更灵活的引导加载程序。

GRUB与LILO的比较

如本文开始处所述,所有引导加载程序都以类似的方式工作,满足共同的目的。不过,LILO和GRUB之间有很多不同之处:

  • LILO没有交互式命令界面,而GRUB拥有。
  • LILO不支持网络引导,而GRUB支持。
  • LILO将关于可以引导的操作系统位置的信息物理上存储在MBR中。如果修改了LILO配置文件,必须将LILO第一阶段引导加载程序重写到MBR。相对于GRUB,这是一个更为危险的选择,因为错误配置的MBR可能会让系统无法引导。使用GRUB,如果配置文件配置错误,则只是默认转到GRUB命令行界面。
安全提示:

关于安全性,任何可以接触到引导磁盘/CD的人,只需要使用没有设置安全性的grub.conf或lilo.conf,就可以绕过本文中提及的所有安全措施。特别是使用GRUB时,因为能够引导到单用户模式,所以是一个严重的安全漏洞。解决此问题的一个简单方法是在机器的BIOS中禁止通过CD和软盘进行引导,并确保为BIOS设置了一个口令,使得其他人不能修改这些设置。
(3)加载内核

当内核映像被加载到内存之后,内核阶段就开始了。内核映像并不是一个可执行的内核,而是一个压缩过的内核映像。通常它是一个zImage(压缩映像,小于512KB)或一个bzImage(较大的压缩映像,大于512KB),它是提前使用zlib进行压缩过的。在这个内核映像前面是一个例程,它实现少量硬件设置,并对内核映像中包含的内核进行解压,然后将其放入高端内存中,如果有初始RAM磁盘映像,就会将它移动到内存中,并标明以后使用。然后该例程会调用内核,并开始启动内核引导的过程。

标签:

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

上一篇:Linux下配置功能完善的Web服务器

下一篇:在Linux下建立VPN服务器来做加密代理