grub原理及使用详解

GRUB 0.97 0.介绍 grub 0.97 又称为GRUB Legacy 目前CentOS,Gentoo仍然使用GRUB 0.97 配置文件为grub.conf menu.lst 注意(hdX,Y)是第X块硬盘,第Y个分区 X,Y均从0开始计数 1.将grub安装到U盘上 $ mount /dev/sdb1 /media $ grub-install 阅读详情

        grub原理及使用详解

转载请注明出处:http://blog.youkuaiyun.com/rosetta

         实验环境VMware+CentOS5.4。

         本文将会介绍Grub的基础知识、Grub的完整安装引导过程、Linux硬盘分区基本知识等。

         grub(GrandUnified Boot Loader)是有名的引导内核程序(另外一款比较有名的是LILO,嵌入式环境使用U-boot、bootloader),它支持多种硬盘分区类型加载(FAT,ext2,ext3,minix,FFS等),支持多系统引导等。现在出的grub2是grub的升级版,提供更多的功能,但一个grub能实现内核正确的引导已经足够了,按这样发展下去,很多开源软件虽然支持的功能越来越强大,但对应的代码量也是非常庞大,这就加大了新人对其学习的难度,也不适于学习。话又说过来,相应软件的原始版本一般都会保留下载,所以可以找其最初始的版本学习。扯远了……

         当计算机加电自检后,ROM BIOS加载MBR(主引导扇区,即硬盘第一扇区)中的代码到内存中,这个扇区一共512字节,前446字节内容存放grub(bootloader)的关键引导程序,接着64字节放置硬盘分区表DPT(Disk Partition Table),一共四可以有四个主分区,占64个字节,这也是为什么主分区最多只有四个的原因,最后2个字节是固定的标志0x55AA。当BIOS把引导程序加载到内存后就把控制权交给grub,而后grub的剩余代码将完成其它代码的加载和搬移以及文件系统初始化查找等工作,最终加载内核映像文件,从而把控制权交给真正的内核运行。

         在开始讲grub安装之前首先要了解下硬盘的基础知识和Linux硬盘命名规则。

         硬盘的基本存储单位为扇区(Sector),每个扇区一般为512bytes。一个硬盘有多个盘片,每个盘片有两面,每面按照同心圆划分为若干磁道,每个磁道划分为若干扇区。比如一个硬盘有2个盘片,每个盘面分65536磁道,每个磁道分1024个扇区,那么硬盘容量就是2盘片*2盘面*65536磁道*1024扇区*512字节 = 128GB。硬盘的主设备号为3。其它设备的主设备号为:1:内存、2:磁盘、3:硬盘、4:ttyx、5:tty、6:并行口、7非命名管道

         硬盘分IDE和SCSI两种总线类型,linux下可通过fdisk –l命令查看硬盘属于哪种。Linux下对IDE的设备是以hd命名的,后面加字母a,b,c表示第几块,比如第一个ide设备是hda,第二个是hdb;SCSI以sd命令,同样第一个设备是sda,第二个是sdb。而hda1代表第一块硬盘的第一个分区,硬盘最多可以有四个主分区,数字为1~4,从5 开始就是逻辑分区了,一般情况只有一个主分区用来引导系统,这个分区在windows下来说是C盘,而在linux为hda1或sda1,D,E,F 盘在linux分别为hda5,had6,hda7。

      在grub中命名硬盘的方式又有不同,可以打开grub的配置文件/boot/grub/grub.conf查看(即menu.lst文件,这只不过是grub.conf的一个快捷方式,Linux下称符号链接,可通过ln –s menu.lst grub.conf命令完成)。

default=2

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

titleCentOS (2.6.27)

    root (hdX,Y)

    kernel /vmlinuz-2.6.27 roroot=/dev/VolGroup00/LogVol00 rhgb quiet

    initrd /initrd-2.6.27.img

其中root (hdX,Y)表示grub的安装位置,X表示第几块硬盘,Y表示第几分区,X、Y都是从0开始编号,比如(hd0,0)表示第1块硬盘第1个分区。即这条命令表示把grub安装在第1块硬盘的第1分区,kernel指名了需要加载的内核映像文件,kernel后的root表示该内核文件位置。在grub中不区分IDE和SCSI,均以hd开始。

         现在开始新安装了,可以看看原来的grub版本信息。


         从opensource.org或chinaunix下载中心下载grub源码grub-0.97.tar.gz进行安装。

 377  tar -zxvf grub-0.97.tar.gz

 378  cd grub-0.97

 379  ./configure

 380  make

 381  make install

         编译完成后主要生成的主要文件这么几个:

文件所在目录:/boot/grub。

grub:主程序。

stage1:源码目录stage1/s,汇编后便成了一个512字节的img,被写在硬盘的0面0道第1    扇区,即硬盘的主引导扇区。(这512字节还包括分区表DPT以及主引导扇区标志“55AA”)。

*_tage1_5:文件系统的解释代码,根据/boot分区(或/boot所在分区)的具体文件系统类型  而异,如:ext3分区的话就是e2fs_stage1_5。在stage1_5没有被加载以前,系统无法        识别任何文件系统(但是可以通过BIOS中断方式INT 13h读取磁盘指定扇区的内容)。

stage2:grub核心部分。它运行后,会把系统切入保护模式,设置好C运行环境然后寻找         menulist,如果没有的话就执行一个shell,等待我们输入命令。

         grub.conf(menu.lst):grub配置文件

         我执行makeinstall后,发现原来的grub文件并没有替换成刚编译出来的,所以在当前目录进行了手动拷贝。

 387  cp stage1/stage1 /boot/grub/

 388  cp stage2/stage2 /boot/grub

 389  cp stage2/*_stage1_5/boot/grub

         做完这些后执行./grub/grub,然后在grub的shell命令界面执行如图所示命令:


  执行find /grub/menu.lst不一定成功,可以试下find /boot/grub/menu.lst或find /menu.lst,总有一条是对的。

最后执行reboot重启系统。

如果上面这步在make install后忘了做,没关系,在系统启动时可以再配置。

一切安装完成后,重启看下新的grub


     


grub 0.97 在操作系统启动的初期,首先将PC指向磁盘的第一个块。这个区域大小为512字节,被称作MBR。这512字节组织性很好,包含了一些磁盘的基本参数和一些用于启动的代码。当然启动初期和文件系统是毫不相干的,因为文件系统和启动存在一个鸡生蛋和蛋生鸡的问题。举个很简单的例子,系统启动需要通过磁盘读取相应的执行文件,假如需要通文件系统来读取系统加载文件的话,那么先要找到文件系统以及文件系统依赖项。然而要找到文件 阅读详情

相关推荐

札记:grub2原理、应用与系统急救恢复

**************************** ***grub主要文件及基本原理*** **************************** 1、启动时用到的脚本 /boot/grub/grub.cfg 该脚本是自动生成的! 另外,其他文件都是各种特色功能模块 2、生成grub.cfg参考的配置文件: A:/etc/grub.d文件夹下的数字编号开头的文件   各文件

byhongda的专栏 822

Grub命令使用详解

命令索引: background 设置图形模式下的背景色。 blocklist 输出文件的块清单标记。 boot 引导已加载的操作系统或扇区链式加载器。 bootp 通过BOOTP初试化网络设备。 cat 显示指定文件的内容。 chainloader 加载扇区链式加载器。 clear 清屏幕。 cmp 比较两个文件, 并且报告两者之间的不同的信息。 color 改变菜单的颜色。 configfile 将指定文件作

上善若水 的专栏 1万+

告别grub rescue循环:一次搞懂Ubuntu/Win双系统引导修复与update-grub原理

本文深入解析Ubuntu/Win双系统引导修复的核心原理,从GRUB引导流程、/boot/grub目录结构到update-grub和grub-install的底层操作,帮助用户彻底解决grub rescue循环问题。通过预防性维护和高级诊断技巧,构建健壮的引导系统,告别error: unknown filesystem等常见错误。

weixin_28704565的博客 413

[Linux] GRUB引导 学习笔记(一)

它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。简单来说,BIOS是一个控制电脑中所有输入输出的程序,它可以对主板上的键盘、鼠标、外部接口、频率、电源、磁盘驱动器等方面进行参数控制和调整。Linux常见的引导程序包括LILO、GRUB、GRUB2。假定我们在 msdos1这个分区下发现了grub.cfg文件,则表明Linux安装在这个分区。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。设置GRUB引导系统的根文件系统位置。

爱折腾的技术人 4674

GRUB2 启动配置的工作原理与优先级规则详解

通过这种分离设计,Linux 系统实现了启动配置的模块化管理,简化了多内核环境下的维护工作。(BLS 配置中的显式参数永远优先于全局设置)

weixin_53389944的博客 1178

别光看教程了!手把手带你用STM32F103C8T6最小系统板点亮第一个LED(附完整电路图)

本文详细介绍了如何使用STM32F103C8T6最小系统板点亮第一个LED,从硬件连接到软件开发环境搭建,再到编写和下载程序,手把手教你完成STM32入门的第一步。适合初学者快速上手STM32开发,附完整电路图和代码示例。

weixin_28678831的博客 194

grub知识详解

文章目录1. grub legacy2. 安装 /boot/grub目录:**3. /boot/grub/grub.conf**splashimage背景文件,4. grub加密 1. grub legacy grub: GRand Unified Bootloader grub就是一种老的bootloader grub 0.97: grub legacy grub 2.x: grub2 grub legacy: stage1: mbr第一个扇区(446字节)不足以找到内核(文件系统驱动肯定比446字节大

weixin_45697293的博客 2579

双有源桥(DAB)进阶:EPS调制策略与Matlab/Simulink仿真实践

本文深入探讨了双有源桥(DAB)的扩展移相(EPS)调制策略及其在Matlab/Simulink中的仿真实践。通过分析EPS的两种黄金调制策略——回流功率消除和电流应力优化,结合实际工程案例,展示了如何提升DAB系统的效率和性能。文章还详细介绍了Simulink模型搭建要点和关键仿真结果,为工程师提供了实用的技术参考。

weixin_33734785的博客 484

grub启动流程及原理

GNU GRUB(简称“GRUB”,GRand Unified Bootloader)是一个来自GNU项目的多操作系统启动管理器,它允许用户可以在计算机内同时安装有多个操作系统,比如不同版本的Windows和Linux,并在计算机启动时选择希望运行的操作系统。Grub一直在发展,现在的发行版都用Grub 2了,但是基本的启动引导原理是差不多的,所以还是以传统的Grub为例(在CentOS 5.5上

BOKE 5159

ENU坐标系实战:5分钟搞定无人机导航中的站心坐标转换

本文针对无人机导航中GPS坐标与视觉感知不匹配的定位漂移问题,提供了基于ENU坐标系的实战解决方案。通过Python代码演示了如何快速、精准地实现地心地固坐标与站心坐标之间的转换,并详细解释了转换原理、精度对比及工程优化技巧,帮助开发者从根本上解决局部相对定位不准的难题。

mqtt6iot的博客 552

FPGA:将FIFO封装成AXI接口的IP

封装AXI_stream的接口IP核

m0_46830519的博客 4216

Linux: 深入解析GRUB2引导加载器的核心原理

GRUB2是第二代GRUB引导加载器,它解决了第一代GRUB(现在称为GRUB Legacy)的一些局限性,提供了更强大的功能和更灵活的配置方式。GRUB2不仅支持多种操作系统,还支持多种文件系统和设备类型,成为Linux系统中最常见的引导加载器。通过编辑grub.cfg文件,用户可以为不同的启动需求创建自定义启动选项。例如,为特定内核配置不同的启动参数,或为特殊用途创建临时启动项。GRUB2作为现代计算机系统中的重要组成部分,为用户提供了强大且灵活的引导功能。

十年运维开发经验的王义杰在此分享自己的知识和经验 2402

monocle使用sct整合数据integration还是rna中的counts数据 轨迹分析 拟时序

【代码】monocle使用sct整合数据integration还是rna中的counts数据 轨迹分析 拟时序。

生信小博士的博客 1049

【转载】Grub原理

【转载】Grub原理   2011-12-13 08:13:42|  分类: grubdos |字号 订阅 Ps:这是网上转载的grub原理,写的比较详细,但是我个人更倾向于将grub与linux启动故障连载一起讲解,这样就更加容易对原理理解了,当然包括硬盘的一些知识肯定是要的。可是自己本来打算也总结一篇,但是写了三四页才发现自己总结的很烂,于是就放弃了。 近来一

q123456789098的专栏 1191

Chrome DevTools MCP 实战完整教程

本教程介绍了Chrome DevTools MCP(Model Context Protocol)在智能Web测试中的应用。该系统通过MCP协议将Chrome开发者工具能力标准化,并与AI结合,提供了统一的测试解决方案。核心功能包括智能自动化、深度调试分析和性能监控优化。教程详细讲解了环境搭建、MCP服务器配置、参数说明及多种工具集(输入自动化、导航、设备仿真、性能分析等)的使用方法。通过mcp-use库的MCPAgent和MCPClient组件,用户可以轻松实现自然语言驱动的浏览器操作和测试流程管理。

blues_C的博客 3805

✨在Windows11上安装虚拟机(VMware17.6.0)保姆级教程(附安装包)

VMware Workstation Pro 是一款功能强大的虚拟机软件,它允许你在单一的物理机上运行多个操作系统。性能卓越:VMware以其出色的性能和稳定性而闻名,适合运行资源密集型的虚拟机。用户友好:直观的用户界面使得即使是初学者也能快速上手。功能全面:支持多种操作系统,包括Windows、Linux、macOS等,满足不同用户的需求。企业级支持:VMware提供全面的技术支持,适合企业级用户。恭喜你成功安装了VMware Workstation Pro 17.6.0!

Python老吕的博客 1万+

GRUB原理及修复

此处以C5 C6为例,GRUB的主要作用是提供一个菜单,允许用户选择要启动系统或不同的内核版本,把用户选定的内核装载到内存的特定空间中,解压展开,并把系统控制权移交给内核,一台主机上可能装有不止一个操作系统,用户可以根据GRUB提供的启动菜单选定操作系统,随即加载指定内核 GRUB分为三个阶段,stage 1 这段代码的其中一段代码是MBR中的 bootlo...

weixin_34259559的博客 175

Python爬虫实战:中国土地市场网招拍挂数据抓取与分析

本文详细介绍了如何使用Python爬虫技术从中国土地市场网抓取土地招拍挂数据,并进行初步的数据分析与可视化。文章涵盖了爬虫的基本原理、反爬虫策略应对、数据清洗与存储、数据分析与可视化等多个方面,为土地市场研究者提供了一套完整的数据获取与分析解决方案。

2201_76125261的博客 684

grub启动流程及原理和grub的mini os shell(转) 20210301

GNU GRUB(简称“GRUB”,GRand Unified Bootloader)是一个来自GNU项目的多操作系统启动管理器,它允许用户可以在计算机内同时安装有多个操作系统,比如不同版本的Windows和Linux,并在计算机启动时选择希望运行的操作系统。Grub一直在发展,现在的发行版都用Grub 2了,但是基本的启动引导原理是差不多的,所以还是以传统的Grub为例(在CentOS 5.5上)。 我们知道,引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。主引导扇区

ccpit2b2c的专栏 767

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MBR及linux下grub执行原理浅析

MBR及linux下grub执行原理浅析 2014年01月03日 10:19:35 阅读数:3704 标签: MBRlinux计算机启动-引导grub2更多 个人分类: linux 基础学习 归纳 转述 前几天,手痒痒把系统搞坏了,但正如那句话说的:塞翁失马,怎知不是福?查找了很多资料,接触到了很多新知识,发现大牛们要么不出手,出手的文章必定深入浅出,风趣幽默,还穿插了很多从技术中悟出的人生...

jiaoyun007的专栏 492

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MBR和grub工作原理

<br />原文地址:http://blog.chinaunix.net/u2/62281/showart.php?id=2274204<br />在坛子里找到一篇关于grub和mbr工作原理的文章,以前一直都是一头雾水,今天转这文章学习下。。哈。。<br /><br /><br /> 能正常工作的grub应该包 括一下文件:stage1、stage2、*stage1_5、menu.lst。 <br /><br />   其中stage1要被安装(也就是写入)某个硬盘的主引导记录,或者某个活动分区(

我爱互联网 1910

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

GRUB装载原理(必看)

GRUB的小秘密我看了一下GRUB的源代码:主要的窍门是这样的:GRUB分两个部分stage1,stage2(stage1.5)stage1就是512的引导区了,它加载放在文件系统中的stage2。而stage2完成GRUB的其它的事情,命令行,配罝,从文件系统中加载Kernel。。。但是stage1只能有512个字节的代码。。是不可能识别文件系统的:(解决的小窍门就是,s

dongliheng的专栏 5027

告别GRUB Rescue:详解Windows 11的EFI引导分区与GRUB冲突原理及一劳永逸的修复方案

本文深入解析Windows 11与GRUB引导冲突的原理,详细介绍了EFI引导分区的作用及UEFI固件的引导机制。针对删除Linux后出现的GRUB rescue问题,提供了一劳永逸的修复方案,包括使用Windows安装介质修复、EasyUEFI调整引导顺序等实用方法,帮助用户彻底解决双系统引导冲突。

weixin_30236595的博客 649

GRUB原理与加固教程

GRUB是Linux系统常用的引导加载程序,采用分阶段引导设计。为防止未经授权修改启动参数获取root权限,需对GRUB进行安全加固:1)使用grub-mkpasswd-pbkdf2生成密码哈希;2)在/etc/grub.d/40_custom中设置管理员用户和密码;3)可选修改10_linux脚本解除正常启动限制;4)执行update-grub使配置生效。加固后,系统正常启动无需密码,但编辑启动参数需验证身份。

vortex5的博客 575

理解GRUB2工作原理及配置选项与方法

\------------------------------------------------------ GRUB2是借鉴GRUB改写到更加安全强大到多系统引导程序,现在大部分较新的Linux发行版都是使用GRUB2作为引导程序的。 GRUB2采用了模块化设计,使得GRUB2核心更加精炼,使用更加灵活,同时也就不需要像 GRUB那样分为stage1,stage1_5,stage2这样

junmuzi的专栏 3045
上一篇: Linux操作系统基础(四)保护模式内存管理(2)
下一篇: 实模式和保护模式区别及寻址方式
sweird
博客等级 码龄20年 336粉丝 103原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值