The Linux Bootdisk HOWTO 中译版(2)

2008-02-23 07:22:42来源:互联网 阅读 ()

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



测试一个新的核心 (kernel)。
从磁碟错误中复原 (这类错误从遗失开机磁区到磁碟读写头毁损都有可能) 。
修复一个瘫痪 (disabled) 的系统
安全地升级临界共用 (critical) 的系统档案 (诸如 libc.so) 。
有好几种获得 boot disks 的方法:


使用发行套件 (distribution) 像是 Slackware 所提供的。它至少能让你开机。
使用救援套件 (package) 建造用来做为救援磁片的磁片。
学习每一种 disk 运作系统时所需的东西,然後自己制作。
有些人选择最後一种方法,如此他们能靠自己动手做。这样子,如果某处发生问题,就能找出办法去解决问题。此外也可以学到很多有关 Linux 如何运作的知识。

本文假设读者已熟悉基本的 Linux 系统管理观念。举例来说,你应该知道有关目录、 filesystems 与软碟片的议题。你也应该知道如何使用 mount 与 df 。你还应该知道 /etc/passwd 与 fstab 这两个档案的用途以及它们看起来像什麽。最後,你应该知道 HOWTO 文件内大部分的指令,都要以 root 的身份来执行。

刚开始制作你自己的 bootdisk 是很复杂的。如果你未曾读过 Linux FAQ 与相关文件,诸如 Linux Installation HOWTO 与 Linux Installation Guide ,那麽你不应该尝试建造开机磁片。如果你只需要紧急时用的 bootdisk ,下载一个别人事先完成的 bootdisk 拿来用会 更 为容易。请参考下面的 Pre-made bootdisks 以得知在哪里可以找到这些东西。



--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

3. Bootdisks与开机流程 -- Bootdisks and the boot process

bootdisk 基本上是放在软碟片内的一个小型而自足的 Linux 系统。它必须执行许多和完整又 full-size 的 Linux 系统相同的功能。在建造 bootdisk 之前,你应该了解基本的 Linux 开机流程。我们在此只做基本的介绍,但已足够让你了解本文之後的内容。很多细节与替代选项已被省略。


3.1 开机流程 -- The boot process

所有 PC 系统开始开机流程都是藉由执行 ROM (明确地说,就是 BIOS) 中的程式,从开机磁碟机的第 0 磁区、第 0 磁柱载入可供开机的磁区。开机磁碟机通常是第一台软碟机 (如 DOS 的 A槽 与 Linux 的 /dev/fd0)。接著 BIOS 会尝试执行这个磁区。在大部分可开机的 disks 上,第 0 磁区、第 0 磁柱包含以下两者之一:


开机载入程式 (boot loader ,如 LILO)的程式码,它会找出 kernel 所在位置,接著载入并执行它以启动开机程序。
一个作业系统 kernel 的开头 (start) ,诸如 Linux 。
如果一个 Linux kernel 已利用 raw-copied 的方式置入一张磁片内,那麽这张磁片的第一个磁区就是 Linux kernel 本身的第一个磁区。这个磁区将从开机设备载入 kernel 的剩馀部分以继续开机流程。

一旦 kernel 载入完毕,一些基本设备也完成初始化 (initialization) 。然後系统将尝试从某个设备载入以及挂上 (mount) root filesystem 。所谓的 root filesystem 只是一个被挂上当作 ``/'' 目录的 filesystem 。 kernel 必须被告知可从哪里找到此 root filesystem ;如果 kernel 在那里找不到一个可载入的影像档 (image) ,系统就会停止运作 (halt) 。

在某些开机情况下 -- 常常是从软碟片开机 -- root filesystem 会被载入到 ramdisk 中,也就是被系统所存取的 RAM ,如同系统存取磁碟一般。为何系统会载入到 ramdisk 的理由有二。第一, RAM 是几个比软碟片快的有序磁性体,所以系统在其上运作较快; 第二, kernel 可以从软碟片载入一个 压缩的filesystem 并且在解压缩後放到 ramdisk 上,如此可让更多的档案储存在软碟片上。

一旦 root filesystem 被载入并挂上,你会看到一行讯息像:

VFS: Mounted root (ext2 filesystem) readonly.


此时系统会在 root filesystem 上找到 init 程式 ( 在 /bin or /sbin) 并执行它。 init 读取它的组态设定档 (configuration file) /etc/inittab ,找出档中标明 sysinit 的一行,并执行被指名的script。这个 sysinit script 通常类似 /etc/rc 或 /etc/init.d/boot 这两个档。这个 script 是一组建立基本系统服务的 shell 指令,诸如:


对所有磁碟执行 fsck,
载入必备的核心模组 (modules),
启动 swapping,
进行网路初始化,
将指定在 fstab 内的磁碟挂上。
这个 script 常会启动其它各种不同的 scripts 执行模组的 (modular) 初始化。举例来说,在一般的 SysVinit 架构下, /etc/rc.d/ 这个目录包含一个复杂的子目录架构,其中的档案指出如何启动与关闭大部分的系统服务。然而,在一张 bootdisk 上,这样的 sysinit script 常常是非常简单的。

当 sysinit script 结束後,控制权回到 init 上,接著进入 预设的runlevel ,此预设的 runlevel 以 initdefault 这个关键字被指定在 inittab 内。此 runlevel line 通常指定一个像 getty 的程式,这个程式负责处理 console 与 ttys 之间的通讯。事实上,就是 getty 程式在萤幕上印出熟悉的 ``login:'' 提示。 getty 程式并转而呼叫 login 程式以处理 login 是否有效,并於之後建立 user sessions 。


3.2 磁碟类型 -- Disk types

如果你已了解基本的开机流程,那麽我们现在可以定义所涉及到之各种不同类型的磁碟。我们将磁碟分类成四种。本文与在此讨论所称之 ``磁碟 (disk)'' 除非有特别声明,否则都是指软碟片,虽然绝大部分的讨论也同样可应用在硬碟上。



boot
一张包含可被启动之 kernel 的磁片。这张磁片被用来启动 kernel ,接著这个 kernel 会载入在另一张磁片上的 root file system 。在 bootdisk 上的 kernel 通常必须被告知到哪去找它的 root filesystem 。

bootdisk 常会从另一张磁片载入一个 root filesystem ,但是相反地, bootdisk 也有可能被设定成载入硬碟的 root filesystem 。一般在测试新 kernel 时会这样做 (事实上, ``make zdisk'' 会自动地从 kernel 的原始码制造出这样的一张 bootdisk 。


root

标签:

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

上一篇:Linux 指令篇:日期时间排程--uptime

下一篇:Linux 指令篇:档案目录管理--chmod