系统运行环境及开发环境的搭建(系统初始化和服务)

目标⑴ 描述BIOS的功能,并谈到引导的过程,今天小编就来聊一聊关于系统运行环境及开发环境的搭建?接下来我们就一起去研究一下吧!

系统运行环境及开发环境的搭建(系统初始化和服务)

系统运行环境及开发环境的搭建

目标

  • 学习完本单元你将能够做到:

⑴ 描述BIOS的功能,并谈到引导的过程

⑵ 描述引导加载的功能

⑶ 在引导期间由内核执行的功能列表

⑷ init的功能状态

⑸ 使用inittab去配置init

⑹ 列出系统V的循行级别与每个级别的功能状态

⑺ 用适当的工具手动配置init脚本

⑻ 关闭系统和重启系统到任何一个级别

议程

  • BIOS引导时的职责
  • 内核引导时的职责
  • init引导时的职责
  • 系统V运行级别
  • 引导脚本
  • 关闭和重启系统

3.1 Linux的引导顺序

1BIOS初始化

2.引导加载(Boot loader)

3.内核初始化

4.开始init进程并进入想要的运行级别

Linux系统引导顺序中较大的步骤是:Bios初始化,引导加载Boot Loader,内核初始化,init启动,在以下章节中详细讲解。

3.24 Bios 初始化

1.检测外围设备

由Bios开始引导过程,bios(basic Input/ output system)是在硬件与软件之间的界面,它处在一个非常基础的水平。Bios提供基础的设置使用操作系统的指令。成功的引导系统依赖Bios,事实上BIOS是最低级别的控制外围设备的界面。

Bios将首先运行一个电源自检(post),然后他将寻找外围设备且从一个设备引导。硬件配置信息是永久地储存在一个小的区域(cmos通常为64byte 是“cmos complementary metal oxide semiconductor”的缩写)中,cmos”是带电的,它由主机上的小电池供电,这个电池允许cmos永久保存硬件的配置信息甚至当计算机被关闭和从电源断开以后。

2.选择引导设备

在系统自检结束后,可从检测到的引导设备的列表中选择引导设备。现在的Bios将允许你去设置引导设备的优先权。引导设备包括:软驱、硬盘、光驱、网卡、Zip驱动器或其他可移动媒体。

3.读取并执行引导设备的第一扇区

Bios读取并执行选择的引导媒体上的第一个物理扇区上的系统。通常这被包含在硬盘的第512字节。

3.3 Boot loader (引导加载)

1.加载引导程序并运行内核

加载内核:Bios从引导媒体的前512 字节加载初始程序。这是Red Hat Linux系统正常的第一阶段引导加载,即加载操作系统内核。

2.分别进入两个独立的阶段:

第一阶段:查找引导扇区。

第一阶段包含奇偶检验码并需要去引导一个操作系统。因此,它从在引导媒体上别处存储的一个文件加载一个有能力的第二阶段引导程序。

第二阶段:读取在/boot 下的一个文件。

第二阶段通常提供一个界面,通过它系统操作员能选择一个内核或一个可替换的操作系统去引导。它也能提供一种机制去通过不同的参数去加载内核或init.

3.选择两个标准引导程序:

⑴ Grub和Lilo:

Red Hat Linux上默认的引导程序是GRUB,即Ground Unified Rood loader的缩写。GRUB支持一个高级特性的引导程序,包括md5密码保护、一个引导菜单编辑模式并且在引导时提供一个shell,很像命令行界面。Grub能直接地读取标准的Linux文件系统,因此它能加载内核,修改GRUB的配置文件,这样的好处是不需要去运行一个安装程序。

如果你使用Red Hat Linux系统先前的7.2版本,那么你就有最大可能使用lilo,建立在它的实际磁盘扇区位置之上的lilo引导程序加载内核,与它的文件名相反。如果Linux内核因为一些理由(例如你建造一个新内核)被移动,运行lilo命令可去重建内核位置的映像。

⑵ 图形引导和Lilo

Red Hat Linux以前使用一个Lilo的版本,它的特性是图形引导迅速。键入ctrl-x Lilo将迅速切换到传统的文本模式。现在Red Hat Linux默认的引导程序是GRUB。

3.4 内核初始化

1.检测硬件设备

检查内核初始化信息:虽然它们输出的信息非常重要,但内核初始化非常的快以致于你如果在引导期间不小心监视,,很可能错过而看不到它们。有一个好办法可“冻结时间”来检查这些输出的信息,那就是去查看/var/ log/ dmesg文件,此文件包含这些内核信息的快照(刚走去的)。对这些输出信息的评审将揭示基础的Linux内核初始化步骤。

2.设备驱动初始化

调用被编译进内核的设备驱动,并尝试去查找对应的设备。如果查找到设备,将驱动初始化并将记录信息输出到内核储存。

驱动在内核中可以被编译为模块,被包含在一个initrd 镜像里,它由内核临时加载在一个RAM磁盘上去为初始化进程提供可用到的模块。

3.只读加载root文件系统

所有的必须的驱动被加载后,内核将只读加载root文件系统。

4.加载inital进程(通常为init)

第一个加载的进程是init,它负责从内核到进程的控制权。

3.5 Init初始化

1.init进程读取自己的配置文件:/etc/ inittab

文件/ etc/inittab包含init如何设置系统每个运行级别的信息,以及默认的运行级别。

如果/etc/inittab文件发生故障或严重损坏,你将不能引导到标准运行级别(0—6)中的任何一个且将需要使用单一用户或紧急模式代替。此程序将在本书以后单元深入讨论。

初始化运行级别。

系统初始化脚本。

运行特殊级别脚本目录下的脚本。

捕获确定的键盘信号。

规定ups电源故障/ 恢复脚本。

在虚拟控制台上开启gettys进程

初始化X到运行级别5

当改变到运行级别为5 时,文件/etc/sysconfig/desktop确定显示管理程序(即图形登录程序)并运行。图形登录程序可能是GNOME和KDE。当init运行脚本/etc/ xll/ prefdm时,将读取/etc/sysconfig/desktop文件。

2.init是所有进程的父进程

可以用 pstree命令查看。

$ pstree

init- - apmd

1—atd

|----auto mount

|----crond-----crond

|----deskuide—cuone

|----gdm-- --x

因为init是第一个进程,它允许有一个pid号为1。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页