|
发表于 2005-6-2 23:54:24
|
显示全部楼层
不知道你的系统进程指的是什么
有内核线程,守护进程,不知道你是不是想说这些
启动了什么守护进程,是因人而异的
gentoo里你可以看看
rc-update -s
redhat,FC是
chkconfig --list
进程树可以用这个看
pstree -lp
init不是内核的一部分
在/usr/src/linux/init/main.c里,有个函数
static int init(void * unused)
函数里有这几行
if (execute_command)
execve(execute_command,argv_init,envp_init);
execve("/sbin/init",argv_init,envp_init);
execve("/etc/init",argv_init,envp_init);
execve("/bin/init",argv_init,envp_init);
execve("/bin/sh",argv_init,envp_init);
panic("No init found. Try passing init= option to kernel.");
这就是内核启动的最后一步
首先,如果grub.conf中你要启动的那个内核的kernel那一行有init=xxxx参数(xxx是init程序的路径)那么内核就会执行你指定的init程序
这就是为什么要使用initng一定要加init=/path/to/your/initng这个参数
如果没有加init=参数,就会依次尝试/sbin/init,/etc/init等等
init程序是黑客很感兴趣的东西,想想windows注册表的current version/run你就知道了
注意这几个init不会顺次被执行,而是只有一个被执行(这里我假设你知道execve的意义,如果你不懂,往下看完)
init进程将会依照/etc/inittab来启动守护进程,控制台,display manager(诸如xdm/gdm/kdm)等
PATH是在shell的startup script里设定的
对于bash来说有/etc/profile, /etc/bashrc, ~/.bash_profile, ~/.bashrc等等,后两个是个人的,前两个是全局的
最后一点
我觉得你还是找本书看,如果你觉得市面上讲系统管理的书不够深度,去看
APUE--UNIX环境高级编程
这也是进一步研究内核的基础之一 |
|