并行启动服务加快系统启动速度

幸运的光哥哥

幸运的光哥哥

2016-01-29 18:27

并行启动服务加快系统启动速度,并行启动服务加快系统启动速度
今天无意间看到一篇使系统服务并行运行加快系统启动速度的文章,于是尝试了下,感觉办法很不错,同时让我对lfs的系统引导脚本有了更深的理解现在系统从加载内核到login只要5秒,飞一样的感觉 ^_^
Ok ! Let`s Go ! 因为要修改系统启动的脚本,很可能让系统启动不正常,所以最好有双linux系统,即使修改错误了还可以从另一个系统引导修复。如果很不幸,没有的话,可以先学下这招,紧急救护系统也有用 :p 紧急救援模式: grub菜单中选择linux,按e,e,进入编辑模式,kernel......那一行最后加上init=/bin/bash,这样引导系统可以得到一个bash shell这样进入的系统会是read-only的,首先先使用fsck检查系统fsck -a /dev/hdaX 处理根分区fsck -R -A -a 处理其他分区如果系统在上次重启,是正常重启的,文件系统是正常卸载的,可以不用fsck检查直接把系统挂载成read-write的mount / -o remount,rwmount /procswap on -a 打开所有的交换分区在修复好系统后将系统重新挂载成ro的,就可以安全重启了。mount / -o remount,ro 简单的说一下linux系统的启动过程。 当grub加载内核后,内核执行/sbin/init,init程序读取/etc/inittab内容,开始系统的初始化。 init读取initdefault字段,取得系统运行级别 id:3:initdefault: 这里启动级别是3,通常是多用户字符登陆模式 init读取sysinit字段,开始系统基本的初始化 si::sysinit:/etc/rc.d/init.d/rc sysinit这一行表示init会去执行/etc/rc.d/init.d/rc这个文件,sysinit是传入的参数,这里要做的是:挂载proc系统拉,检查根分区拉,开启swap拉。等等但是在不同的发行版可能不同,比如在Mandrakelinux中是:si::sysinit:/etc/rc.d/rc.sysinit这样初始化的脚本就成了/etc/rc.d/rc.sysinit init读取wait字段,开始系统服务初始化 l3:3:wait:/etc/rc.d/init.d/rc 3经过基本初始化后,init读取run-level中的脚本,这些脚本位于/etc/rc.d/rcX.d目录下。X是当前的运行级别.这里是系统启动的服务,比如network,alsa,httpd....等/etc/rc.d/init.d/rc接收一个运行级别作为参数,然后逐一的开启/关闭/etc/rc.d/rcX.d目录下的脚本。wait表示init会等待它结束再去执行其他程序。 有些发行版在执行rcX.d之后去执行/etc/rc.d/rc.local 最后就看到可爱的login拉在/etc/rc.d/rcX.d中的脚本都是以"SXX+服务名"或者"KXX+服务名"组成的并且都是到/etc/rc.d/init.d中相应脚本的符号链接,有的发行版是/etc/init.d,只是位置不同而已。其中XX是0-9的数字,数字越小,则启动的时间越早。以S开头的表示系统启动时传递start参数的服务,就是开启拉。K开头的就是传递stop参数。/etc/rc.d/rc3.d:S10sysklogd@ S20network@ S25random@ S30httpd S40alsa@ S85numlock@可以看出,我的系统进入rc3.d时首先启动的服务是sysklogd,最后是numlock很明显,httpd服务必须要在network之后运行,不然没有网络哪来的web服务?在lfs中是通过ls -v 列出它们,然后逐一的执行它们,这样就会使系统启动的速度很慢,服务越多越明显现在希望做的就是:让那些相互之间没有依赖关系的服务可以同时开启,而不是逐一的执行这样系统启动的速度就会大大的提高了。make 就是实现这个功能的工具。相互有依赖关系的服务,让make去解决它们的依赖性。再使用make -j 参数使服务可以并行启动。在makefile中写入服务之间的相依赖关系:httpd : network这样就表示httpd依赖network,当network启动完毕,就可以立刻启动httpd而其他不相依赖的服务列在makefile中,同时开启。原理就是这样,下面是我的实际做法:首先是写make的配置文件,该文件的样例在本文的结尾可以找到./etc/rc.d/runlevel.mk######################################################################### Description : Gnu Makefile to control the services in the specified# runlevel. It will run the required services, and log# the output of the services to the file# /var/log/initd.start (for service startup) and# /var/log/initd.stop (for service shutdown).## This controlling program is designed to be invoked by# the "/etc/rc.d/rc" script.## Author : jameshunt@uk.ibm.com## Notes :## - Run as,## make [-n] -j -f runlevel.mk # RUNLEVEL= # JOB=## - $(JOB) is not validated - that is left to the service program.# - $(RUNLEVEL) is not validated - that is left to the calling program# (usually /etc/rc.d/rc).# - It wouldn't take too much effort to auto-generate this Makefile.########################################################################## passed as a parameterRUNLEVEL =# passed as a parameter (start, stop, status, etc)JOB =# set to a value to enable debug outputDEBUG =######################################################################### START CONFIGURATION# system commands used by this facilityCAT = /bin/catRM = /bin/rmECHO = /bin/ec
展开更多 50%)
分享

猜你喜欢

并行启动服务加快系统启动速度

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
并行启动服务加快系统启动速度

如何加快Windows7系统启动速度

电脑入门
如何加快Windows7系统启动速度

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Windows7系统如何加快系统启动和关机速度

电脑网络
Windows7系统如何加快系统启动和关机速度

如何利用Win7系统的内核加快系统启动速度

电脑入门
如何利用Win7系统的内核加快系统启动速度

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Windows 7系统中加快启动速度的方法

电脑入门
Windows 7系统中加快启动速度的方法

电脑系统启动速度慢的原因

电脑入门
电脑系统启动速度慢的原因

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Photoshop教程:打造夜空中绚丽的北极光

Photoshop教程:打造夜空中绚丽的北极光

红旗41实用命令

红旗41实用命令
下拉加载更多内容 ↓