本节说明当linux系统引导与关机时发生了什么,应该任何正确完成. 如果没有遵循正确的过程, 文件可能损坏或丢失.
开启计算机并导致其操作系统被加载的过程 叫引导. the name comes from an image of the computer pulling itself up from its bootstraps, but the act itself slightly more realistic. 【相关文章:基于Linux的集群系统(八)】
引导与关机概述 【扩展阅读:基于Linux的集群系统(七)】
启动过程中,计算机首先加载了一小段叫 bootstrap loader的程序,它依次加载与启动操作系统, bootstrap loader通常存储在硬盘或软盘的固定的位置. 这2步过程的理由是操作系统大而复杂,而计算机加载的第一段代码很小(几百字节),以免使固件不必要地复杂化. 【扩展信息:基于Linux的集群系统(十)】
不同的计算机的bootstrap不同. 对于pc, 计算机(它的bios)读软盘或硬盘的第一个扇区(叫 引导扇). bootstrap loader包含在这个扇区中. 它加载位于磁盘(与其他)的其他地方的操作系统.
linux加载后, 它创始化硬件与设备驱动, 然后运行 init . init 启动其他进程以允许用户登录与做其他事情. 这部分的细节在下面讨论.
为了关闭一个linux系统, 首先所有进程被告知结束(这使他们关闭所有文件, 完成必要的其他事情, 使之整齐地结束), 然后unmount文件系统与对换区, 最后打印可以关掉电源的信息到控制台. 如果没有遵循正确的过程, 可怕的事情可能发生. 最重要的, 文件系统缓冲cache可能没有回写, 这意味着其中的所有数据将丢失, 磁盘上的文件系统不完整, 并可能不可用.
近观引导过程
可以从软盘或硬盘引导linux. 安装与开始指南的安装一节 ([wel]) 告诉你如何安装linux, 并按你希望的方式引导.
当pc引导后, bios做一些测试保证一切正常, 然后开始真正的引导. 它选择一个磁盘(通常是第一个软驱, 如果有软盘的话, 否则就是第一个硬盘, 如果安装了的话; 顺序是可设置的). 然后读第一个扇区, 这叫引导扇; 对于硬盘, 也叫主引导记录, 因为硬盘可以包含多个分区, 每个分区都有自己的引导扇.
引导扇包含一个小程序(小到可以存入一个扇区), 它的责任是从磁盘读入真正的操作系统并启动之. 从软盘启动linux时, 引导扇包含的代码只读前数百个数据块(当然, 依赖于核心的大小)到预定的内存位置. linux引导软盘上, 没有文件系统, 核心存在连续的扇区中, 因为这样简化了引导过程. 当然, 使用lilo(linux loader)可以从文件系统引导.
从硬盘引导, 主引导记录的代码检查分区表(也在主引导记录扇区中), 确认活动分区(标记为可引导的分区), 从该分区读引导扇区, 然后启动该引导扇区的代码. 该分区的引导扇区的代码做与软盘所做的相同: 从该分区读入核心并启动. 但细节不同, 因为一般只给核心映象做一个单独的分区是没什么用的, 所以分区引导扇中的代码不能只顺序地读磁盘, 它必须找到文件系统把它们放在哪些扇区中. 有几个方法解决这个问题, 但最通常的方法是使用lilo. (关于如何做的细节与这里的讨论无关; 更多的信息请看lilo文档, 它很全面)
... 下一页