引导和关机

前期知识点

ROM

   ROM(只读存储器),ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定 ,断电后所存数据也不会改变;其结构较简单,读出较方便,因而常用于存储各种固定程序和数据。

RAM

   RAM(随机存储存储器),又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。

BIOS

   BIOS(Basic Input Output System:基本输入输出系统),它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。当今,此系统已成为一些病毒木马的目标。一旦此系统被破坏,其后果不堪设想。

引导

   引导(bootstrapping)是启动计算机的标准术语。在引导过程中,内核被加载到内存中并开始执行。各种初始化任务得意执行之后,用户就可以开始使用系统了。
   当打开计算机时,计算机执行存储在ROM中的引导代码,这些代码接下来尝试确定如何加载并启动内核。内核检测系统的硬件,然后产生系统的init进程,这个进程总是PID1。在出现登陆提示符以前,要完成几项工作。系统必须检查并安装文件系统,而且系统的守护进程必须启动起来,这些步骤是由init进程按照顺序执行的一系列shell脚本来管理的。启动脚本由于他们的命名方式而经常被称作”rc文件”,”rc”代表”runcom”或”run command”。

引导过程的步骤
1.加载并初始化内核。
2.检测和配置设备。
3.创建内核线程。
4.操作员干预(仅用于手工引导)5.执行系统启动脚本。
6.多用户模式运行。
初始化内核

   Linux内核本身就是一个程序,系统引导过程中的第一项任务就是把这个程序载入到内存中去,以便执行它。内核的路径名称常常是/vmlinuz或者/boot/vmlinuz。Linux系统实现了一个有两个阶段的加载过程。在第一阶段中,系统ROM把一个小的引导程序从磁盘载入到内存中。然后,这个程序再安排载入内核。内核执行内存检测来确定有多少RAM可用。内核的一些内部数据结构按照静态方式分配其内存量,因此,当内核启动时,它就为自己划分出一块固定大小的实存空间。这块空间保留给内核使用。用户及进程不能使用。内核在控制台打印一条信息,报告物理内存的总量以及用户进程可用的内存量。

配置硬件

   内核执行的第一批任务包括检查机器的环境以及确定机器有什么硬件。当您未自己的系统构建内核时候,要告诉内核,它会找到哪些硬件设备。当内核开始执行时,它试图找到并初始化已经告诉它的每一个设备。大多数内核为他们找到的每个设备打印出一行专门信息。

内核线程

   一旦完成了基本的初始化任务,内核就在用户空间创建几个”自发”的进程。它们之所以被称作是自发进程,是因为这些进程不是通过系统正规的fork机制所创建的。一旦创建完毕自发进程,内核在引导阶段的任务就完成了。不过,处理基本操作的进程还一个都没有创建,而且大多数Linux守护进程也都没有启动。这些任务都是由init来负责的。

执行启动脚本

   到了系统准备运行其启动脚本的时候,我们就能看出它是Linux系统了。尽管它看起来还不很像全部启动完毕的系统,但在接下来的启动过程中已经没有什么”奇妙”步骤了。启动脚本就是普通的shell脚本,由init根据一定的算法来选择并运行它们,尽管算法有时候有些复杂,但还是相当容易理解的。

启动脚本

1.设置计算机名称;
2.设置时区;
3.采用fsck检查磁盘;
4.安装系统的磁盘;
5.从/tmp目录删除旧文件;
6.配置网络接口;
7.启动守护进程和网络服务。

关机

   关机的多种做法:
 1.shutdown命令;
 2.halt和reboot命令;
 3.telinit来改变init的运行级;
 4.poweroff命令关闭电源;

总结

   开机引导部分知识比较晦涩难懂,通过博客记录的方式加深理解,而且也方便后面再次回看复习加深理解。