linux 启动的时候我们会看到许多的启动信息,但是在linux启动的时候其实并没有想象中的那么复杂,其过程分为五个部分

1. 内核的引导

当计算机打开电源后,首先是blos开机自检,按照blos中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入/boot目录下的内核文件

2. 运行init

init进程是系统所有进程的起点,你可以把她比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init程序首先是需要读取配置文件/etc/inittab

许多程序需要开机启动,它们在linux中就叫做守护进程(daemon)

init进程的一大任务就是去运行这些开机启动的程序

但是在不同场合需要启动不同的程序,修改init配置文件即可确认开机自启的程序

linux运行级别的设定

运行级别0:关机

运行级别1:单用户模式

运行级别2:多用户状态(没有NFS)

运行级别3:命令行界面

运行级别4:系统未使用,保留

运行级别5:图形化界面

运行级别6:重启

3. 系统初始化

在init的配置文件中有这么一行:si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

l5:5:wait:/etc/rc.d/rc 5

这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d目录下的所有启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下

而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件,对于以以S开头的启动脚本,将以start参数来运行。

而如果发现存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于在每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。

4. 建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。

init接下来会打开6个终端,以便用户登录系统。在inittab中的以下6行就是定义了6个终端:

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

从上面可以看出在2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

5. 用户登录系统

同时它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面。登录成功后可以直接进入KDE、Gnome等窗口管理器。

而本文主要讲的还是文本方式登录的情况:当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。

然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以在任何终端上登录。

/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。

总结:

操作系统 -> /boot -> init进程 -> 运行级别 -> /etc/init.d -> 用户登录 -> login shell

不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。

关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6.

转载于:https://blog.51cto.com/11293981/1775305

linux服务器启动过程相关推荐

  1. linux 打开上一级目录,linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志...

    第二波命令正向我方来袭 :开机启动过程.PATH.过滤一级目录.cd的参数.ls -lrt.命令切割日志 1.1 linux开机启动过程 1.1.1 开机自检(BIOS)-- MBR引导-- GRUB ...

  2. linux开机启动过程(简述)

    简述linux开机启动过程 第一步:加电 第二步:加载BIOS设置,选择启动盘. 这是因为因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信 息.PnP特性等等.在此之 ...

  3. uefi启动linux过程_【转载】简述Linux的启动过程

    本文将简单介绍一下Linux的启动过程,希望对那些安装Linux的过程中遇到了问题的朋友有些帮助 声明:本人没用过UEFI模式和GPT分区格式,所有关于这两部分的内容都是网络上找的资料,仅供参考. 典 ...

  4. Linux开启动过程详解

    Linux开启动过程详解 Linux启动过程 前言: Linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹在1991年10月5日首次发布.在加上用户空间的应用程序之后 ...

  5. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程

    转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...

  6. Linux内核启动过程概述

    Hi!大家好,我是CrazyCatJack.今天给大家带来的是Linux内核启动过程概述.希望能够帮助大家更好的理解Linux内核的启动,并且创造出自己的内核^_^ Linux的启动代码真的挺大,从汇 ...

  7. 简述arm linux内核启动流程,Linux内核启动过程和Bootloader(总述)

    1.Linux内核启动过程概述 一个嵌入式 Linux 系统从软件角度看可以分为四个部分:引导加载程序(Bootloader),Linux 内核,文件系统,应用程序.其中 Bootloader是系统启 ...

  8. linux内核启动过程5:启动用户空间

    上一篇<<linux内核启动过程4:内核运行时>>分析到了内核进入运行时状态(不退出),本篇分析用户空间(用户层)的加载过程. 启动应用空间 进入kernel_init函数,在 ...

  9. linux内核启动过程4:内核运行时

    上一篇<<linux内核启动过程3:内核初始化阶段>>分析到了start_kernel执行流程,本篇继续内核切换到运行时状态. 内核运行时状态 内核初始化流程已经分析完成,如何 ...

最新文章

  1. sklearn网格搜索
  2. tomcat启动后如何登录
  3. python中while循环_Python第12课:while循环案例 打印输出有规律的造型
  4. python中的函数修饰符
  5. Python利用matplotlib.animation和matplotlib.pyplot和ffmpeg录制动画并保存为MP4文件
  6. mysql到mysqli转变表_利用mysql和mysqli取得mysql的所有数据库和库中的所有表
  7. 微信 账户升级服务器地址,微信支付商户平台账户升级后有哪些新功能呢?
  8. EVC获取当前工作路径
  9. linux 查看系统位数命令,怎么用命令行查看Linux系统位数
  10. 阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
  11. 【转】C#操作sqlServer数据库
  12. 【Java笔记】Java开发实战经典 - 第六章
  13. 《圈子圈套2》—— 读后总结
  14. 音频-什么是PCM编码格式?
  15. 利用Greenfoot制作简单的小游戏——记忆翻牌游戏(四)
  16. A. Equalize Prices Again
  17. 悲欢离合是红尘,坎坎坷坷是人生
  18. RT-Thread 入门学习笔记 - 熟悉$Sub$$main与$Super$$main
  19. 网络信息安全模型概述
  20. C++ Standard Library

热门文章

  1. golang channel的一些总结
  2. WebSocket能干啥
  3. 实现tomcat的https单向认证及双向认证
  4. centos 6 php环境,centos6.6 下 安装 php7 + nginx环境的方法
  5. 垂直梯形校正画质损失多少_全面了解投影梯形校正,切不可滥用!
  6. sklearn中的逻辑回归
  7. 讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术
  8. activity任意节点跳转
  9. aop源码分析之 —— 创建代理对象
  10. mongodb索引使用