本节内容:
linux启动流程、linux启动服务。
一,Linux系统的启动步骤:
1,读取MBR的信息,启动Boot Manager
Windows使用NTLDR作为Boot Manager,如果系统中安装多个版本的Windows,则需要在NTLDR中选择您要进入的系统。
Linux通常使用功能强大,配置灵活的grub作为Boot Manager。
2,加载系统内核,启动init进程
init进程是Linux的根进程,所有的系统进程都是它的子进程。
init进程读取 /etc/inittab 文件中的信息,并进入预设的运行级别,按顺序运行该运行级别对应文件夹下的脚本。脚本通常以 start 参数启动,并指向一个系统中的程序。
/etc/rcS.d/ 目录下的启动脚本首先被执行,然后是 /etc/rcN.d/ 目录。
例如,设定的运行级别为3,那么它对应的启动目录为 /etc/rc3.d/ 。
根据 /etc/rcS.d/ 文件夹中对应的脚本启动Xwindow服务器 xorg。
Xwindow为Linux下的图形用户界面系统。
3,启动登录管理器,等待用户登录
Ubuntu系统默认使用GDM作为登录管理器,您在登录管理器界面中输入用户名和密码后,便可以登录系统。(您可以在 /etc/rc3.d/ 文件夹中找到一个名为 S13gdm 的链接)
二,更改运行级别
在 /etc/inittab 文件中找到如下内容:
这一行中的数字 2 ,为系统的运行级别,默认的运行级别涵义如下:
0 关机
1 单用户维护模式
2~5 多用户模式
6 重启
服务管理
三,更改启动服务
在运行级别对应的文件夹中,可以看到许多文件名以 S## 和 K## 起始的启动脚本链接。
例如:
init进程将以 start 为参数,按文件名顺序执行所有以 S## 起始的脚本。
脚本名称中的数字越小,它将被越早执行。
例如,在 /etc/rc2.d/ 文件夹中, S13gdm 文件名中的数字小于 S23xinetd , S13gdm 将比 S23xinetd 先执行。
如果一个脚本链接,以 K## 起始,表示它将以 stop 参数被执行。如果相应服务没有启动,则不执行该脚本。
例如:
/etc/rc2.d/K20powernowd 针对某种硬件的电源管理支持
如果,需要禁止某一服务在启动时自动运行,可以将相应运行级别中的脚本由 S##xxx 重命名为 K##xxx 。
四,手动控制服务
可以手动运行带有以下参数的启动脚本,来控制系统服务。
- start 启动 - stop 停止 - restart 重启
例如:
/etc/rc2.d/K20powernowd start
推荐的方式:
可以直接使用 /etc/init.d/ 文件夹中的启动脚本( /etc/rcX.d/ 中的启动脚本链接到 /etc/init.d/ 文件夹下相应脚本)。
例如:
/etc/init.d/powernowd start
注意:以上命令的位置,没有包含在环境变量的搜索路径中,需要输入完整路径才可以。