sysvinit解析/etc/inittab文件

大家都知道init进程,即:进程1,是linux的第一个进程,也是所有进程的父进程;同时,也是这个进程解析的/etc/inittab文件。但是,这个init进程到底是谁?在debian下这个进程是软件包sysvinit的一部分。

内核文件/init/main.c中有个init函数:原型如下:

static int init(void * unused);

今天,我不详细分析这个函数,关于这个函数的分析网上有很多资料,我只关注一下这个函数的最后几行:

if (execute_command) run_init_process(execute_command); run_init_process("/sbin/init"); run_init_process("/etc/init"); run_init_process("/bin/init"); run_init_process("/bin/sh"); panic("No init found. Try passing init= option to kernel.");

其中的run_init_process("/sbin/init");一行就是启动了init进程,/sbin/init就是在sysvinit中实现的。

这里澄清一个问题,就是内核源码中/init/main.c文件中的init函数与init进程的关系,他们不是同一个东西。内核中的init函数是有进程0创建的内核线程的一部分,他不是通常所说的init进程,init函数通过run_init_process("/sbin/init");语句创建了init进程,而这个init进程的源代码并不在内核源码中,而在sysvinit软件包中。这个软件包的官方网站为:

http://packages.debian.org/zh-cn/etch-m68k/sysvinit

今天,我重点分析这个软件包是如何分析/etc/inittab文件的。 

 

 

你可能感兴趣的:(linux,Debian,command)