Linux 引导过程

简介:

引导过程的步骤


     Linux系统典型的引导过程由下面6个不同的阶段组成:

           加载并初始化内核

           检测和配置设备

           创建内核线程

           操作员干预

           执行系统启动脚本

          多用户模式运行

       系统管理员对以上大多数步骤几乎没有什么控制权。我们通过编辑系统启动脚本来影响大多数的引导配置。


       初始化内核

     

       Linux内核本身就是一个程序,系统引导过程中的第一项任务就是把这个程序载入内存,以便执行它。内核的路径名通常是/vmlinuz或者/boot/vmlinuz。

       Linux系统实现了一种有两个阶段的加载过程。在第一阶段中,系统ROM把一个小的引导程序从磁盘载入到内存中。然后,这个程序再安排载入内核。

       内核执行内存检测来确定有多少RAM可用。内核的一些内部数据结构按静态方式分配其内存量,因此,当内核启动时,它就为自己划分出一块固定大小的

       实存空间。这块空间保留给内核使用,用户级进程不能使用。内核在控制台上打印一条消息,报告物理内存的总量以及用户进程可用的内存量。

       

      配置硬件


      内核执行的第一批任务之一包括检查机器的环境以确定机器有什么硬件。当您为自己的系统构建内核时,要好俗内核,它会找到哪些硬件设备。当内核开始执行时,它

      试图找到并初始化已经告诉它的每一个设备。大多数内核为它们所找到的每个设备打印一行专门信息。现在的发行版本所包含的内核能够在绝大都Sohu机器配置上运行。

      只要做最少量的定制。

      在内核配置期间提供的设备信息经常不够明确。在这样的情况下,内核通过检测设备总线和向适当的驱动程序寻求信息来尝试它所需要的其他信息。那些没有检测到设备

      的驱动程序或者那些没有响应探测的驱动程序将被禁用。如果某个设备后来被连接到系统上,那么还是有可能随时加载或者启动它的驱动程序的。


      内核线程


     一旦完成了基本的初始化任务,内核就在用户空间创建几个“自发”的进程。它们之所以被称作是自发进程,是因为这些进程不是通过系统正规的fork

    机制所创建的。

    自发进程的数量和特性随系统的不同而不同。在Linux上,看不到有PID 0进程。和进程init一起的是几个内存和内核处理进程,这些进程的PID都比较小

    在ps命令的输出中它们的名字都被中括号括了起来。有时候这些进程的名字以一个斜线加一个数字结尾。这个数字表明该线程在哪个处理器上运行,在

    多处理器的系统上会出现这种有意思的情况。

    在所有的这些进程中,只有init是真证完整的用户进程。其他进程实际上都是内核的组成部分,为了调度或者结构上的原因而进行了装扮,使它们看上去

    像是进程罢了。

    一旦创建完毕自发进程,内核在引导阶段的任务就完成了。不过,处理基本操作的进程还一个都没有创建,而且大多数Linux守护进程也没有启动。这个

    任务都是由init来负责的。

    

    操作员干预


     如果系统以单用户模式进行引导,那么在init启动时,内核所给出的命令行标志(single)会通知init实际要引导的是单用户模式。进程init最后会把控制权

    交给sulogin,后者是login的一个“中间但不可控”的特殊版本,它提示用户输入root口令。如果输入的口令正确,系统将产生一个root shell。

    在单用户shell中执行命令的方式和登录到已完全引导的系统上执行命令的方式类似。不过在SUSE、Debian、还有Ubantu系统上,这时通常只安装了root

    分区。为了使用不在/bin、/sbin、或/etc下的程序,用户必须手动安装其他文件系统。

    在许多但用户环境下,文件系统的根目录是按只读方式安装的。如果/tmp是根文件系统的一部分,那么许多要使用临时文件的命令都不能执行。为了解决

    这个问题,必须先把根文件系统以读写方式重新安装,再开始但用户模式的交互操作。下面这条命令通常就能实现这个技巧。

           mount -o remount,rw /

   

    执行启动脚本


       到了系统准备运行其启动脚本的时候,我们就能看出它是Linux系统了。尽管它看起来还不很像全部启动完毕的系统,但在接下来的启动过程中已经没有什么

  “奇妙”步骤了。启动脚本就是普通的shell脚本,由init根据移动的算法选择并运行它们,尽管算法有时候有些复杂,但还是箱单容易理解的。

       启动脚本的处理、馈送和分类有其自己的专门一节来介绍。

       

       多用户运行


       在初始化脚本运行过以后,系统就是完全运行的系统了,不过现在用户还不能登录进来。为了在某个特定终端上接受用户登录,必须有一个getty进程监听终端

       或者控制台。init直接生成这些getty进程,完成引导过程。init还负责生成图形登录系统,例如xdm或gdm。

本文转自服务器运维博客51CTO博客,原文链接http://blog.51cto.com/shamereedwine/2072952如需转载请自行联系原作者

neijiade10000
相关文章
|
Linux 内存技术
Linux 引导过程内幕
早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化。
995 0
|
Linux
Linux引导过程和GRUB引导器
作为DBA,就像需要深入了解Oracle启动过程一样,懂得Linux系统的引导过程对今后的故障诊断也是很有帮助的。 先看看如下linux引导过程图: 下面是引导过程的基本阶段: 1.  1.系统加载并运行引导加载程序。
1001 0
|
存储 Kubernetes 安全
虚拟机测试Windows Server 2016原地升级2019,应用和数据完美保留
Windows Server 2016可以无缝升级到2019版本,确保应用程序和数据在原地升级过程中完整保留。
1814 0
|
新零售 Web App开发
瀑布流
引用:http://baike.baidu.com/view/7151782.htm 瀑布流是什么   瀑布流,又称瀑布流式布局。是目前比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着    瀑布流效果 页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部。
1274 0
全球首例twitter杀人案的背后真相
嫌疑犯布莱克      twitter自问世以来便成为了时代的宠儿,什么奥巴马竞选、杰克逊逝世、伊朗选举事件等等,更是把这个网上叽歪工具发扬广大。凡事有利有弊,twitter一不小心竟成了纽约一起枪杀案的导火索。
951 0
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1574 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1941 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践