分析LinuxInit代码的深入分析linuxinit代码

作者&投稿:汤纨 (若有异议请与网页底部的电邮联系)
~ Linux Init代码是操作系统Linux中最重要的部分之一,它是操作系统启动后和用户登录前的过渡环节,主要负责加载硬件设备驱动程序和核心模块,加载配置文件和外部服务,以及配置和映射内存等,是操作系统的正确运行的基础。那么本文就讲讲Linux Init代码的深入分析。
首先,我们来看看Linux Init代码的框架构成,它是由init进程驱动的,其中init进程是Linux操作系统中最核心的一个程序,用于启动系统内核初始化和加载外部服务,这一过程大致可分为以下3个步骤:
第一步,init进程从/etc/inittab文件加载并启动其他进程;第二步,init进程从/etc/init.d目录下加载用户自定义的服务脚本;第三步,init进程从/etc/rc?.d目录启动系统的运行级别(Runlevel)服务。
其次,可以看看Linux Init代码具体的实现过程:
1. init进程从/etc/inittab文件加载并启动其他进程:
init进程实际上读取/etc/inittab文件并解析配置参数,根据配置内容启动其他进程。
例如:
::sysinit:/etc/rc.d/rc.sysinit
该配置行告诉init进程,当系统刚启动完毕后它需要调用/etc/rc.d/rc.sysinit进行系统初始化。
2. init进程从/etc/init.d目录下加载用户自定义的服务脚本:
init进程会检查/etc/init.d目录下是否存在用户自定义的服务脚本,例如Apache、SSH等,并会按照默认的规则去加载和运行对应的服务脚本来启动相应的服务。
3. init进程从/etc/rc?.d目录启动系统的运行级别(Runlevel)服务:
init进程会从/etc/rc?.d目录读取运行级别(Runlevel)配置文件(rc?.d),来根据配置文件加载指定的服务。
其中,启动运行级别服务的代码示例如下:
# List runlevel directories
for i in /etc/rc?.d ; do
# Go through the scripts in that directory
for x in $i/S* ; do
# Split off the runlevel number
level=`echo $x | cut -b 4-`
# If it’s the one we want run it
if [ “$level” = “$RUNLEVEL” -o “$level” = “S” ]; then
# Source shell functions
. /etc/rc.d/init.d/functions
# Run the service
echo -n $”Starting $x: ”
daemon $x start
fi
done
done
最后,通过以上分析,可以总结出Linux Init代码的执行过程是以init进程为核心,由/etc/inittab、/etc/init.d以及/etc/rc?.d三部分组成的,其中init进程用于启动系统内核初始化和加载外部服务,/etc/inittab文件用于加载其他进程,而/etc/init.d目录用于自定义服务脚本,最后/etc/rc?.d目录用于启动不同级别服务。


php文件在哪里(php的文件)
如果你还是找不到位置,那么请使用终极解决办法:新建php文件,写入如下代码保存,然后在浏览器访问该页面,搜索php.ini,恭喜你,你要找的php.ini文件位置已经找到了。(用该方法找Php.ini文件位置,在linux和windows下都是绝招哦)在linux服务器上用命令行\/data\/php\/bin\/php a.php | grep php.ini ...

linux启用yum仓库出现file contains no section
确认文件路径:首先,请确保您正在编辑正确的Yum配置文件。默认情况下,Yum的主要配置文件位于\/etc\/yum.conf或\/etc\/yum.repos.d目录中。检查文件格式:使用文本编辑器打开Yum配置文件,并确保其按照正确的INI格式进行编写。每个部分应该使用方括号([])括起来,并且每行应该包含一对键值对。检查部分名称:...

我真心要学好LINUX,请问如何学好?
我真心要学好LINUX,请问如何学好?我要学成顶级的那种请问如何入手,又如何精湛呢?在此叩谢高人指点!!!晚辈没齿难忘!!... 我真心要学好LINUX,请问如何学好...“首先备份原文件到其他目录,然后删掉\/usr\/local\/unispim\/unispimsp.ksc,编辑\/usr\/local\/unispim\/unispimsp.ini ,最后重启动计算机,生成新的unispimsp.ksc...

(急~急~急)请帮忙,谢谢了
说明:木马PhAse1.0、Stealth Spy、IniKiller开放此端口。端口:568服务:Membership DPA说明:成员资格 DPA。端口:569服务:Membership MSN说明:成员资格 MSN。端口:635服务:mountd说明:Linux的mountd Bug。这是扫描的一个流行BUG。大多数对这个端口的扫描是基于UDP的,但是基于TCP的mountd有所增加(mountd同时运行于两个...

怎样让linux启动后不运行桌面而是运行自己写的图形界面程序?
在\/etc\/rc.local文件中加入你想启动的东西 因为这个目录是Linux启动必须检测执行的一个目录。 wgk4070 | 发布于2010-03-08 举报| 评论 0 0 如下例,把initab里的x:5:respawn:\/usr\/bin\/xdm -nodaemon改成x:5:respawn:\/usr\/bin\/my_programps:你的系统里不一定是 xdm,可能是 gdm之类的,都一样,改了...

如何在自己的linux服务器上搭建网站
1.根据机器的用途,许多服务是不需要的。如果Linux只是一个桌面,那么就不需要sendmail、HTTPD和许多其他服务。如果您的服务器只是一个Web服务器,您还可以关闭许多服务。为此,转到administration菜单并检查服务项。只需撤消您不想启动的任何服务选项。2.使用轻量级窗口管理器,而不是GNOME或KDE。我插入内存...

关于关闭计算机端口的问题?
说明:木马PhAse1.0、Stealth Spy、IniKiller开放此端口。 端口:568 服务:Membership DPA 说明:成员资格 DPA。 端口:569 服务:Membership MSN 说明:成员资格 MSN。 端口:635 服务:mountd 说明:Linux的mountd Bug。这是扫描的一个流行BUG。大多数对这个端口的扫描是基于UDP的,但是基于TCP的mountd有所增加(mountd...

linux服务器上运行PHP,除了PHP-FPM还有其他的方式吗
每一个Web 请求PHP都必须重新解析php.ini、重新载入全部扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的 好处是,持续数据库连接(Persistent database connection)可以工作。APACHE2HANDLER PHP作为Apache模块,Apache服务器在系统启动后,预先生成多个进程副本驻留在内存...

dedecms网页压缩seo之gzip设置图文教程
可以在编译的时候使用--with-config-file-path参数来修改php.ini的存放位置,例如你可以使用--with-config-file-path=\/etc把它存放到\/etc下面,然后可以从源码包中拷贝php.ini-dist到\/etc\/php.ini。2.Dedecms程序本身没有这个功能,需要自己添加此功能,不管是windows主机还是linux主机,首先要有Gzip模块,...

装在电脑上的东西卸载不掉怎么办
例如,“Linux Faq”的目录变成8.3就是“LINUXF~1”了,通过“Linuxf~1”就能进入目录了,此后就可以使用Del命令删除指定文件了。 如果需要删除目录,则使用...3、点击“Boot.ini”标签; 4、选择"\/SAFEBOOT"; 5、然后点击“确定”按钮保存退出,重新启动计算机; 6、重启之后出现的WindowsXP高级选项菜单,选择“...

化州市17894867745: linux系统中init这个是什么作用,看了百科没有怎么看懂,求高手们简单的解释下,谢谢 -
捷哑爱全: 说是操作系统当前正在运行的功能级别.(1到6,表示不同的六个级别) 具体的定义表示我也看不懂,不过用处知道了就行了.init 0 是停机的意思.也就是说可以用这个命令关机.可以相当于shutdown -P now这个命令,就是用这个命令关机的话...

化州市17894867745: linux中init的详细用法是什么呀?
捷哑爱全: 所谓的init进程,它是一个由内核启动的用户级进程. 简单的说,操作系统当前正在运行的功能级别.这个级别从1到6 ,具有不同的功能.不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab)# 0 - 停机(千万不能把initdefault...

化州市17894867745: 关于Linux中的telinit和init命令! -
捷哑爱全: ls -l /sbin/telinit 会看到telinit是指向init的一个链接文件,所以它们是一样的命令

化州市17894867745: LINUX中INIT命令和SHUTDOWN命令有什么不同,分别可以加什么参数达到效果! -
捷哑爱全: init是进程 1--6 六个进程..开机时就是从这几个里面选的....shutdown 是命令...

化州市17894867745: Linux命令中Init和shuntdown还有reboot有什么区别? -
捷哑爱全: init是英文initial的简写,意为最初的,即linux的第一个进程就是它,其它所有进程都是其子进程.它通常用来切换运行级别,其中就包括有关机和重启这两个级别(共七个级别).shutdown可以用来关机和重启.reboot也是用来重启.它们应该都是调用init来达到的这一目的.

化州市17894867745: init命令 -
捷哑爱全: 不同的运行级定义如下:(可以参考Red Hat Linux 里面的/etc/inittab) # 0 - 停机(千万不能把initdefault 设置为0 ) # 1 - 单用户模式 # 2 - 多用户,没有 NFS # 3 - 完全多用户模式(标准的运行级) # 4 - 没有用到 # 5 - X11 (xwindow) # 6 - 重新启动 (千万不要把initdefault 设置为6 )

化州市17894867745: ucLinux下的驱动程序里,经常出现例如"dev - >init""&dev""dev.init"中的三个符号分别是什么意思? -
捷哑爱全: dev->init 代表 dev 是一个结构指针,其结构中有一个字段叫 init&dev 代表取 dev 变量的地址 dev.init 代表 dev 是一个结构变量,其结构中有一个字段叫 init 仅此而已.源码的分析,一定要结合上下文,否则没有意义.但根据 Linux 驱动开发的常识判断,dev 应该是指某设备,而 dev->init 和 dev.init 若非指向该设备的初始化过程调用,就是一个状态变量,标示着该设备是否已经被初始化了.另外还有一点忠告,象 Linux 编程这样高级的话题,在上大多是问不出结果的,有机会多上 Linux 专业网站看看,比如 www.linuxeden.com

化州市17894867745: 请教一下对Linux操作系统内核分析方法?高手请进 -
捷哑爱全: Linux的最大的好处之一就是它的源码公开.同时,公开的核心源码也吸引着无数的电脑爱好者和程序员;他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标. Linux...

化州市17894867745: 如何读懂linux内核源码? -
捷哑爱全: Linux的内核源代码可以从很多途径得到.一般来讲,在安装的linux系统下,/usr/src/linux目录下的东西就是内核源代码.对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解.对于linux内核源代码来讲,我认为,基本...

化州市17894867745: 怎样解读LINUX系统的源代码 -
捷哑爱全: 解读LINUX 的源代码,这一点阻挡了许多人的热情.我的建议是:随着技术的发展,LINUX系统也向着桌面化发展,在内核内加入了越来越多的代码,是内核越来越臃肿,增加了阅读的难度. 1.一般情况下LINUX的源代码位于/USR/LINUX下2.其中的ARCH目录下为一些重要的代码.3.INCLUDE目录下是编译系统所需要的头文件4.其他的一些文件大多可以根据其所在文件夹的名字,以及自身的名字来 判断.蒲У姆绞接枰源娣

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网