Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1858379
  • 博文数量: 343
  • 博客积分: 10342
  • 博客等级: 上将
  • 技术积分: 2892
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 12:34
个人简介

你必须非常努力,才能看起来毫不费力!

文章存档

2012年(3)

2011年(5)

2010年(2)

2009年(40)

2008年(293)

分类: LINUX

2008-09-20 13:03:46

  Linux太伟大了,什么东西都可以由你来做主,Linux加载完内核后,所有的其他系统服务,进程,都是靠脚本来加载的。所以Linux是这么的透明,你可以清除的指导你的系统做了什么。
     下面我就对Linux的启动脚本做了注释,该脚本是属于LFS的,因为该系统比较小,所以可以很清楚的看清楚框架。其他的发行版本的脚本,肯定也会有所不同,但是大框架还是差不多的。
     首先对整体流程,叙述一遍。要想了解整体流程,看/etc/inittab就可以了,启动过程全是依赖于该配置文件。

1.由引导程序(grub)加载内核,内核初始化
2.由内核调用初始化程序由内核参数 init="" 指定,默认为"/sbin/init"
3.init依照"/etc/inittab", 启动系统


先执行 K 开头的(按从低到高),再执行S开头的(从低到高)

------------------------------------------------------------------------------
#默认为6个运行级别,加上一个系统初始化脚本,同过传递参数给rc脚本,来运行各个级别的初始化,个级别的脚本放在"/etc/rc.d/rcX.d".
#"/etc/rc.d/rcX.d"中的脚本都为/etc/rc.d/init.d中的链接文件,脚本命名为 Sxxxx和Kxxxx, S为start,,K为Stop, xxxx为数字,是调用的顺序,从小到大,由rc传递个给该脚本,并按顺序调用.
#"/etc/rc.d/init.d"中的脚本,都可以接受三种参数start, stop, restart.

#记录格式
#   id:rstate:action:process

#        id: 4个字符的唯一标识

#        rstate: 被调用的运行级别, 可以为多个级别,为空则是所有级别

#        action: 执行的动作。    
#            respawn: 如果该进程不存在,则运行,并继续扫描inittab,执行其他项目。如果改进程结束,init将,重启该进程
#            wait:    运行该进程,并等待结束,在处理其他记录
#            once: 运行该进程,并继续其他记录,进程中止了也不在运行
#            sysinit: 只有在启动或重启并首先进入单用户模式时调用。并等待结束,不指定运行界别
#            initdefault: 指定默认级别,如果没指定,则要求用户指定一个
#            ctrlaltdel: 同时按下ctrl+alt+del键执行

#            boot: 系统启动时调用,并继续其他记录,进程中止,不在运行
#            bootwait: 第一次从单用户到多用户模式时调用,并等待结束,中止不再运行
#            powerfail: 当接到断电信号(SIGPWR), 运行
#            powerwait: 同上,并等待结束
#            off: 如果指定进程存在,则向它发出SIGTERM
#            ondemand: 同respawn, 但与运行级别无关,只用于a,b,c字段

#        process: 指定要运行的进程

# Begin /etc/inittab

id:
3:initdefault:                                                    # 默认初始化级别
si
::sysinit:/etc/rc.d/init.d/rc sysinit        # 系统初始化运行的脚本

10:0:wait:/etc/rc.d/init.d/rc 0                        # 0-6运行界别 0为关机,6为重启,1为单用户,3为多用户,5为x
11:S1:wait:/etc/rc.d/init.d/rc 1
12:2:wait:/etc/rc.d/init.d/rc 2
13:3:wait:/etc/rc.d/init.d/rc 3
14:4:wait:/etc/rc.d/init.d/rc 4
15:5:wait:/etc/rc.d/init.d/rc 5
16:6:wait:/etc/rc.d/init.d/rc 6

ca:
12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now        # ctrl+alt+del时,重启

su
:S016:once:/sbin/sulogin                                                    # ?

1:2345:respawn:/sbin/agetty tty1 9600                                #控制台,agetty初始化控制台,然后调用login程序,当用户退出时,重新调用agetty
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600

# End /etc/inittab
------------------------------------------------------------------------------


------------------------------------------------------------------------------
init初始化的脚本过程

所有启动脚本            
/etc/rc.d/init.d/
运行级别控制函数        
/etc/rc.d/init.d/function
主要运行级别控制脚本    
/etc/rc.d/init.d/rc
rc脚本配置                
/etc/sysconfig/rc    设置启动脚本的目录,运行级别控制函数脚本目录位置,网络配置目录

------------------------------------------------------------------------------
由inittab指定运行agetty,agetty运行login程序,等待登录
启动 login 
shell (默认是 /bin/sh),并执行 ~/.bashprofile 
~
/.bashprofile 会自动执行 ~/.bashrc ,而 ~/.bashrc 又调用 /etc/bashrc

阅读(884) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~