linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux入门与提高 > 使用与技巧 >
栏目导栏
资料搜索
热门文章
·VMware Tools的安装步骤
·应用Linux下两种中文输入法
·GRUB FOR DOS 引导安装LINUX和
·linux下BT软件介绍
·Linux中用ALSA驱动声卡流程详解
·Linux 170个常见问题的详细解答
·什么是ISO文件?
·虚拟机软件vmware使用教程--使
·BabyLinux制作过程详解
·Linux挂接(mount)命令的使用方
·Linux必学的网络操作命令
·ffmpeg命令使用详解
·Linux操作系统Ifconfig命令详细
·在Linux下制作工资表
·vmware下的fedora 6的vmware t
最新文章
·CentOS5安装apache和svk使用域
·Ubuntu Linux系统Sudo命令无效
·Uboot对非Linux kernel的引导
·Fedora和XP双系统中网卡Realte
·解决Linux操作系统下部分文件乱
·双系统安装Linux之后找不到Win
·Linux操作系统上安装Flash Med
·设置Tomcat在Linux操作系统中自
·Linux操作系统下创建DBCA报错的
·Redhat Enterprise Linux磁带机
·Linux系统下用一条命令批量修改
·实用技巧:Linux下命令排列、调
·关于Linux操作系统中VI编辑器字
·Linux VI编辑器中的复制与粘贴
·Linux系统下触摸屏的简单使用和
Google
 
关于Linux操作系统根文件系统的启动分析
[ 作者:  加入时间:2008-04-28 09:38:54  来自:Linux联盟收集整理 ]
 

一般的系统是先启动/sbin/init,但是也可通过启动参数指定init=来确定,如:我的系统就是制定的init=/linuxrc,因为文件系统是采用busybox的,而linuxrc。也是一个指向busybox的文件,不过不确认它指向具体哪个指令。不过可能是/sbin/init。

init进程的主要任务是按照inittab文件所提供的信息创建进程,由于进行系统初始化的那些进程都由init创建,所以init进程也称为系统初始化进程。

如我的inittab:

::sysinit:/etc/init.d/rcS

::respawn:-/bin/login

::restart:/sbin/init

::ctrlaltdel:/bin/reboot

::shutdown:/bin/umount -a -r

::shutdown:/sbin/swapoff -a

inittab的格式如下:

id:rstate:action:process

1.id字段是最多4个字符的字符串,用来唯一标志表项。

2.rstate(run state)字段定义该记录项被调用时的运行级别,rstate可以由一个或多个运行级别构成,也可以是空,空则代表运行级别0~6。当请求init改变运行级别时,那些rstate字段中不包括新运行级别的进程将收到SIGTERM警告信号,并且最后被杀死;只有a、b、c启动的命令外(a、b、c不是真正的运行级别)

3.action字段定义了该进程应该运行在何种状态下:

boot 在系统启动时运行,忽略runlevel

bootwait 在系统启动时运行,init等待进程完成。忽略runlevel

ctrlaltdel 当Ctrl+Alt+Del三个键同时按下时运行,把SIGINT信号发送给init。忽略 runlevel

initdefault 不要执行这个进程,它用于设置默认runlevel

kbrequest 当init从键盘中收到信号时运行。这里要求键盘组合符合KeyBoardSigral(参见/usr/share/doc/kbd-*关于键盘组合的文档)

off 禁止进入,因此该进程不运行

once 每一个runlevel级别运行一次

ondemand 当系统指定特定的运行级别A、B、C时运行

powerfail 当init收到SIGPWR信号时运行

powerokwait 当收到SIGPWD信号且/etc/文件中的电源状态包含OK时运行

powerwait 当收到SIGPWD信号,并且init等待进程结束时运行

respawn 不管何时终止都重新启动进程

sysinit 在运行boot或bootwait进程之前运行

wait 运行进程等待输入运行模式

process 字段包含init执行的进程,该进程采用的格式与在命令行下运行该进程的格式一样,

因此process字段都以该进程的名字开头,紧跟着是运行时,紧跟着是运行时要传递给该进程的参数。

比如/sbin/shutdown -t3 -r now,该进程在按下Ctrl+Alt+Del时执行,在命令行下也可以直接输入来重新启动系统。

4.Process字段中进程可以是任意的守候进程、可执行脚本或程序。

另外:在任何时候,可以在文件inittab中添加新的记录项,级别Q/q不改变当前的运行级别,重新检查inittab文件,可以通过命令init Q或init q使init进程立即重新读取并处理文件inittab.

他会先执行/etc/init.d/rcS

#! /bin/sh

/bin/mount -a

mdev -s

而mount -a会执行/etc/fstab

proc /proc proc defaults 0 0

none /tmp ramfs defaults 0 0

mdev /dev ramfs defaults 0 0

sysfs /sys sysfs defaults 0 0

挂载一些ramfs。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Linux下使用Shell脚本改变当前工作路径  (2008-04-28 09:38:04)
 ·从硬盘安装SUSE Linux10系统的两种方法  (2008-04-25 09:37:20)
 ·Linux操作系统桌面环境GNOME 2.23.1发布  (2008-04-25 09:35:24)
 ·在Linux Debian操作系统下成功安装E17桌面  (2008-04-24 09:40:12)
 ·Linux操作系统下图形界面模式更改IP地址  (2008-04-24 09:39:38)
 ·Ubuntu新版Linux免费下载与Novell竞争激烈  (2008-04-24 09:23:49)
 ·解决Linux系统下管道被接受方关闭的问题  (2008-04-24 09:22:16)
 ·如何在Linux操作系统下配置双网卡路由表  (2008-04-23 09:34:43)
 ·在Linux系统下实验SMB网络协议具体步骤  (2008-04-23 09:33:56)
 ·Linux下如何解决三级域名不能访问的问题  (2008-04-23 09:33:22)