Linux操作系统的启动

最近一直在看0.12版本的内核,一直想实现一个简单的多任务内核,发现还真得先了解linux操作系统的启动过程。

1.BIOS

开机程序被写入ROM当中,计算机通电之后的第一件事就是读取它。

这块芯片里的程序叫做基本输入输出系统,简称BIOS

1.1硬件自检

检查计算机硬件能否满足运行的基本条件,这叫做硬件自检

1.2启动顺序

硬件自检完成之后,BIOS就把控制权转交给下一阶段的启动程序。

这时,BIOS需要知道,”下一阶段的启动程序“具体放在那里。也就是说,BIOS需要有一个外部存储设备的排序,排在最前面的设备就是优先转交控制权的设备,这中排序叫做启动排序。

2.主引导记录

BIOS按照启动顺序,把控制权转交给排在第一位的存储设备,这是计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55AA表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权转交给启动顺序下一个设备,这前512个字节,就叫做主引导记录(MBR)

3.硬盘启动

4.操作系统

控制权转交给操作系统后,操作系统的内核首先被载入

要注意的几点:

1)BIOS是通过INT 13中断来读取MBR的

2)BIOS会加载MBR到内存的0x7C00处:PC机在加电,ROM BIOS自检之后,引导扇区由BIOS加载到0x7C00处,然后将自己移动到内存0x90000处

总结:PC电源打开之后,80x86结构的CPU将自动进入实模式,并从地址0xFFF0开始自动执行程序代码,这个地址通常是ROM-BIOS中的地址。PC的BIOS将执行某些系统的检测(硬件自检),并在物理地址0处开始初始化中断向量。此后,它将启动设备的第一个扇区(引导扇区,512B)读入内存绝对地址0x7c00处,并跳转到这个地方执行。

参考文章:

http://www.ruanyifeng.com/blog/2013/02/booting.html

Linux操作系统的启动

时间: 2024-07-31 05:22:32

Linux操作系统的启动的相关文章

linux操作系统的启动流程--学生作业

首先,先不急着将启动流程,,先说下linux操作系统的相关知识 一:linux的组成部分: 内核+根(/)文件系统 1)内核: 存放位置 centos6的位置是 /boot 目录下的"vmlinuz-2.6.32-573.12.1.el6.x86_64" "2.6.32"是版本号:"573.12.1"是release号.内核的作用是负责核心的内存管理.进程管理.网络协议栈.文件系统.驱动程序.安全功能.linux内核是单内核设计,但是他支持多模块

Linux操作系统的LILO详解

LILO是一个在Linux环境编写的Boot Loader程序(所以安装和配置它都要在Linux下).它的主要功能就是引导Linux操作系统的启动.但是它不仅可以引导Linux,它还可以引导其他操作系统,如DOS,WINDOWS等等.它不但可以作为Linux分区的引导扇区内的启动程序,还可以放入MRB中完全控制Boot Loadr的全过程.下面让我们看看几种典型情况下硬盘的主引导扇区和各个分区的引导扇区内程序的内容. (1)计算机上只装了DOS一个操作系统 这种情况和刚才介绍的DOS硬盘启动相对

第三章 Linux操作系统的安装

第三章 Linux操作系统的安装 因为笔者一直都是使用CentOS,所以这次安装系统也是基于CentOS的安装.把光盘插入光驱,设置bios光驱启动.进入光盘的欢迎界面. 其中有两个选项,可以直接按回车,也可以在当前界面下输入 linux text 按回车.前者是图形下安装,可以动鼠标的,后者是纯文字形式的.建议初学者用前者安装.直接回车后,出现一下界面: 这一步是要提示你是否要校验光盘,目的是看看光盘中的安装包是否完整或者是否被人改动过,一般情况下,如果是正规的光盘不需要做这一步操作,因为太费

#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构: Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核: 从硬盘存储和启动操作系统的角度: Linux的系统组成:内核 + 根文件系统(rootfs) 内核功能:进程管理,文件系统管理,内存管理,网络协议,驱动程序,安全功能,... Linux系统的系统运行环境可以分为两部分: 内和空间:内核代码(系统调用) 就是内核进程占用的CPU和内存资源的总和: 用户空间:应用程序(进程或线程)

Hyper-v 2016 Linux安全启动

Hyper-v 2016 Linux安全启动 Windows Server 2016中的安全启动是一个很好的系统设计,用以确保操作系统的加载工具没有被篡改.对于防止计算机启动进入操作系统之前被恶意代码被注入,安全启动可以是一个很好的防御措施. 安全的引导结合UEFI的加密功能增强引导和处理能力.加密密钥存储在固件.当UEFI要求启动一个操作系统加载程序时,它可以检查操作系统加载程序的加密签名,如果有的话, 针对它知道签名密钥.如果镜像已与可验证密钥签名,UEFI将允许它启动.否则,停止整个启动过

Linux开机启动程序详解

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

Linux开机启动(bootstrap)上

Linux开机启动(bootstrap) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机开机是一个神秘的过程.我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面.然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息.了解计算机开机过程有助于我们修复开机可能出现的问题. 最初始阶段 当我们打开计算机电源,计算机会自动从主板的BIOS(Basic

Linux操作系统的管理(虚拟机的概述)三

在我们了解linux操作系统之前我们首先要先知道虚拟机的运行架构,我们在初学linux的时候,如果在我们的真实PC上做操作你就会发现,你很多时候都是在重装系统的状态下,当然你也可以在linux操作系统上去装一个KVM虚拟机,不过你确定你要放弃windows操作系统吗?  所以为了让我们做实验的时候能够方便了解我们就把我们的linux操作系统乖乖的装在虚拟机上吧. 在使用虚拟机之前我们得先知道虚拟机是个什么工具,首先在我们当前这些X86平台上每个平台上只能运行一个,现在的服务器也是这种架构的多,在

Linux 的启动流程

作者: 阮一峰 半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用. 那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程. 这个部分比较有意思.因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多:但是,一旦进入操作系统,程序员几乎可以定制所有方面.所以,这个部分与程序员的关系更密切. 我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统.下面的内容针对的是Deb