linux引导

GNU GRUB(简称“GRUB”)是一个来自GNU项目的启动引导程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

mbr是硬盘的主引导记录,属于引导区

内核简介

内核(kernel),是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。

内核是操作系统最基本的部分。它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间。直接对硬件操作是非常复杂的,所以内核通常提供一种硬件抽象的方法来完成这些操作。硬件抽象隐藏了复杂性,为应用软件和硬件提供了一套简洁,统一的接口,使程序设计更为简单。

严格地说,内核并不是计算机系统中必要的组成部分。程序可以直接地被调入计算机中执行,这样的设计说明了设计者不希望提供任何硬件抽象和操作系统的支持,它常见于早期计算机系统的设计中。最终,一些辅助性程序,例如程序加载器和调试器,被设计到机器核心当中,或者固化在只读存储器里。这些变化发生时,操作系统内核的概念就渐渐明晰起来了。

BIOS是英文"Basic Input Output System"的缩略语,直译过来后中文名称就是"基本输入输出系统"。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

DOS,是磁盘操作系统(Disk Operating System)英文的缩写,是个人计算机上的一类操作系统。

BOOT,系统引导文件,在根目录下,bios设置中主要用于设置系统启动的地方,比如可以设置从硬盘,光驱或U盘启动。

Mbr和grub引导系统

在装系统的时候,会有提示为系统装载什么样的引导程序,其中就有一个grub引导程序。而系统装完后,启动的时候,mbr会直接载入grub引导程序。

  由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR)。

  装载GRUB和操作系统的过程,包括以下几个操作步骤:

  装载记录

  基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。即mbr载入grub的过程。

  装载Grub

这第二引导装载程序实际上是引出更高级的功能,以允许用户装载一个特定的操作系统。所以有多种引导装载程序,grub只是其中一种。这里强调指出,grub只是mbr的升级版,补充完成mbr所做不了的事情,其实他们的本质都一样,都是引导程序。也可以这么理解,mbr是唯一的,基于mbr之上的引导程序不唯一。而为什么在字节大小一样的条件下,mbr不能做的事情,grub却能够做到,这一点我还在研究中。Grub高级在什么地方?

知识点补充:从定义上看,mbr是磁盘上的一小段扇区,而grub是一段程序,虽然他们都是起到了引导系统的作用,但归根结底本质是不一样的。我们可以这样理解,mbr是在起到引导作用的同时,用来存放代码的空间,而grub则是单纯的引导程序,程序一执行,bios就将系统对内核的操作权限交给了??作系统,接下来的事情就跟grub这些引导程序没有了半毛钱的关系。(我说的若是有错,希望高手看到,帮忙指出啊。)

装载系统

简单的说,就是把机器的控制权移交给操作系统。

  不同的是,微软操作系统都是使用一种称为链式装载的引导方法来启动的,主引导记录仅仅是简单地指向操作系统所在分区的第一个扇区。

  设备名称

IDE硬盘用hd开始,SCSI硬盘用sd开头。软盘用fd开头。命名和linux不大一样。是从0算起。

  (hd0,0)。表示C盘。

  (hd0,4)。表示D盘。当然这里指的是(第一个逻辑分区,如果D盘也是主分区,应该写成hd0,1)

  系统的第一个硬盘驱动器表示成(hd0),其上的第一个分区表示为(hd0,0),也就是说对于硬盘,采用(hdx,y)的形式来表示,x、y都是从0开始计数的,x表示硬盘号,y表示分区号。

由于主分区只能有四个,所以第一硬盘的四个主分区分别用(hd0,0)~(hd0,3)来表示;逻辑分区则从(hd0,4)开始算,即第一逻辑分区用(hd0,4),第二逻辑分区用(hd0,5)来表示,依次类推。 一般机子的硬盘都是一个主分区,其余是逻辑分区。因此C盘用(hd0,0),D盘用(hd0,4)来表示。

光盘用(cd)表示,第一软驱用(fd0)表示。

  文件的表示:( , ) /path/to/file

下面这段话是我从别处粘贴过来的,有兴趣可以研究一下。

因为BIOS很小,功能有限,为了完成加载操作系统的功能,就产生了mbr; bios检测到一个硬盘后,将硬盘的0柱面、0磁头、1扇区的内容经过简单判断后, 至内存中的指定位置,然后跳转至这个位置,开始从这个位置运行; MBR,全称为Master Boot Record,即硬盘的主引导记录。 为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引导记录;而狭义的MBR仅指引导程序而言。 硬盘的0柱面、0磁头、1扇区称为主引导扇区(也叫主引导记录MBR)。它由三个部分组成,主引导程序、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)。在总共512字节的主引导扇区里主引导程序(boot loader)占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有 多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。 !!!!!!!!!!!!!!!!!!!!! 一般,会将mbr功能的引导代码与mbr扇区混淆; 其实,grub是直接写进mbr硬盘的主引导记录中的,计算机BIOS 在启动时,按照预定的方式,将mbr内的代码加载至内存指定位置, 然后跳转至那里,mbr的代码就开始运行了! 如果将grub写入mbr,bios就引导grub; 将winxp的引导代码写入mbr,bios就引导ntldr; 将dos的引导代码写入mbr,bios就引导dos; 总之,mbr是用来存放,由bios加载、运行的一小段代码; 代码的功能,由他们自己实现(如,在引导dos之前,先运行一个病毒, 这就是引导型病毒); dos下执行grub.exe,其实,就是由dos执行grub.exe来完成bios加载引导代码的功能, 实现引导的; 简单地说,grub.exe 是dos下的可执行程序,由dos运行; grub是引导代码,由bios加载至内存(指定位置)开始执行; 他们最终实现的功能是一样的(都是将引导代码加载至内存指定位置,并运行)。 另外,mbr是独立于操作系统的,地位与分区表同级,所以,格式化任何分区内都影响不到他, 包括ghost备份,还原。

时间: 2024-11-17 07:33:35

linux引导的相关文章

Linux 引导过程内幕

http://www.ibm.com/developerworks/cn/linux/l-linuxboot/ 早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行必要的简化. 让我们先从高级的视角来查看 Linux 引导过程,这样就可以看到整个过程的全貌了.然后将回顾一下在各个步骤到底发生了什么.在整个过程中,参考一下内核源代码可以帮助我们更好地了

linux引导流程

本章重点: 1.linux引导流程 2.linux运行级别 3.linux启动服务管理 4.GRUB配置与应用 5.启动故障分析解决 linux启动流程 1.固件(fireware):固话在硬件上的程序,主要有CMOS/BIOS 2.post加电自检, 1.检测硬件信息,如cpu,内存,等硬件信息是否工作正常. 2.安全设置 3.可引导介质列表 4.可引导介质的搜索程序 5.电源管理 6.启动细节信息 3.读取MBR(master boot record)主引导记录 MBR位于0柱头0磁头1扇区

linux引导流程解析

三:linux引导流程解析 date 当前系统硬件时钟 hwclock 固件(介于硬件和软件之间的)时钟 ---->一般系统时钟和固件时钟是同步的 hwclock --hctosys 同步时钟 手动修改系统当前时间: date 040617032015.38 (2015-04-06 17:03:38) 手动修改固件时间:(man hwclock可以查看) hwclock --set --date="4/6/15 17:06:40" linux的pc server 一般用的是 CM

(转)嵌入式Linux引导过程-----从BootRom到Xloader

--by FeCen 在开始看Xloader_Entry的代码之前,我想先总结一下从芯片上电到开始运行Xloader的代码的过程,这是我目前理解的一个过程,可能有所出入,待以后继续完善.当系统上电之后,首先会将PC寄存器设置成BootRom里面的代码对应的一个地址.BootRom是芯片内部集成的一块很小的存储区,里面一般会固化一段启动代码.至于BootRom所占用的地址空间,每个芯片的定义可能会有所不同,具体的可以参考芯片的用户手册中的Memory Map部分的说明.在spearplus中,Bo

Linux引导流程(第二版)

Linux引导流程 固件 按下电源的第一个启动步骤:启动固件firmware → POST加电自检 检查硬件的加载情况,如,键盘,内存等. 跟操作系统无关.但不同的硬件平台,固件不同; 当你新添加了一块硬盘,第一步就是应该首先进入到固件模式,检测固件是否已经识别出这块硬盘! 固件最重要的作用,读取MBR -> ... 自举程序 读取MBR[master boot record,主引导记录] [MBR位于位于磁盘的0柱面,0磁头,1扇区 如图:] 进入这一步骤的目的是读取MBR中的数据[MBR保存

Linux引导启动程序 - boot

主要描述 boot/目录中的三个汇编代码文件,见列表 3-1 所示.正如在前一章中提到的,这三个 文件虽然都是汇编程序,但却使用了两种语法格式.bootsect.s 和 setup.s 采用近似于 Intel 的汇编语言语法,需要使用 Intel  8086 汇编编译器和连接器 as86 和ld86,而 head.s 则使用 GNU 的汇编程序格式,并且运行在保护模式下,需要用 GNU 的 as 进行编译.这是一种 AT&T 语法的汇编语言程序. 使用两种编译器的主要原因是由于对于 Intel 

Linux引导与服务控制

一.Linux引导过程 1.引导过程 (1)开机自检:根据主板BIOS对CPU.内存等进行检测,成功后根据启动顺序移动系统控制权 (2)MBR引导:根据硬盘第1个扇区中MBR(主引导记录)的设置,将系统控制权传给包含系统的分区, 或者根据引导信息调用启动菜单(如GRUB) (3)GRUB菜单:显示启动菜单用户选择,根据选项(或默认值)加载Linux内核文件,将控制权交于内核 (4)加载Linux内核:内核加载,掌控整个Linux系统运行过程:/boot存放内核文件 (5)init进程初始化:读取

【转】Linux 高级的视角来查看Linux引导过程

[原文]https://www.toutiao.com/i6594210975480545800/ 1.概述 图 1 是我们在20,000 英尺的高度看到的视图. 当系统首次引导时,或系统被重置时,处理器会执行一个位于已知位置处的代码.在个人计算机(PC)中,这个位置在基本输入/输出系统(BIOS)中,它保存在主板上的闪存中.嵌入式系统中的中央处理单元(CPU)会调用这个重置向量来启动一个位于闪存/ROM中的已知地址处的程序.在这两种情况下,结果都是相同的.因为PC提供了很多灵活性,BIOS必须

win10和linux引导问题(没有系统选择界面)

由于最近学习嵌入式和c模块化编程,需要使用Linux系统,但是编程之外,WIN10还是主力系统,决定装双系统. 往常一样,百度装双系统方法,网上千篇一律,大都一个套路. 首先,WIN10 下,新开一个分区,用于装LINUX,然后在windows下,将新建的分区驱动删除.也就是有一个新分区,但是WIN10不显示. 之后的一些步骤就不详述,主要讨论问题.重点总结: 1.网上教程一般是将LINUX系统写入U盘,然后进入BIOS界面,学则UEFI模式启动U盘装系统.按这个步骤存在一个很大的问题,新安装的

linux引导过程

首先申明一下,这儿的引导过程是比较简单的,并不涉及到kernel里面的详细引导步骤,希望对刚刚学习linux的朋友有帮助. 1.加电自检 这基本上是所有计算机开机都需要经过的步骤了,当计算机加电后它首先执行BIOS,BIOS对计算机硬件进行检测,当检测通过便完成了硬件的启动.当自检完成后BIOS按照设置的启动顺序寻找系统分区,并读入系统引导扇区,并将系统控制权交给引导程序. 2.mbr或gpt引导 mbr和gpt是什么在这儿就不做过多的介绍了,相信了解过计算机的朋友都知道.系统引导程序主要是把系