本文详细介绍并行启动应用程序从而加速 Linux 的引导
正如 清单 1 定义的一样, initdefault 指定默认的 init 级别是 2 (多用户模式)。在定义初始的运行级别之后,则调用 rc 脚本以及参数 2(运行级别)来启动系统。这个脚本然后会调用各种服务和应用程序脚本来启动或停止特定的元素。在本例中,文件都是在 /etc/rc2.d/ 中定义的。例如,如果要启动 MySQL 应用程序(例如系统启动),可以这样调用:/etc/rc2.d/S20mysql start。在关闭系统时,则使用 stop 参数调用相同的脚本集。
修改 init 进程
修改初始化进程非常的简单。在引导时(使用 LILO 或 GRUB),指定一个新进程来开始处理系统初始化。指定 init=/sbin/mynewinit 作为内核引导行的一部分从而调用这个进程,而不是默认的 init 进程。在 ./linux/init/main.c 的内核源代码中您可以看到这种用法。如果在内核引导行中提供了一个 init 命令,引导时就会使用它。否则,内核就会尝试启动 4 个备选方法之一(第一个是 /sbin/init)。
最后,串行执行大量的脚本以启动各种需要的服务(通常可以在 Linux 的引导屏幕中看到)。即使这些服务彼此无关时,依然会顺次启动它们。其结果是引导过程非常耗时(尤其在具有很多服务的大型系统上更是如此)。
关于这个问题的一个很明显的解决方案是去掉 init 命令的串行特性,将其替换成并行化操作。在很多多处理系统中都可以看到这种用法。例如,socket striping,或者使用两个或多个 socket 并行地移动数据,就是一个基于这个主题的解决方案。独立磁盘冗余阵列(RAID)系统也是通过将磁盘分成条状(通常是并行的)来提高 I/O 性能。
简单的 init 优化
对 init 进程进行优化的最简单方法是禁用不必要的服务。例如,如果您运行的是一个桌面系统(而不是一个服务器),就可以禁用诸如 apache、sendmail 和 mysql 之类的服务,这样可以缩短 init 序列。
来源:ibm 作者:M. Tim Jones 责编:豆豆技术应用
- Linux/Unix新闻
- Linux/Unix入门
- Linux/Unix命令
- Linux/Unix安装
- Linux/Unix编程
- Linux/Unix管理
- Linux/Unix桌面
- Linux/Unix内核
- Linux/Unix软件
- Linux/Unix发行版
- redhat/Fedora
- Ubuntu Linux
- IBM AIX
- FreeBSD
- Solaris
- NetBSD
- SCO Unix
- find基本用法
- ldd命令原理及用法例子
- su和sudo命令的区别与使用技巧
- Linux操作系统下的dd命令技巧
- 关于Top命令的参数详解
- 关于Tar命令的使用
- SSH实用技巧及常用命令使用
- Linux后台执行命令
- VI命令使用技巧集锦
- Vmstat命令列出的属性详解
- 如何查看及修改文件读写权限
- 最大可存储的单文件容量
- ext2/ext3文件系统介绍
- 常用压缩格式的压缩解压方法
- Linux系统的引导过程详细解析
- Configure参数解释说明
- Linux下硬盘和分区的命名方法
- 硬链接与软链接的区别
- 权限和所有权模型
- 存储设备的两种表示方法