Linux 启动顺序

系统启动

1.BIOS自检
1.1 POST(Power-on self test)检测系统的硬件(cpu,ram,gpu等)
1.2 搜索启动系统的驱动器(硬盘,u盘),如果是硬盘,BIOS会读取硬盘驱动器第一个扇区(MBR,512字节),并将控制权交给MBR
2.MBR中执行grub等中的配置文件,将内核加载到内存中,并将控制权交给内存,内存初始化系统的设备

centos7

3.初始化系统,/sbin/init是系统所有进程的父进程,它会读取/etc/inittab文件来执行相应脚本
在centos7中已经弃用了inittab,在文件夹中添加任何配置将都不会有影响了,而是使用systemctl 命令.
runlevels被targets所替代,默认的两个比较重要的targets.

centos7centos6说明
multi-user.targetrunlevel 3命令行模式
graphical.targetrunlevel 5窗口模式

查看当前的模式使用命令systemctl get-default
设置默认的模式使用命令systemctl set-default TARGET.target

 inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target

4.根据3中设定的启动的等级,执行/etc/rc.d/rcx.d目录里的内容,假设是/etc/rc.d/rc3.d.该目录下全部是以S或者K开头的链接文件.S表示该等级下启动时需要启动的服务,K表示关机时需要关闭的服务内容.这里所有的服务都会在后台启动.

如果我们需要自己增加启动的内容,可以在init.d目录中增加相关的shell脚本,然后在rc*.d目录中建立链接文件指向该shell脚本。这些shell脚本的启动或结束顺序是由S或K字母后面的数字决定,数字越小的脚本越先执行。例如,/etc/rc.d/rc3.d /S01sysstat就比/etc/rc.d/rc3.d /S99local先执行。

5.执行用户自定义引导程序/etc/rc.d/rc.local。其实当执行/etc/rc.d/rc3.d/S99local时,它就是在执行/etc/rc.d/rc.local。S99local是指向rc.local的符号链接。就是一般来说,自定义的程序不需要执行上面所说的繁琐的建立shell增加链接文件的步骤,只需要将命令放在rc.local里面就可以了,这个shell脚本就是保留给用户自定义启动内容的。

6.完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录。tty1,tty2,tty3…这表示在运行等级1,2,3,4的时候,都会执行"/sbin/mingetty",而且执行了6个,所以linux会有6个纯文本终端,mingetty就是启动终端的命令。除了这6个之外还会执行"/etc/X11/prefdm-nodaemon"这个主要启动X-Window

ubuntu 16.04

1.先执行/etc/rcS.d的脚本
2.执行/etc/rcN.d的脚本,N是运行级别
3.执行/etc/rc.local下的脚本

其中rc0.d~rc.6.d文件夹下分别对应的是操作系统0-6级运行的状态下需要执行的脚本。

配置文件/etc/init/rc-sysinit.conf中可以找到默认的启动级别,这里默认的级别是2

我们就会执行/etc/rc2.d目录下的文件,该目录下文件命名的规则是:
S[number][service name]
start表示开起服务,[number]表示运行先后顺序,越小越先执行,[service name]表示服务的名称

所有开机自启动的脚本文件都是放在/etc/init.d/目录下面的:

启动分类描述适用
upstartinit管理 配置文件在/etc/init或者~/.initrunlevel<5
servicerc.d管理,配置文件在etc/init.d/etc/rc.local文件里<=5
cron由contab管理,使用crontab配置不一定
startup由xdg管理,配置文件在/etc/sdg/autostart以及~/.config/autostart=5

对于普通用户而言,你的桌面级应用应该使用startup,服务级应用(比如某些功能性的软件脚本)应该使用service,常规性配置可以使用cron,而与启动顺序有关的最好使用upstart。

开机自动启动

修改/etc/rc.local文件

虽然可以在rc*.d中修改但是不建议,rc.local就是专门为用户提供的,
注意要在exit 0之前添加.

登录自动启动

/profile是登录后所有用户都会读取的配置文件
~/.profile该用户登录才会读取的配置文件

http://www.cnblogs.com/hbhzsysutengfei/p/ubuntu-runlevel-autostart-service.html
http://wiki.ubuntu.org.cn/UbuntuManual:Ubuntu_%E5%9F%BA%E7%A1%80#Ubuntu_.E7.B3.BB.E7.BB.9F.E5.BC.95.E5.AF.BC.E8.BF.9B.E7.A8.8B
http://jiajun.iteye.com/blog/387265
http://blog.csdn.net/vincent_yuan1991/article/details/53942711
http://blog.chinaunix.net/uid-26000296-id-3986914.html
http://www.cnblogs.com/ainiaa/archive/2011/12/05/2276989.html
http://wiki.ubuntu.org.cn/%E5%90%AF%E5%8A%A8
https://www.cnblogs.com/zhaopengcheng/p/5806379.html
https://www.cnblogs.com/gary-guo/p/7501145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值