Linux开机启动(bootstrap)上

Linux开机启动(bootstrap)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

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

最初始阶段

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

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

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

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

实际上,我们可以在多个分区安装boot loader,每个boot loader对应不同的操作系统,在读取MBR的时候选择我们想要启动的boot loader。这就是多操作系统的原理。

小结:BIOS -> MBR -> boot loader -> kernel

kernel

如果我们加载的是Linux kernel,Linux kernel开始工作。kernel会首先预留自己运行所需的内存空间,然后通过驱动程序(driver)检测计算机硬件。这样,操作系统就可以知道自己有哪些硬件可用。随后,kernel会启动一个init进程。它是Linux系统中的1号进程(Linux系统没有0号进程)。到此,kernel就完成了在计算机启动阶段的工作,交接给init来管理。

小结: kernel -> init process

时间: 2024-10-20 02:58:34

Linux开机启动(bootstrap)上的相关文章

Linux开机启动(bootstrap)下

init process (根据boot loader的选项,Linux此时可以进入单用户模式(single user mode).在此模式下,初始脚本还没有开始执行,我们可以检测并修复计算机可能存在的错误) 随后,init会运行一系列的初始脚本(startup scripts),这些脚本是Linux中常见的shell scripts.这些脚本执行如下功能: 设置计算机名称,时区,检测文件系统,挂载硬盘,清空临时文件,设置网络…… 当这些初始脚本,操作系统已经完全准备好了,只是,还没有人可以登录

linux开机启动

开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系统的控制权交给硬盘第一个扇区之后,就

Linux开机启动程序详解

我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤. 加载内核LILO启动之后,如果你选择了Linux作为准备引导的操作系统,第一个被加载的东西就是内核.请记住此时的计算机内存中还不存在任何操作系统,PC(因为它们天然的设计缺陷)也还没有办法存取机器上全部的内存.因此,内核就必须完整地加载到可用RAM的第一个兆字节之内.为了实现这个目的,内核是被压缩了的.这个文件的头部包含着

Linux开机启动过程分析

Linux开机启动过程分析 开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程.分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径. 启动第一步--加载BIOS 当 你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关 信息.设备启动顺序信息.硬盘信息.内存信息.时钟信息.PnP特性等等.在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了.在BIOS将系 统

linux开机启动步骤详解

linux开机启动简单流程图如下: 一.BIOS 加电自检 按下电源开关,电脑会首先启动BIOS(基本输入输出系统),BIOS一般是集成在主板上的. BIOS主要做如下工作: 1.检测连接硬件,比如显卡,内存,磁盘等等,检测的目的是以后把这些设备信息提供给操作系统: 2.寻找启动磁盘,可以在BIOS开机启动菜单菜单里设置以哪个设备启动系统.比如:光驱,硬盘,网络等等,这个菜单可以设置多个选项,依照设置次序在设备上寻找启动信息: 3.找到了启动硬盘,接着BIOS就会在磁盘上找启动扇区,再找到内核启

Linux开机启动流程及运行级别和常用组合键 == 第一次所学知识框架==

第一次写经验总结 望体谅 linux开机启动过程总结=简化版 1)  加载bios,获取cpu,内存,硬盘 2)  读取MBR,获取bootloader(grub) 3)  根据grub的内容加载内核 4)  内核执行/sbin/init,根据/etc/inittab完成初始化 5)  init执行 /etc/rc.d/rc.sysinit 6)  启动内核模块,根据/etc/modprobe.conf或/etc/modprobe.d/目录下的的文件来加载模块 7)  根据运行级别不同,init

linux开机启动过程、PATH、过滤一级目录、cd的参数、ls -lrt、命令切割日志

      第二波命令正向我方来袭 :开机启动过程.PATH.过滤一级目录.cd的参数.ls -lrt.命令切割日志 1.1 linux开机启动过程 1.1.1  开机自检(BIOS)-- MBR引导 -- GRUB菜单 -- 加载内核(kernel)-- 运行INIT进程 -- 读取/etc/inittab配置文件 -- 执行/etc/rc.sysinit脚本(初始化脚本,如设置ip,hostname) -- 执行/etc/rc.d/rc(根据运行级别开机自启的软件)脚本 -- 启动/sbin

Linux 开机启动顺序及一些常见无法开机情况排错(centos6)

Linux开机启动顺序 这个图就很完整的介绍了Linux的开机启动顺序下面我就跟大家详细介绍下开机的一个启动流程第一步,加载BIOS当你打开计算机电源的时候,计算机就会首先加载BIOS信息,也就是所谓的加电自检.由此可见BIOS信息是如此的重要,计算机必须首先就找到它.这是因为BIOS中包含了CPU的相关信息.硬盘信息.内存信息.时钟信息.PnP特性等等.加电自检主要由硬件的部分来完成,BIOS被设计为用来初始化硬件组成,POST作为BIOS的组成部分,用于检验电脑硬件基本功能是否正常.如果PO

Linux开机启动文件rc.local无法执行怎么办?

rc.local是Linux系统中的一个重要的开机启动文件,每次开机都要执行这个文件.但是有一些用户的Linux系统无法执行这个文件,并导致了一系列的问题.遇到这个问题我们应该怎么办呢? 在Linux系统中,有一个重要的开机自动启动脚本文件: /etc/rc.local--->/etc/rc.d/rc.local 不小心删除了,然后重新创建了一个,但问题出来了,无法自动执行了. 原因: 开机启动的/etc/rc.d/rc3.d/ 文件夹下的链文件失去效应了,修改下即可. 解决方法: 把/etc/