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

用Arduino Mega2560和TB6612驱动MG513电机,我踩过的坑和最佳实践

本文详细介绍了使用Arduino Mega2560和TB6612驱动模块控制MG513直流电机的实战经验,包括硬件连接、PWM配置、编码器信号处理等关键技巧。通过优化电源系统、信号线布局和软件控制算法,有效解决了电机抖动、转速不稳等常见问题,为机器人底盘和自动化项目提供了可靠解决方案。

weixin_42520573的博客 202

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

别再乱改grub.cfg了!手把手教你用GRUB2自定义多系统启动菜单(含UEFI/BIOS双模式配置)

本文详细介绍了如何安全、高效地使用GRUB2自定义多系统启动菜单,涵盖UEFI/BIOS双模式配置。通过避免直接编辑grub.cfg文件,采用正确的配置方法和命令,帮助用户打造稳定且美观的启动环境,特别适合Linux多系统用户和开发者。

weixin_42553471的博客 590

grub启动流程及原理

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

BOKE 5159

解密微信DAT图片:一键转换JPG/PNG/GIF的实用指南

本文详细解析微信DAT图片的加密机制及转换方法,提供从定位文件到使用WeijieSoft工具一键转换JPG/PNG/GIF的完整指南。涵盖新旧版微信存储路径差异、批量处理技巧及常见问题解决方案,帮助用户高效恢复重要图片并释放存储空间。

weixin_29305337的博客 3618

别再让COGI拖慢你的SAP接口!手把手教你配置BAPI_PRODORDCONF_CREATE_TT的同步货物移动

本文深入解析SAP生产订单报工接口中的COGI问题,通过BAPI_PRODORDCONF_CREATE_TT的同步配置实战,解决异步更新导致的性能瓶颈。文章详细介绍了增强点配置和性能验证,帮助用户彻底消除COGI堆积,提升接口效率。

weixin_29214691的博客 482

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

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

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

从零构建智能ai语音助手:ESP32s3+Python+大语言模型实战指南

本文详细介绍了基于ESP32S3硬件和Python后端的智能语音助手系统开发指南。系统采用ESP32S3采集语音,通过WebSocket实时传输到Python后端处理,利用大语言模型实现自然语言理解和意图识别,再通过TTS合成语音返回。文章从系统架构、工作流程、技术实现(包括OPUS编码、WebSocket通信、ESP32音频处理)等方面进行了详细讲解,并提供了分阶段学习路线和常见问题解决方案。该项目展示了物联网技术与AI技术的融合应用,相比传统语音系统具有更高的灵活性和智能性,为开发者提供了完整的实现方案

Despacito0o的博客 2630

【转载】Grub原理

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

q123456789098的专栏 1191

ST-CNN实战:用Python实现交通流量预测(附完整代码)

本文详细介绍了如何利用时空卷积神经网络(ST-CNN)进行交通流量预测的实战过程。通过Python和PyTorch,从数据预处理、构建邻接矩阵,到ST-CNN核心模块的代码实现与模型训练,提供了完整的解决方案,帮助开发者掌握处理时空序列数据的核心算法。

rust6ferris的博客 926

【Python LeetCode 专题】面试经典 150 题

面试经典 150 题

一杯水果茶!足矣~ 1173

GRUB原理及修复

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

weixin_34259559的博客 175

医学图像处理实战:利用OpenSlide解析病理SVS切片的完整解决方案

本文介绍了使用openslide处理病理SVS切片的完整流程,从基础安装到科研应用。主要内容包括:1)SVS切片特点及openslide工具简介;2)环境配置与软件安装;3)基础操作:读取切片、查看信息、可视化不同层级图像;4)进阶操作:坐标裁剪与批量处理;5)科研方向拓展:结合AI模型进行病理分割分类、量化分析及可视化报告。教程提供了完整的代码示例,帮助毕业设计学生快速掌握病理图像分析的核心技能。

m0_71589036的博客 311

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MBR及linux下grub执行原理浅析

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

jiaoyun007的专栏 492

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

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、付费专栏及课程。

余额充值