linux的启动过程详解

简介:
linux的启动过程详解
一 启动概要
1BIOS自检
2 读取MBR的信息(MBR可以是lilo,grub,spfdisk等)
3 加载内核
4 内核执行init程序,并取得run-level信息
5 init执行/etc/rc.d/rc.sysinit
6 执行/etc/rc.d/rc.X.d/[KS]
7 init执行相应的run-level的脚本
8 init执行/etc/rc.d/rc.local脚本
9 执行/bin/login程序,并等待使用者登陆
10 登陆之后开始以shell掌控主机
 
二 启动详解
1 BIOS自检
    计算机在接通电源之后首先进行BIOS自检,即我们通常所说的POST(Power On Self Test)。自检完成后,然后根据BIOS中设置的引导顺序从硬盘、软盘、光盘引导,通常我们使用硬盘来引导系统。在硬盘的第一个扇区(0磁道0柱面1扇区)有一段代码叫做MBR(即主引导记录),当MBR被加载到内存中后,BIOS将控制权交给MBR。
2 读取MBR的信息(MBR可能是lilo、grub、spfdisk等)
    MBR是一段可执行代码,大小为512个字节,该代码的作用是告诉我们的系统如何引导linux,例如“kernel /boot/vmlinuz-2.6.9.-5.EL ro root=LABEL=/”,这是一段grub,vmliunz的是可引导的压缩内核,grub将告诉系统如何加载vmliunz。通常RedHat使用grub来作为MBR。这是因为grub具有命令交互界面,并能过支持网络引导。(注意,最好为你的机器设置BIOS密码和grub密码,这样会提高系统的安全性)
3 加载内核
    当内核映像被加载到内存之后,内核阶段就开始了,内核映像并不是一个可执行的内核,而是一个经过压缩的内核映像。通常它是一个zImage(较小的内核,小于512K)或bzImage(较大的内核,大于512K)。之后要对内核进行解压,并放入到高端内存当中。
4 执行init进程,并取得run-level信息
    当内核完成引导之后,接下来加载init进程。init进程是系统所有进程的起点,它的进程号为1,init进程是所有进程的发起者和控制者。如果init进程出现了问题,那么系统将不可用。init的进程的作用有两个,一是扮演进程之父,系统中任何进程都作为它的子进程并以它作为参照;二是通过inittab文件管理run-level运行级别。
5 执行/etc/rc.d/rc.sysinit
    /etc/rc.d/rc.sysinit是init执行的第一个脚本,它的作用是初始化linux系统,包括初始化变量、配置网络、检查并修复文件系统等操作。为什么第一个执行的是这个脚本呢?因为在/etc/inittab文件中定义了。
6 执行/etc/rc.d/rcX.d/[KS]
    init进程根据inittab文件确定了系统的启动级别,事实上,每个级别都有每个级别命令脚本,这些脚本保存在/etc/rc.d这个目录下,在这个目录下,你会发现有诸如rc3.d、rc5.d等这些文件夹,这些文件夹存放着该级别所需要运行的命令脚本。
7 init执行相应的run-level的脚本
    rcx.d中的脚本有的是以S开头,有的是以K开头,脚本执行的顺序是从小到大首先终止以K开头的服务,然后启动以S开头的服务。
8 执行rc.lcoal脚本,一般情况下,/etc/rc.d/rc.local是作为初始化脚本的最后一个文件,我们可以在这个文件中添加一些执行的脚本命令,比如说crond服务、httpd服务随机器启动时而启动等。
9 执行/bin/login程序
    login程序会提示用户输入用户名和密码,并会检查输入的正确与否,正确将为使用者初始化环境,并将控制权交给shell。

 


本文转自holy2009 51CTO博客,原文链接:http://blog.51cto.com/holy2010/320100


相关文章
|
Linux C语言
RISC-V Linux汇编启动过程分析
RISC-V Linux汇编启动过程分析
|
3月前
|
Linux Shell 网络安全
Linux 系统启动过程
Linux 系统启动过程
69 2
|
1月前
|
搜索推荐 Linux
深入理解Linux操作系统的启动过程
本文旨在揭示Linux操作系统从开机到完全启动的神秘面纱,通过逐步解析BIOS、引导加载程序、内核初始化等关键步骤,帮助读者建立对Linux启动流程的清晰认识。我们将探讨如何自定义和优化这一过程,以实现更高效、更稳定的系统运行。
|
3月前
|
存储 Linux Shell
深入理解Linux操作系统的启动过程
【10月更文挑战第21天】本文将深入浅出地介绍Linux操作系统的启动过程,包括BIOS、引导加载程序、内核初始化和系统服务启动等环节。通过阅读本文,您将了解到Linux启动过程中的关键步骤和相关概念,以及如何优化启动速度。
|
3月前
|
安全 Linux
探索Linux操作系统的启动过程
在这篇文章中,我们将深入探讨Linux系统的启动流程,从电源开启到登录界面呈现的每一个步骤。我们将揭示BIOS、引导加载器、内核以及初始化进程如何协同工作,使Linux系统顺利启动。通过了解这些过程,读者将能更好地理解Linux系统的工作原理,并为可能出现的启动问题提供解决思路。
120 14
|
3月前
|
安全 Ubuntu Linux
Linux系统无法启动或启动过程中卡住
【10月更文挑战第5天】
750 3
|
5月前
|
NoSQL Linux
Linux 0.11启动过程分析(一)
Linux 0.11启动过程分析(一)
53 1
|
5月前
|
Linux
探索Linux操作系统的启动过程
【8月更文挑战第31天】本文将深入探讨Linux系统从按下电源键到登录界面出现之间的神秘世界。我们将一步步揭开内核加载、初始化进程启动和系统服务运行的面纱,同时通过实际代码示例,揭示这一切是如何精妙地编织在一起的。无论你是系统管理员还是对操作系统感兴趣的爱好者,这篇文章都将给你带来新的视角和深刻的见解。
|
5月前
|
存储 Linux 调度
深入理解Linux操作系统的启动过程
【8月更文挑战第31天】本文将深入探讨Linux操作系统的启动过程,包括BIOS、内核、init进程等关键步骤。我们将通过实际代码示例,揭示Linux启动过程中的奥秘,帮助读者更好地理解和掌握Linux系统。
|
5月前
|
存储 Linux 数据库
探索Linux操作系统的启动过程
【8月更文挑战第24天】本文将带你深入了解Linux操作系统从开机到用户登录的全过程。我们将逐步解析BIOS/UEFI初始化、引导加载器(Bootloader)的作用、内核启动以及系统运行级别和初始化进程。通过阅读本文,你将获得对Linux启动流程的清晰认识,并能够理解每个阶段的关键任务。