Linux服务器启动过程详解

2016-01-29 17:29 3 1 收藏

Linux服务器启动过程详解,Linux服务器启动过程详解

【 tulaoshi.com - Linux 】

BIOS自检

    计算机在接通电源之后首先由BIOS进行自检,即进行所谓的POST(Power On Self 
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 的内容,请使用下面的命令:

    # dd if=/dev/hda of=mbr.bin bs=512 count=1 # od -xa mbr.bin

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

GRUB和LILO都是引导加载程序。最简单地 讲,引导加载程序(boot loader) 会引导操作系统。当机器引导它的操作系统时,BIOS 会读取引导介质上最前面的 512 字节(即人们所知的 主引导记录(master boot record,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 设置了一个口令,使得其他人不能修改这些设置。
  

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

    GRUB 中的手工引导

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/linux/)

    在 GRUB 命令行中,我们可以使用 initrd 映像引导一个特定的内核,方法如下:

    grub kernel /bzImage-2.6.14.2
   [Linux-bzImage, setup=0x1400, size=0x29672e]

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/linux/)

    grub initrd /initrd-2.6.14.2.img
   [Linux-initrd @ 0x5f13000, 0xcc199 bytes]

来源:https://www.tulaoshi.com/n/20160129/1501592.html

延伸阅读
  时下拥有两台以上台式机的家庭已经为数不少,退役下来的老机器食之无味,弃之可惜。其实你完全可以利用它作为一台局域网服务器,在晚饭后呼朋喝友,喊上邻居,拉几条网线,搬上笔记本电脑一起对战CS和帝国时代,或者利用代理服务器共享上网。跟我来一起动手,搭建一个简单的Linux局域网服务器吧。 A.准备 Linux系统对服务器的要...
目前很多朋友都用上了大容量的DMA或UDMA-33标准的硬盘。在微软的Windows98下为了使得DMA或UDMA-33标准的硬盘提高数据传输速率,可以在计算机的CMOS或操作系统中打开IDE硬盘的DMA(直接存储器存取)这项功能。但是在Linux平台中,Linux是不会自动的打开DMA模式,所以在Linux中使用这些IDE接口的UDMA-33标准的硬盘感觉数据传输远远没有在Windo...
MySQL是一个多用户、多线程SQL数据库服务器。可以用于各种流行操作系统平台的关系数据库,它具有客户机/服务器体系结构的分布式数据库管理系统。MySQL完全适用于网络,用其建造的数据库可以在网上的任意地方访问。MySQL可以使用SQL语言。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现...
标签: 服务器
LINUX下搭建FTP服务器   1、FTP服务器的简介 关于ftp的介绍,大家也一定不陌生了。我就直接把百度百科上的介绍拿过来,和大家一起温习一下概念。 FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为文传协议。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操...
标签: PHP
一、以非特权用户运行MySQL服务器     在讨论如何启动MySQL服务器之前,让我们考虑一下应该以什么用户身份运行MySQL服务器。服务器可以手动或自动启动。如果你手动启动它,服务器以你登录Unix(Linux)的用户身份启动,即如果你用paul登录Unix并启动服务器,它用paul运行;如果你用su命令切换到root,然后...