Linux的引导流程一

一、Linux引导流程

1、固件firmware(CMOS/BIOS)  POST加电自检

2、自举程序BootLoader(GRUB)  载入内核

3、载入内核Kernel  驱动硬件

4、启动进程init

5、读取执行配置文件/etc/inittab

  a、从默认运行级别运行(initdefault)

  b、执行脚本/etc/rc.d/rc.sysinit  这个脚本任何时候系统启动都会运行

  c、执行脚本/etc/rc.d/rc  这个脚本会判断默认启动级别

  d、执行对应运行级别的/etc/rc.d/rc[0123456].d  启动对应的服务

  e、username password……

二、Linux运行级别

Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode  没有图形界面,只有root可以登录,类似windows的安全模式
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)  NFS(network file system)
# 3 - Full multiuser mode
# 4 - unused  没有使用的运行级别,可以用户自定义
# 5 - X11  系统缺省的运行级别  图形化的多用户级别
# 6 - reboot (Do NOT set initdefault to this)  重新启动运行级别

·init [0123456]  设置从什么启动级别启动

三、inittab文件的解释

在inittab中,所有的条目采取以下格式

id:runlevel:action:process

  id:标示符,一般为两位字母或数字

  runlevel:指定的运行级别,可以指定多个

  action:运行状态

  process:指定要运行的脚本/命令

1、关键脚本文件介绍

  /etc/rc.d/rc.sysinit  这个脚本只要系统运行,它就会运行一次,如果有什么命令想要在系统一运行就指定,可以写在这个脚本的最后

  /etc/rc.d/rc[0123456].d  这是个目录,对应每种运行级别下要开始和停止的服务

    

  例:S 14 nfslock

    S  start  开始服务

    K  kill  停止服务  (大小写敏感)

    14  后面跟的数字表示运行的优先级

    nfsclock  在后面的字母序列表示运行脚本名称

  /etc/rc.d/init.d  这个目录下存放着你安装Linux系统时安装的启动服务,通过sshd命令来单独启动或关闭

设置自启动程序:当我们编写了一个脚本文件,想要在某个运行级别下运行时,可以使用软连接,将该脚本文件链接到/etc/rc.d/rc[012345].d这个目录下,重新命名如:msg.script->S100msg.script

例:

ln -s /etc/rc.d/init.d/msg.script /etc/rc.d/rc3.d/S100msg.script

2、action的一些值

行为 描述

respawn
 一旦第4项指定的process命令中止,便重新运行该命令。

wait

执行第4项指定的process,并等其结束后再运行其它命令。(阻塞)

once

执行第4项指定的process,不等待它执行完成,继续运行其它命令。

boot

不论在哪个执行等级,系统启动时都会运行第4项指定的process。

bootwait

不论在哪个执行等级,系统启动时都会运行第4项指定的process,且一直等它执行完备。

off

关闭任何动作,相当于忽略该配置行。

ondemand

进入ondemand执行等级时,执行第4项指定的process。

initdefault

系统启动后进入的执行等级,该行不需要指定process。

sysinit

不论在哪个执行等级,系统会在执行boot及bootwait之前执行第4项指定的process。

powerwait

当系统的供电不足时执行第4项指定的 process,且一直等它执行完毕。

powerokwait

当系统的供电恢复正常时执行第4项指定的process,且一直等它执行完毕。

powerfailnow

当系统的供电严重不足时执行第4项指定的process。

powerfail

当出现电源错误时执行第4项指定的process命令,不等待其结束。

ctrlaltdel

当用户按下【Ctrl+Alt+Del】时执行第4项指定的 process。

kbrequest

当用户按下特殊的组合键时执行第4项指定的process,此组合键需在keymaps文件定义。

四、父子进程的关系

  1、父进程先于子进程终止:

    此种情况就是我们前面所用的孤儿进程。当父进程先退出时,系统会让init进程接管子进程 。
  2、子进程先于父进程终止,而父进程又没有调用wait或waitpid函数

     此种情况子进程进入僵死状态,并且会一直保持下去直到系统重启。子进程处于僵死状态时,内核只保存进程的一些必要信息以备父进程所需。此时子进程始终占有着资源,同时也减少了系统可以创建的最大进程数。

     僵死状态:一个已经终止、但是其父进程尚未对其进行善后处理(获取终止子进程的有关信息,释放它仍占有的资源)的进程被称为僵死进程(zombie)。ps命令将僵死进程的状态打印为Z 。
  3、子进程先于父进程终止,而父进程调用了wait或waitpid函数 
     此时父进程会等待子进程结束。

五、自举程序grup的配置与应用

时间: 2025-01-09 18:49:48

Linux的引导流程一的相关文章

linux操作系统启动流程一

linux系统的启动流程: POST --> BootSequence(BIOS) --> bootloader --> kernel [-->ramfs] --> rootfs[ro]--> /sbin/init --> 设定默认运行级别 --> 进行系统初始化 --> 并行执行ctrl+alt+del热键功能定义,系统服务的开启和关闭,电源的管理,dbus管理 -->登录提示符 在我们linux系统的启动过程中存在着这样的启动流程,下面我们一

iOS Working with Streams 处理流 官方文档翻译(四)

原文地址:developer 这个篇章蛮长的,也翻译了好长时间.祝大家周末愉快! 处理流 本章讨论了如何创建.打开.读写流检查错误.它还描述了如何阅读一个read streams,如何写一个write streams,如 何防止读或写流时阻塞,以及如何通过代理服务器引导流. 使用读取流 核心基础流可用于读写文件或使用网络套接字.除了创建这些流的过程中,他们的行为类似. 创建一个读取流 首先创建一个读取流.清单2创建一个读取一个文件流 清单2创建一个从文件读取流 CFReadStreamRef m

SaaS营销网站的组织结构

人们常常将自己的所有精力放在为网站制定精美.反响力强的页面上--但是用户对单个页面的实际体验常常取决于网站的整体组织结构.如果你的网站组织欠妥,你在网站设计上投入的精力就会付诸东流. 组织架构可将营销网站的各部分有机结合起来.有些访客专门为了购买产品而访问网站,而有些人只是偶然进入.梳理网站组织策略,在你的营销网站上展示产品的优势和必买理由,让网站的每个部分都能够触动来自各个领域的潜在用户. 我们与UserTesting.com合作,分析了30家SaaS公司的网站结构.我们研究了各类公司的组织方

云计算安全解决方案白皮书(三)

云计算安全解决方案白皮书 Jack zhai 三.云计算安全解决方案的设计思路 云计算架构的显著特点是数据和业务的集中处理,加上VM的动态迁移,各个的业务VM就混在一起,要将这些VM之间完全隔离是十分困难的.业务VM之间是需要互通的,如虚拟桌面需要与服务器连通,网站服务器要与数据库服务器通信,中间件服务器要提供服务支持等等.虽然可以通过虚拟交换机上的访问控制,让VM之间逻辑隔离开来,互通时到外边的三层网关上做流量过滤,但这会成倍地增加循环流量,让虚拟交换机不堪重负. 局部难以解决的问题,我们可以

安装RedHat Linux引导盘安装服务器提示GPT分区无法继续安装的解决方法

解决办法: 在安装界面中按 "ctrl+alt+f2"符进入字界面 fdisk -l      //此时你会看到引导分区结尾上的标记是GPT 假设是/dev/sdb parted select /dev/sdb mklabel msdos 选择[yes/no]:yes 提示标签变为[gpt]:msdos quit 按"ctrl+alt+f6"回到安装界面,删掉所有分区,重新划分分区就可以了. 安装RedHat Linux引导盘安装服务器提示GPT分区无法继续安装的解

轻松学习之Linux教程一 ubuntu14.04+windows双系统安装

本系列文章由@超人爱因斯坦出品,转载请注明出处.          文章链接:http://hpw123.net/member/index.php?uid=hpw&action=viewarchives&aid=60          作者:超人爱因斯坦    个人网站:http://www.hpw123.net        邮箱: [email protected]        CSDN:http://blog.csdn.net/u010283694 授之以鱼,不如授之以渔.    

linux 在批处理中,完整路径有空格的处理方式(加引號)

cp -f E:/XML_EDITOR/xmleditor25/xmleditor/Editor_UIOuterCtrl/TraceViewDlg.cpp E:/XML_EDITOR/'XMLEditor windows server 2008'/xmleditor/Editor_UIOuterCtrl/TraceViewDlg.cpp cp -f E:/XML_EDITOR/xmleditor25/xmleditor/Editor_UIOuterCtrl/TraceViewDlg.h E:/X

Linux网站网络引流压力测试网站

群里经常有人问自己在CentOS服务器下搭建了LNMP服务器(网站服务器),想做一下并发压力测试,在这里搜到几个比较好的压力测试网站给大家做测试! 1.阿里测 http://www.alibench.com 2.卡卡网 http://yali.webkaka.com 3.国外的一个测试站 http://www.webpagetest.org

Linux上天之路(十六)之Shell编程一

用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程.以前学过的cd.alias.umask.exit等命令即是内建命令,凡是用which命令查不到程序文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令,应该 $ man builtins 如export.shift.if.eval.[.for.while等等.内建命令虽然不创建新的进程,但也