赛迪网 > IT技术 Linux > 企业应用
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

关于Linux操作系统根文件系统的启动分析

发布时间:2008.04.28 06:13     来源:赛迪网    作者:sixth

一般的系统是先启动/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。

(责任编辑:云子)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· SUSE 10.2 Linux下配置Eclipse开发环境 (04-25) · SUSE Linux系统下的VG迁移到Redhat系统 (04-25)
· 关于Linux操作系统下GCC的使用方法说明 (04-25) · Ubuntu Linux 8.04(LTS)版本正式发布 (04-25)
· 2013年将有两成中高阶手机使用Linux系统 (04-25) · 关于Linux操作系统防火墙的进程查看方法 (04-25)
· Linux系统平台下关于GCC编译及使用的方法 (04-25) · 全面了解安装使用Linux下的日志文件系统 (04-25)
· 专题:虚拟化 SUSE Linux Enterprise (04-25) · Xen虚拟机中固定Guest OS的网卡的Mac地址 (04-25)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 移动信息化市场方兴未艾 企业呼唤标准出台
· 如何把握企业价值差异 避免CRM与SCM脱节
· 齐看四大厂商的SaaS动态 ERP案例分析
· 通方期货CRM解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统