当前位置:首页 > 服务器类 > Windows服务器 > > Mandrake9.0的启动过程(从init开始

Mandrake9.0的启动过程(从init开始

点击次数:23 次 发布日期:2008-11-29 19:31:09 作者:源代码网
源代码网推荐 在内核引导结束并启动/sbin/init之后,系统就转入用户态的运行。在这之后创建的一切进程,都是在用户态进行。这里先要讲清楚一个概念:就是init进程虽然是从内核开始的,即在前面所讲的init/main.c中的init()函数在启动后就已经是一个核心线程,但在转到执行/sbin/init之后,内核中的init()就变成了/sbin/init程序,状态也转变成了用户态,也就是说核心线程变成了一个普通的进程。这样一来,内核中的init函数实际上只是init进程的入口,它在执行execve("/sbin/init",argv_init,envp_init)时改变成为一个普通的用户进程。这就是exec系列函数替换进程映像的变身大法,只要你学过unix环境下的多进程编程,应该都能理解这一点。
  除此之外,它们的代码来源也有差别,内核中的init()函数的源代码在/init/main.c中,是内核的一部分。而/sbin/init程序的源代码是sysvinit软件包的一部分,可以从ftp://ftp.cistron.nl/pub/people/miq...程序,如:halt, init, killall5, last, lastb (链接至 last), mesg, pidof (链接至 killall5), poweroff (链接至 halt), reboot (链接至 halt), runlevel, shutdown, sulogin, telinit (链接至 init), utmpdump 和 wall等等。对于启动过程而言,这里最重要的就是init程序。它启动之后,要完成很多任务:检查文件系统,启动各种后台服务进程,最后为每个终端和虚拟控制台启动一个getty进程供用户登录。由于所有其它用户进程都是由init派生的,因此它又是其它一切用户进程的父进程。



  init进程启动后,就要按照/etc/inittab的内容进程系统设置。下面就是manfrake9.0的inittab内容:
  #
  # inittab This file describes how the INIT process should set up
  # the system in a certain run-level.
  #
  # Author: Miquel van Smoorenburg,
  # Modified for RHS Linux by Marc Ewing and Donnie Barnes
  #
  # Default runlevel. The runlevels used by Mandrake Linux are:
  # 0 - halt (Do NOT set initdefault to this)
  # 1 - Single user mode
  # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
  # 3 - Full multiuser mode
  # 4 - unused
  # 5 - X11
  # 6 - reboot (Do NOT set initdefault to this)
  #
  id:5:initdefault:
  # System initialization.
  si::sysinit:/etc/rc.d/rc.sysinit
  l0:0:wait:/etc/rc.d/rc 0
  l1:1:wait:/etc/rc.d/rc 1
  l2:2:wait:/etc/rc.d/rc 2
  l3:3:wait:/etc/rc.d/rc 3
  l4:4:wait:/etc/rc.d/rc 4
  l5:5:wait:/etc/rc.d/rc 5
  l6:6:wait:/etc/rc.d/rc 6
  # Things to run in every runlevel.
  ud:nce:/sbin/update
  # Trap CTRL-ALT-DELETE
  ca::ctrlaltdel:/sbin/shutdown -t3 -r now
  # When our UPS tells us power has failed, assume we have a few minutes
  # of power left. Schedule a shutdown for 2 minutes from now.


源代码网供稿.
上一篇: Bash实例(2)  下一篇: Flash动画制作技巧(3)
网友评论 (0)
会员中心
服务器类
本站推荐
服务器类之精华