计算机开机是一个神秘的过程。我们只是按了开机键,就听到屏幕上的进度条或则一行行的输出,直至我们抵达登陆界面。但是,计算机开机又是个异常脆弱的过程,我们满心期望的登陆界面可能并不会出现,而是一个命令行或则错误信息。了解计算机开机过程有助于我们修补开机可能出现的问题。
最初始阶段
当我们打开计算机电源linux系统官网,计算机会手动从显卡的BIOS(BasicInput/OutputSystem)读取其中所储存的程序。这一程序一般晓得一些直接联接在显卡上的硬件(硬碟,网路插口,鼠标,并口,串口)。现今大部份的BIOS容许你从软驱、光盘或则硬碟中选择一个来启动计算机。
下一步,计算机将从你所选择的储存设备中读取起始的512bytes(例如光碟一开是的512bytes,假如我们从光碟启动的话)。这512bytes称作主引导记录MBR(masterbootrecord)。MBR会告诉笔记本从该设备的某一个分区(partition)来装载引导加载程序(bootloader)。Bootloader存放有操作系统(OS)的相关信息,例如操作系统名称,操作系统内核(内核)所在位置等。常用的bootloader有GRUB和LILO。
此后,bootloader会帮助我们加载内核(kernel)。内核实际上是一个拿来操作计算机的程序,它是计算机操作系统的内核,主要的任务是管理计算机的硬件资源,充当软件和硬件的插口。操作系统上的任何操作都要通过内核传达给硬件。Windows和Linux各自有自己内核。狭义的操作系统就是指内核,广义的操作系统包括内核以及内核之上的各类应用。
(LinusTorvalds与其说是Linux之父,不如说是Linux内核之父。他仍然负责Linux内核的开发和维护。至于Ubuntu,RedHat,它们都是基于相同的内核之上,涵盖了不同的应用和界面构成的一个愈发完整的操作系统版本。)
实际上,我们可以在多个分区安装bootloader,每位引导加载程序对应不同的操作系统,在读取MBR的时侯选择我们想要启动的引导加载程序。这就是多操作系统的原理。
小结:BIOS->MBR->引导加载程序->内核
内核
假如我们加载的是Linux内核,Linux内核开始工作。内核会首先预留自己运行所需的显存空间,之后通过驱动程序(driver)测量计算机硬件。这样,操作系统就可以晓得自己有什么硬件可用。此后,内核会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,内核就完成了在计算机启动阶段的工作,交接给init来管理。
小结:内核->initprocess
initprocess
(依据bootloader的选项,Linux此时可以步入单用户模式(singleusermode)。在此模式下,初始脚本还没有开始执行,我们可以测量并修补计算机可能存在的错误)
此后,init会运行一系列的初始脚本(startupscripts),这种脚本是Linux中常见的shellscripts。这种脚本执行如下功能:
设置计算机名称,时区,检查文件系统,挂载硬碟,清空临时文件操作系统原理linux,设置网路……
当这种初始脚本,操作系统早已完全打算好了arm linux,只是,还没有人可以登入。init会给出登陆(login)对话框,或则是图形化的登陆界面。
输入用户名(例如说vamei)和密码,DONE!
在随后的过程中,你将以用户(user)vamei的身分操作笔记本。据悉,按照你创建用户时的设定操作系统原理linux,Linux就会将你归到某个组(group)中,例如可以是stupid组,或则是vamei组。
所以你将是用户vamei,同时是vamei组的班委。(注意,组vamei和用户vamei只是重名而已,就好想你可以叫Dell,同时还是Dell公司的老总一样。你完全也可以是用户vamei,同时为stupid组的班委)
总结
BIOS->MBR->引导加载程序->内核->initprocess->login
用户,组。