免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 867 | 回复: 0
打印 上一主题 下一主题

Linux启动过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-15 20:40 |只看该作者 |倒序浏览

LINUX的启动过程
一般意义上,我们打开电脑,首先电脑要做的事情是BIOS自检。
对BIOS的感性认识应当是对BIOS的设置了,里面的参数很多,而且版本不同,界面差异很大,具体的介绍应该有相关的资料,但总体上大同小异,你的英文不是很差应该可以摸索着设置。
对BIOS的具体应用比如我们电脑出现故障,要查问题,往往要用到BIOS的自检!当我们怀疑内存出了问题,拔掉内存来听告警音,就是利用的BIOS自检原理!
下面的一步就是依据BIOS的设置来启动了!大家在BIOS中设置过启动顺序吧!比如是从硬盘启动还是从光盘,或是软盘启动!电脑会依据我们的设置,从其中一处读入"引导程序"。
比如说,一般我们设置引导顺序的时候,往往第一位的是C盘。即从C盘启动。
此时涉及一个MBR的概念  MBR:是Master Boot Record的简称。
下面要用到硬盘的一些术语,比如
"面"  --Side,
"柱面"--Cylinder,
"磁道"--Track,
"扇区"--Sector。
我就不在一一介绍,很简单的!
但其中"扇区"我要说一句,一个扇区有512个字节,磁盘的读写是以扇区为单位的。
从数据的角度硬盘大致分为如下几个部分:MBR,DBR,FAT,DIR,DATA。
其中DATA存放的是真正我们使用的数据!
我们真正需要关心的是MBR:"主引导记录区"。
MBR位于整个磁盘的第0磁道0柱面的1扇区。
注意:MBR只是位于第0磁道0柱面的1扇区,而第0磁道0柱面的1扇区并不全是MBR,还有别的东西,具体是什么下面说!
整个磁盘的第0磁道0柱面的1扇区叫磁盘的主引导扇区.
主引导扇区512个字节,包括3部分:
1,MBR共446个字节.
2,DPT(Disk partition table)磁盘分区表.共64个字节.
3,"55,AA"分区结束标志,2个字节.
好,现在说MBR了!
MBR包括两个部分:硬盘的一系列参数和一段引导程序.
引导程序的作用是检查磁盘分区表是否正确和引导操作系统并将控制权交给启动程序.
注意
1, MBR是不依赖于任何操作系统的,这点是十分重要的.而且硬盘引导程序是可以改变的,正因如此我们才可以实现多系统的共存.
2,一定分清概念,磁盘的引导扇区,主引导记录区(MBR)和硬盘引导程序3个概念千万别混淆.
引导扇区包含主引导记录区(MBR),而主引导记录区(MBR)包含引导程序.
换句话说,MBR里面存放的是一小段程序以及分区表的数据。在使用WINDOWS和DOS时,这里面放的代码就把分区表里标记为ACTIVE的分区表的第一个扇区读入内存,并且跳转到那里开始执行。一般这个扇区存放着操作系统的引导代码。
LILO的概念
LILO 是Linux Loader的简称。LILO用以引导LINUX。
有两种情况:
A:把LILO安装到MBR上,这时BIOS自检后,计算机在开始读入MBR时直接遭遇LILO,则执行LILO引导LINUX。
B: 把LILO安装到LINUX分区,并把这个LINUX分区标记为ACTIVE. 这时BIOS自检后, 计算机在开始读入MBR时,这个MBR是针对WINDOWS或DOS的,然后由它来调入LILO.
特别再次强调,在针对MBR时,操作系统还没有起来!!!
LILO引导LINUX,这样KERNEL就可以起来了!
KERNEL起来后,首先要执行的是/sbin/init .从而产生了第一个进程-INIT .
INIT的具体工作与一个文件直接相关,就是 /etc/inittab .
下面是一段实际/etc/inittab .
#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, ;
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
                                                                                                                                               
# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
                                                                                                                                               
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
                                                                                                                                               
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
                                                                                                                                               
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
                                                                                                                                               
# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "

ower Failure; System Shutting Down"
                                                                                                                                               
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "

ower Restored; Shutdown Cancelled"
                                                                                                                                               
                                                                                                                                               
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
                                                                                                                                               
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
_______________________________________________________________________________
下面一一介绍:
# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
是在具体介绍LINUX的几个运行级别.
很简单的,根据英文可知!
______________________________________________________________________________________________________________________________________________________________
id:5:initdefault:
指定了默认运行级别.
______________________________________________________________________________________________________________________________________________________________
si::sysinit:/etc/rc.d/rc.sysinit
主要的任务是做各个运行级别中相同的初始化工作.
______________________________________________________________________________________________________________________________________________________________
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
第一个字段是一个任意指定的标签.
第二个字段表示这一行适用于运行的那个级别.
第三个字段Wait的意思是, init运行第四个字段内的命令一次,而且init应该等待该命令的结束.
第四个字段是要执行的命令.
______________________________________________________________________________________________________________________________________________________________
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
ctrlaltdel
允许init在用户在键盘上按下CTRL+ALT+DELETE组合键时,执行/sbin/shutdown -t3 -r now即重启系统.
______________________________________________________________________________________________________________________________________________________________# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
respawn
在进入相应的运行级别时执行!并且,假设该进程结束,init会再次启动一个进程执行相同的命令.
Init在等待/etc/rc.d/rd执行完毕之后(因为有WAIT)在终端上运行/sbin/mingetty,等待用户的登陆.
到现在,LINUX的启动结束!!!
最后介绍一下/etc下的几个相关文件和文件夹.
/etc /inittab文件已经介绍了!
/etc /init.d文件夹内全是一些类似命令的东西,进去看一下就知道.
/etc/rc.d文件夹内包括
文件夹 /etc/rc.d /init.d ,与/etc /init.d一样.这些脚本被用ln命令连接到 /etc/rc.d/rcn.d目录,n是运行级别0-6 .
文件/etc/rc.d/rc
文件/etc/rc.d/rc.local  (后面会提)
文件/etc/rc.d/sysinit  (前面提过)
文件/etc/rc.d/rc0.d,
/etc/rc.d/rc1.d,
/etc/rc.d/rc2.d,
/etc/rc.d/rc3.d,
/etc/rc.d/rc4.d,
/etc/rc.d/rc5.d
/etc/rc.d/rc6.d
每一个文件是相应运行级别的脚本,以K__开头的,都以STOP为参数来调用,
以S__开头的,都以START为参数来调用.
其均是由 /etc/rc.d /init.d用ln命令连接过来的.
其中/etc/rc.d/rc.local是初始化脚本中的最后一个,所以用户可以根据自己的情况在初始化之后,登陆之前添加一些命令.

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/53762/showart_423365.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP