简述Linux开机启动流程

计算机开机是一个神秘的过程。咱们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到咱们到达登陆界面。然而,计算机开机又是个异常脆弱的过程,咱们满心指望的登陆界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于咱们修复开机可能出现的问题。

最初始阶段html

当咱们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序。这一程序一般知道一些直接链接在主板上的硬件(硬盘,网络接口,键盘,串口,并口)。如今大部分的BIOS容许你从软盘、光盘或者硬盘中选择一个来启动计算机。linux

下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(好比光盘一开是的512 bytes,若是咱们从光盘启动的话)。这512 bytes叫作主引导记录MBR (master boot record)。MBR会告诉电脑从该设备的某一个分区(partition)来装载引导加载程序(boot loader)。Boot loader储存有操做系统(OS)的相关信息,好比操做系统名称,操做系统内核 (内核)所在位置等。经常使用的boot loader有GRUB和LILO。shell

随后,boot loader会帮助咱们加载内核(kernel)。内核其实是一个用来操做计算机的程序,它是计算机操做系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的接口。操做系统上的任何操做都要经过内核传达给硬件。Windows和Linux各自有本身内核。狭义的操做系统就是指内核,广义的操做系统包括内核以及内核之上的各类应用。网络

(Linus Torvalds与其说是Linux之父,不如说是Linux 内核之父。他依然负责Linux 内核的开发和维护。至于Ubuntu, Red Hat, 它们都是基于相同的内核之上,囊括了不一样的应用和界面构成的一个更加完整的操做系统版本。)ide

实际上,咱们能够在多个分区安装boot loader,每一个引导加载程序对应不一样的操做系统,在读取MBR的时候选择咱们想要启动的引导加载程序。这就是多操做系统的原理。spa

小结:BIOS -> MBR -> 引导加载程序 -> 内核操作系统

内核.net

若是咱们加载的是Linux内核,Linux内核开始工做。内核会首先预留本身运行所需的内存空间,而后经过驱动程序(driver)检测计算机硬件。这样,操做系统就能够知道本身有哪些硬件可用。随后,内核会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,内核就完成了在计算机启动阶段的工做,交接给init来管理。orm

小结: 内核 -> init processhtm

https://article.pchome.net/content-2105360.html

init process

(根据boot loader的选项,Linux此时能够进入单用户模式(single user mode)。在此模式下,初始脚本尚未开始执行,咱们能够检测并修复计算机可能存在的错误)

随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts。这些脚本执行以下功能:

设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络……

当这些初始脚本,操做系统已经彻底准备好了,只是,尚未人能够登陆。init会给出登陆(login)对话框,或者是图形化的登陆界面。

输入用户名(好比说vamei)和密码,DONE!

在此后的过程当中,你将以用户(user)vamei的身份操做电脑。此外,根据你建立用户时的设定,Linux还会将你归到某个组(group)中,好比能够是stupid组,或者是vamei组。

因此你将是用户vamei, 同时是vamei组的组员。(注意,组vamei和用户vamei只是重名而已,就好想你能够叫Dell, 同时仍是Dell公司的老板同样。你彻底也能够是用户vamei,同时为stupid组的组员)

总结

BIOS -> MBR -> 引导加载程序 -> 内核 -> init process -> login

相关文章
相关标签/搜索