今天,我们主要来谈谈计算机系统的启动流程

1、BIOS启动

BIOS是写入到主板上的一个韧体(韧体就是写入到硬件上的一个软件程序)。开机的时候,BIOS是计算机系统会主动执行的第一个程序。BIOS主要的一个功能就是存储了磁盘的启动顺序,它会按照启动顺序去读取能够开机的硬盘的第一个扇区的MBR信息

2、读取MBR

磁盘的第一个扇区(大小为512bytes)主要记录两个信息:主引导分区(MBR)和分区表。其中,MBR大小为446bytes用于存储引导加载程序(BootLoader),分区表大小为64bytes记录硬盘分区状态,最后2bytes用于MBR的有效性检查。BIOS启动的目的就是让MBR中引导加载程序启动

3、引导加载程序(Boot loader)

目前常用的引导加载程序就是grub,它是一支可读取内核文件并让其执行的软件。grub程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并在加载到内存中,grub就将控制权交接给了Kernel程序

4、Kernel加载

内核(Kernel)是Linux系统最主要的程序,它的作用就是进行硬件检测并加载驱动程序。由于Kernel为了精简且以压缩的文件形式存储在硬盘中,故只保留了最基本的模块,并没有各种硬件的驱动程序,也就无法识rootfs所在的设备,故产生了initrd这个文件。该文件是在安装系统时产生的,是一个临时的根文件系统(rootfs)。它装载了必要的驱动模块,当Kernel启动时,可以从initrd文件中装载驱动模块,直到挂载真正的rootfs,然后将initrd从内存中移除。硬件驱动成功后,Kernel会主动调用init进程

5、启动Init进程

init是系统启动的第一个进程,是所有进程的父进程,打个比喻它就是女娲的级别,所有的人类(进程)都是它造出来的,所有干这行的同学们在kill进程的时候千万不要执行kill -9 init,你干掉了造物主,你说会是什么后果,那就是自己作死。init会根据/etc/inittab中设定的动作进行脚本的执行,init执行第一个脚本/etc/rc.d/rc.sysinit来准备软件执行的操作环境(如网络、时区、设定主机名,挂载文件系统等)。系统的操作环境准备好之后,接下来就是系统服务的启动

6、根据Run-level 进行服务启动

runlevel,系统运行级别(Linux系统有7个级别,哪7个请自行百度),不同的级别会启动的服务不一样,init会根据定义的级别去执行相应目录下(/etc/rc.d/rcN.d)的脚本,该目录下的脚本只有K*和S*开头的文件,K开头的文件为开机需要执行关闭的服务,S开头的文件为开机需要执行开启的服务

7、用户自定义开机启动程序

完成默认runlevel指定的各项服务的启动后,系统最后会自动执行/etc/rc.d/rc.local这个脚本(该脚本的作用请看大标题),至此,系统启动完成,你可以看到登录界面啦

                                                  ——我今天才知道,我之所以漂泊就是我还没有成为大侠

linux系统开机流程详解的更多相关文章

  1. LINUX系统VMSTAT命令详解

    linux系统vmstat命令详解 [转自 https://www.cnblogs.com/wensiyang0916/p/6514820.html] vmstat 1    1表示每秒采集一次vms ...

  2. CentOS开机流程详解

    一个执着于技术的公众号 开机流程 BIOS: (Basic Input Output System)基本输入输出系统,它是一组固化到计算机内主板上一个ROM芯片上的程序,保存着计算机最重要的基本输入输 ...

  3. MySQL在Linux系统下配置文件详解

    在日常的的开发过程中接触到了SQLServer和MySQL数据库的操作性问题,可能是以前接触的都是SQL Server,才开始接触MySQL,总感觉使用MySQL没有使用SQLserver那么顺手,一 ...

  4. Linux系统僵尸进程详解

    大安好,我是良许. 本文我们将来讨论一下什么是僵尸进程,僵尸进程是怎么产生的,如何杀死一个僵尸进程. Linux中的进程是什么? 讲到进程,我们要先了解一下另一个概念:程序. 程序说白了就是躺在电脑硬 ...

  5. linux系统date命令详解

    Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...

  6. Linux系统守护进程详解ntsysv 可以关掉那些服务

    acpid, haldaemon, messagebus, klogd,network, syslogd  以上几个服务必须开启!其他的分析如下: 1.NetworkManager,NetworkMa ...

  7. Linux系统的信号详解

    一.信号类型 1) SIGHUP       2) SIGINT       3) SIGQUIT     4) SIGILL        5) SIGTRAP 6) SIGABRT      7) ...

  8. Linux系统监控命令详解

    1. top命令 top命令经常用来监控Linux的系统状况,比如cpu.内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解. 输 ...

  9. linux系统的负载详解

    系统的平均负载 如何理解平均负载 ​ 单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数. 平均负载多少合理 核心数 平均负载 含义 4 2 有50%的cpu是空闲状态,见 ...

随机推荐

  1. 基于Bootstrap的Metro风格模板

    这几天在看Bootstrap的一些书,这里整理一下书中的一些模板,方便以后使用. 1.BootMetro http://www.guoxiaoming.com/bootmetro/ 2.Bootswa ...

  2. Linux环境编程导引

    计算机系统硬件组成 总线 贯穿整个系统的一组电子管道称为总线, 分为: 片内总线 系统总线 数据总线DB 地址总线AB 控制总线CB 外部总线 I/O设备 I/O设备是系统与外界联系的通道 键盘鼠标是 ...

  3. CentOS安装、使用VNC

    VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在基于 UNIX ...

  4. 【Android 应用开发】Android - 时间 日期相关组件

    源码下载地址 : -- CSDN :  http://download.csdn.net/detail/han1202012/6856737 -- GitHub : https://github.co ...

  5. 【Android 应用开发】Android中使用ViewPager制作广告栏效果 - 解决ViewPager占满全屏页面适配问题

    . 参考界面 : 携程app首页的广告栏, 使用ViewPager实现        自制页面效果图 : 源码下载地址: http://download.csdn.net/detail/han1202 ...

  6. 02_Nginx基本配置与参数说明 + 辅助命令

     Nginx基本配置与参数说明,下面是nginx.conf配置文件 #运行用户 #user  nobody; worker_processes  2; #全局错误日志及PID文件 #error_l ...

  7. DEVICE_ATTR实例分析

    在内核中, sysfs 属性一般是由 __ATTR 系列的宏来声明的,如对设备的使用 DEVICE_ATTR ,对总线使用 BUS_ATTR ,对驱动使用 DRIVER_ATTR ,对类别(class ...

  8. Auto Create Editable Copy Font(Unity3D开发之二十二)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/48318879 ...

  9. 如何利用c中的指针实现两个8bit的数合并为16bit

    对于从事单片机开发,进行单片机c语言开发的人来说,在对外部信息采集回来的数据进行处理,经常会用到,将采集到的第一个字节作为高8位,采集到的第二个字节作为低8位,从而构成1个16bit的数,得到一次完整 ...

  10. obj-c编程15[Cocoa实例03]:MVC以及归档化示例

    前面的博文里介绍了归档和解档,这里我们把它实际应用到一个简单的代码中去,将它作为一个多文档应用程序的打开和保存的背后支持.另外这里介绍一下MVC思想,这个在任何语言里都会有,它是一种设计思想,主要可以 ...