当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > LINUX引导过程

Unix/Linux
linux查看内存的大小
在linux下写的代码,用的是utf-8,结果拿到XP下运行的时候,所有的中文都成乱码
linux su和sudo命令的区别
linux cron 下的定时执行工具使用技巧
linux 查找进程及终止进程操作的相关命令
redhat linux 安装 gcc编译器
Linux Mplayer播放各种格式的电影
一起回顾一下linux常用命令
Linux 网站项目发布要做哪些配置
linux SSH配合SecureCRT的密匙完美使用方法
GD 编译出错解决方法
Facebook Open Platform编译FAQ
Linux 系统硬盘 优化
linux 挂载详解
linux crontab定时命令
Linux 系统中确保访问三级域名畅通的方法
Linux 特权帐号VS普通帐号
确保Linux系统安全的前提条件 漏洞防护
Linux 监视系统资源使用率
Red Hat Linux上使用BIND建立DNS服务器

Unix/Linux 中的 LINUX引导过程


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 44 ::
收藏到网摘: n/a

  LINUX引导过程
首先说明一下,这里讲的是LINUX引导经过的步骤,而不涉及KERNEL引导过程的内部
细节。希望本文能对初学LINUX的朋友有所帮助。

一、从BIOS到KERNEL
计算机在接通电源之后首先由BIOS进行自检,即进行所谓的POST(Power On Self 
Test),然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入“引导块”。
如通常BIOS中设的引导顺序为C在最前面,那么就把C盘(第一个IDE硬盘)的第0柱面
,第0头的第1个扇区读入内存,然后跳到那里开始执行。这个扇区有一个大家熟悉的
名字——MBR(Main Boot Record)。换句话说,MBR里面存放的是一小段程序以及分
区表的数据。在使用WIN9X和DOS时,这里面放的代码就把分区表里标记为Active的分
区的第一个扇区(一般存放着操作系统的引导代码)读入内存并跳转到那里开始执行。

而在用LILO引导LINUX时,有两种选择:
  (1) 把LILO安装在MBR。这时就由BIOS直接把LILO代码调入内存,然后跳转执行
LILO。即
        BIOS——>LILO(在MBR中)——>KERNEL
  (2) 把LILO安装在LINUX分区,并把LINUX分区设为Active。这时,BIOS调入的是
WIN9X/DOS下的MBR代码,然后由这段代码来调入LILO的代码(位于活动分区的第一个
扇区)。即
        BIOS——>MBR——>LILO(在活动分区的第一个扇区)——>KERNEL
因为在读入及执行MBR时,操作系统还没有起来,所以只能用BIOS提供的INT13来进
行磁盘操作,而INT13只能读写硬盘1024柱面之前的数据,由此可知任何操作系统的引
导代码必须在1024柱面之前。对于LINUX来说,不管你使用方式(1)还是方式(2)启动,
都要保证KERNEL放在1024柱面之前。只有在KERNEL起来以后,才有读/写1024柱面以后
数据的能力。因为LINUX不使用INT13来进行硬盘操作。从上面我们也可以看到,不存在
什么“WIN95可以,而LINUX不可以”的问题,作为操作系统要能被正确引导,在现有
的BIOS下,它们的引导部分都必须在1024柱面之前。如果操作系统本身还是基于INT13
来进行磁盘操作的话,那么它也只能读/写1024柱面之前的数据。


二、从KERNEL到login prompt
在KERNEL起来之后,将生成第一个进程——init,实际上是执行了/sbin/init。ini
t的工作是根据/etc/inittab来执行相应的脚本进行系统初始化,如设置键盘、字体,
装载模块,设置网络,等等。

/etc/inittab文件的每一行包括四个域:
id:runlevels:action:process
runlevel是运行模式,通常为0-6。模式0是halt,模式6是reboot,模式1是单用户,
模式2/3是多用户,模式5是运行xdm以图形界面方式登录。id为标识符,通常为两个
字母。process为需要执行的程序或脚本。action包括有:
  (1) defaultinit —— 指定缺省的运行模式(runlevel)
  (2) sysinit —— 指定运行的第一个程序/脚本,此时runlevels域不起作用。
  (3) boot —— 在sysinit之后执行,runlevels域不起作用
  (4) bootwait —— 同boot,但init会等待该命令结束
  (5) once —— 在进入有runlevels指定的运行模式时运行
  (6) wait —— 同上,但init会等待该命令结束
  (7) respawn —— 在进入相应runlevel时执行,并且若该进程结束,init会再起
一个进程执行同样的命令
  (8) ctrlaltdel —— 指定在用户按下Ctrl-Alt-Del时执行的命令

对于Redhat来说,执行的顺序为:
/etc/rc.d/rc.sysinit            # 由init执行的第一个脚本
/etc/rc.d/rc $RUNLEVEL          # $RUNLEVEL为缺省的运行模式
/sbin/mingetty                  # 等待用户登录

三、/etc/rc.d/rc.sysinit及/etc/rc.d/rc
在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括:
  调入keymap以及系统字体
  启动swapping
  设置主机名
  设置NIS域名
  检查(fsck)并mount文件系统
  打开quota
  装载声卡模块
  设置系统时钟
等等。

/etc/rc.d/rc则根据其参数指定的运行模式来执行相应目录下的脚本。凡是以Kxx开
头的,都以stop为