通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>服 务 器>>Linux服务器>>正文 新版上线![旧版]
注:打开慢时请稍等

LINUX系统初始化过程全解

http://www.iyit.net  日期:2006-6-2 11:46:59  来源:转载   点击:
参加讨论】LINUX系统初始化过程全解:

一、 概况

  系统的引导和初始化是操作系统实现控制的第一步,也是集中体现系统优劣的重要部分。LINUX作为一个免费的准UNIX操作系统,在众多业余爱好者以及小型商业处理市场表现不俗,成为继WINDOWS系列后的另一个主流。了解LINUX系统的初始化,对于进一步掌握UNIX系统是十分有帮助的。
通常,LINUX系统的初始化可以分为两部分:内核部分和init程序部分。内核主要完成系统的硬件检测和初始化,init程序则主要完成系统的各项配置。
  本文将着眼LINUX系统初始化的两个部分,初步解析LINUX的特点。

二、 初始化详解

1.内核部分

  通常情况下,计算机首先用LILO程序引导内核的一部分(这部分没有被压缩),以此来引导内核的其他部分。LILO程序是最常用的、也是比较完善的LINUX系统引导器,PC机通常从硬盘的引导扇区读取这部分程序。关于LILO程序的详细内容可以参照其他资料。
  内核被解压缩并装入内存后,开始初始化硬件和设备驱动程序。下面是内核初始化系统的具体步骤(各个版本之间会有一定的差异,下面是2.2.16-22版本的一个例子):
(1) 检测CPU的主频和控制台的显示类型,并对CPU速度用Bogo MIPS程序进行估算。
(2) 此后内核通过外设显示系统内存信息:如131072k(128M),127820k剩余,使用的具体情况为:1048k内核代码,412k保留,1728k数据等。尔后是各类hash table的信息。
(3) 内核加载磁盘空间限量支持,完成CPU检测(包括检查数学协处理器),以及POSIX适应性检测。
(4) 初始化PCI BIOS,检测系统的PCI设备,并加载TCP/IP网络支持。
(5) 内核开始检测其他各种硬件设备:如PS/2端口设备,串行口设备,硬盘,软盘,SCSI等。
此后,内核将启动init程序,形成系统的第一个进程。下面是dmesg记录的内核初始化信息(部分):

Detected 499845 kHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 996.15 BogoMIPS
Memory: 127820k/131072k available (1048k kernel code, 412k reserved, 1728k data, 64k init, 0k bigmem)
Dentry hash table entries: 262144 (order 9, 2048k)
Buffer cache hash table entries: 131072 (order 7, 512k)
Page cache hash table entries: 32768 (order 5, 128k)
VFS: Diskquotas version dquot_6.4.0 initialized
CPU: Intel Celeron (Mendocino) stepping 05
Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
Checking hlt instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.35a (19990819) Richard Gooch (rgooch@atnf.csiro.au)
PCI: PCI BIOS revision 2.10 entry at 0xfb190
PCI: Using configuration type 1
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.2
……
Starting kswapd v 1.5
Detected PS/2 Mouse Port.
Serial driver version 4.27 with MANY_PORTS MULTIPORT SHARE_IRQ enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
pty: 256 Unix98 ptys configured
apm: BIOS version 1.2 Flags 0x07 (Driver version 1.13)
Real Time Clock Driver v1.09
RAM disk driver initialized: 16 RAM disks of 4096K size
……
hda: QUANTUM FIREBALLlct10 15, ATA DISK drive
hdd: ASUS CD-S400/A, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: QUANTUM FIREBALLlct10 15, 14324MB w/418kB Cache, CHS=1826/255/63
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
md driver 0.90.0 MAX_MD_DEVS=256, MAX_REAL=12
raid5: measuring checksumming speed
raid5: MMX detected, trying high-speed MMX checksum routines
……
using fastest function: p5_mmx (1168.146 MB/sec)
scsi : 0 hosts.
scsi : detected total.
md.c: sizeof(mdp_super_t) = 4096
Partition check:
hda: hda1 hda2 < hda5 hda6 hda7 hda8 hda9 hda10 hda11 >
autodetecting RAID arrays
autorun ...
... autorun DONE.
VFS: Mounted root (ext2 filesystem) readonly.
Freeing unused kernel memory: 64k freed
……

2.init程序部分

  init程序通常在/sbin或/bin下,它负责在系统启动时运行一系列程序和脚本文件。init程序一旦被内核调用,便成为系统的第0号进程,该进程对于LINUX系统是十分重要的,有关它的详细内容请参阅其他资料。init进程做的每一步都由/etc/initab中的配置决定。以下是RadHat的/etc/inittab文件的例子:

# 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:3: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

# Things to run in every runlevel.
ud::once:/sbin/update

# 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 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power 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
# xdm is now a separate service
x:5:respawn:/etc/X11/prefdm -nodaemon

inittab文件的每一行包含四个域,格式为:
code:runlevels:action:command
(1) code域用单个或两个字符序列来作为本行的标识,这个标识在此文件中是唯一的。文件中的某些记录必须使用特定的code才能使系统工作正常。
(2) runlevels域给出的是本行的运行级别。LINUX系统运行在一定的级别下,当inittab文件指定了某一特定的运行级别时,该记录行包含的命令将被执行。RedHat系统通常设置了7个运行级别(0-6),各运行级别的说明包含在inittab文件的开头。
(3) action域指出的是init程序执行command命令的方式。比如:只执行command一次,还是在它退出时重启。
(4) command域给出相应记录行要执行的命令。

  运行级别1是单用户模式,所谓单用户指的是系统运行在唯一用户--超级用户模式下。而大多数情况下,系统运行在多用户模式下。在启动出错、文件系统出错等情况下,系统将进入单用户模式,此时,系统只有很少的配置,这对于恢复系统是很必要的。
  inittab文件首先指出缺省的运行级别(如id:3:initdefault:),我们看到上面的例子中缺省的运行级别为3。此后根据下一条记录,系统应当运行/etc/rc.d/rc.sysinit,这是一个脚本文件,主要包括基本的系统初始化命令,如激活交换分区、检查并挂上文件系统、装载部分模块等。
  接下来是执行特定运行级别对应的rcN程序。rcN都是目录,当前运行级别为N时,执行/etc/rc.d/rcN.d目录下的脚本程序。以下是rc3.d目录下的文件:

 

  从中我们看到,rc3.d目录下都是类似Knnxxxx和Snnxxxx的文件。Nn是00-99之间的一个整数,xxxx是系统提供的某些服务。以"S"开头的文件用以启动(start)服务进程,以"K"开头的文件用以终止(kill)服务进程。数字nn的大小决定程序执行的先后顺序。
  例如系统启动进入运行模式3后,/etc/rc.d/rc3.d目录下所有以"S"开头的文件将被依次执行;系统关闭时,离开运行模式3之前,/etc/rc.d/rc3.d目录下所有以"K"开头的文件将被依次执行。
下一条记录表明每一个运行级别都要运行命令update,此程序每隔30秒把内存缓冲区的内容回写一次,称为"同步",以防止系统崩溃或突然掉电造成的数据丢失和损坏。
  以下的各条记录分别描述了Ctrl-Alt-Del组合键是否有效,与UPS相关的电源失败处理和虚拟控制台的初始化,最后一条记录则是在运行级别5的启动X Window系统的X显示管理程序。

  好了,到此为止,我们就可以登陆LINUX系统了。



编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:Linux 防火墙配置基础篇
下一篇:Linux日志管理详解
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
Linux操作系统12则经典应用技巧 Windows和Linux的“鹊桥会” 给Linux新手
在Linux下访问MSSQLServer数据库 Linux环境下发现并阻止系统攻击 (1) Linux环境下发现并阻止系统攻击 (2)
Linux环境下发现并阻止系统攻击 (3) Linux环境下发现并阻止系统攻击 (4) LINUX下MYSQL完全安装使用指南
Linux的防火墙配置! 浅谈Linux优化及安全配置的个人体会 Linux防火墙配置基础篇
解读Linux文件权限的设置方法 设定Linux Web 服务器(1) 设定Linux Web 服务器(2)
设定Linux Web 服务器(3) 设定Linux Web 服务器(4) 设定Linux Web 服务器(5)
设定Linux Web 服务器(6) 在Linux下设置WWW Server(1) 在Linux下设置WWW Server(2)
在Linux下设置WWW Server(4) Linux服务器日志管理详解(1) Linux服务器日志管理详解(2)
最新更新 热点排行 推荐新闻
Linux操作系统12则经典应用技巧
Windows和Linux的“鹊桥会”
给Linux新手
在Linux下访问MSSQLServer数据库
Linux环境下发现并阻止系统攻击 (1)
Linux操作系统12则经典应用技巧
Windows和Linux的“鹊桥会”
给Linux新手
在Linux下访问MSSQLServer数据库
Linux环境下发现并阻止系统攻击 (1)
Linux环境下发现并阻止系统攻击 (2)
Linux环境下发现并阻止系统攻击 (3)
Linux环境下发现并阻止系统攻击 (4)
LINUX下MYSQL完全安装使用指南
Linux的防火墙配置!
Windows2000下安装Apache PHP4 MySQL 
IIS的使用                          
WIN2000 + PHP + MYSQL + TOMCAT + JS
Linux阅读材料 下篇
一个安全Web服务器的安装(二)
优秀公益广告作品欣赏(8)
java数据类型转换
Windows XP专业版IIS连接数的更改
QQ最新版下载 2006 beta2 体验新感受 
优秀公益广告作品欣赏(7)
Office2007简体中文版浮出水面 美图抢
WEB服务器配置全攻略(三)
优秀公益广告作品欣赏(6)
优秀公益广告作品欣赏(4)
优秀公益广告作品欣赏(1)
解决局域网不能互相访问之全攻略
WIN 2000简单的入侵常识
用Win 2003架设邮件服务器
硬盘分区消失,解决方法!
传统计算机病毒传播能力破坏性在提高
内存为何有“两面性”
AMD水货盒装CPU识别方法
IP地址资源2012年枯竭 部署IPv6很紧迫
古老问题有新解:世上先有鸡蛋后有鸡
Dreamweaver MX 2004从零开始(1)
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息