zoukankan      html  css  js  c++  java
  • Linux系统启动过程

    系统启动过程

    总的来说,linux系统启动流程可以简单总结为以下几步:
    1)开机BIOS自检,加载硬盘。
    2)读取MBR,进行MBR引导。
    3)grub引导菜单(Boot Loader)。
    4)加载内核kernel。
    5)启动init进程,依据inittab文件设定运行级别
    6)init进程,执行rc.sysinit文件。
    7)启动内核模块,执行不同级别的脚本程序。
    8)执行/etc/rc.d/rc.local
    9)启动mingetty,进入系统登陆界面。

    linux系统安装时,如果要想设置开启启动项,可以:
    开机到BIOS提醒界面,按键F11(Dell服务器的做法)进入BIOS设置BOOT MENU,继而设置启动项:硬盘HD启动,光盘CD/DVD启动,还是U盘USB启动。

    下面就linux操作系统的启动过程做一详细解析记录:

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

    启动初始化进程
    内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境
    操作系统 》/boot》init进程

    确定运行级别
    许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
    init进程的一大任务,就是去运行这些开机启动的程序。
    但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。
    Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
    操作系统》/boot》init进程》运行级别

    Linux预置七种init运行级别(0-6):
    0:关机模式 (相当于poweroff)
    1:单用户模式(破解root密码的方法:linux系统root密码遗忘的情况下的解决办法)
    2:无网络支持的多用户模式
    3:有网络支持的多用户模式(也就是文本模式,工作中最常用的模式)
    4:保留,未使用
    5:有网络支持的X-windows支持多用户模式(也就是桌面图形模式)
    6: 重新引导系统,即重启 (相当于reboot)
    init进程首先读取文件 /etc/inittab,它是运行级别的设置文件。

    加载开机启动程序
    七个 /etc/rcN.d 目录里列出的程序,都设为链接文件,指向另外一个目录 /etc/init.d ,
    真正的启动脚本都统一放在这个目录中。init进程逐一加载开机启动程序,其实就是运行这个目录里的启动脚本。
    操作系统》/boot》init进程》运行级别》/etc/init.d

    用户登录
    开机启动程序加载完毕以后,就要让用户登录了。
    操作系统》/boot》init进程》运行级别》/etc/init.d》用户登录

    进入 login shell
    所谓shell,简单说就是命令行界面,让用户可以直接与操作系统对话。
    用户登录时打开的shell,就叫做login shell。
    操作系统》/boot》init进程》运行级别》/etc/init.d》用户登录》Login shell

    打开 non-login shell
    上一步完成以后,Linux的启动过程就算结束了,用户已经可以看到命令行提示符或者图形界面了。
    但是,为了内容的完整,必须再介绍一下这一步。
    用户进入操作系统以后,常常会再手动开启一个shell。
    这个shell就叫做 non-login shell,意思是它不同于登录时出现的那个shell,不读取/etc/profile和.profile等配置文件。
    操作系统》/boot》init进程》运行级别》/etc/init.d》用户登录》Login shell》Non-Login shell

    作者:小a玖拾柒

    -------------------------------------------

    个性签名: 所有的事情到最後都是好的,如果不好,那說明事情還沒有到最後~

    本文版权归作者【小a玖拾柒】和【博客园】共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利!

  • 相关阅读:
    Python里的目录方法
    PythonFile对象的属性
    Python read和write方法
    Python打开和关闭文件
    Python打印到屏幕_读取键盘输入
    Python包
    Python globals和locals函数_reload函数
    Python dir( )函数
    【C 语言】一元二次方程
    【C语言】已知三角形三边长,求三角形面积
  • 原文地址:https://www.cnblogs.com/ftl1012/p/14938857.html
Copyright © 2011-2022 走看看