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

vtk相机_分别用 VTK 体绘制和面绘制来实现医学图像三维重建;

序言,VTK介绍:VTK 全称为 The Visualization Toolkit (可视化工具),是一个开源、跨平台、自由获取、支持并行计算的图形应用函数;拥有3D 渲染的最新工具、提供3D交互模式以及2D绘图等。VTK 包含一个C++类库,目前提供了众多语言接口,例如 Java、Python、TCL;在三维函数库OpenGL 的基础上采用面向对象设计方法发展起来图形学基本概念和数据...

weixin_39665302的博客 687

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

踩坑ubuntu24.04 编译vtk9.3.1的安卓版本

NDK官方明确废弃了旧版 armeabi ABI,强制使用armeabi-v7a或arm64-v8a。错误信息显示你的构建系统仍在使用超级构建(superbuild)模式,并且内部引用了已不再支持的。生成的合并库: $(pwd)/libvtk_combined.a"超级构建过程可能内部未充分考虑现代NDK变化导致内部配置ARM老ABI,重复失败。echo "正在提取所有.o文件..."echo "合并前所有库的总大小:"# 提取所有.a文件中的.o文件。echo "创建合并库..."

zhangyihu321的专栏 1892

grub启动流程及原理

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

BOKE 5159

【论文精度】生成式预训练模型——BART(Bidirectional and Auto-Regressive Transformers)

​ BART是一个预训练的seq2seq的去噪自编码(denoising autoencoder)模型,BART以下方式进行训练①用任意的噪声函数(noising function)去破坏文本;②学习一个模型来重建原始文本。它使用一个标准的基于transformer的神经机器翻译架构,可以看作是BERT(双向编码器)、GPT(left-to-right解码器)以及其他预训练方案的推广。

weixin_45828972的博客 7450

通过Jlink和PyLink读取蓝牙mac地址--Nordic&silicon labs

本文介绍在不开机的情况下读取蓝牙的mac地址,这里介绍两个平台,Nordic和Silicon Labs。 1. 通过Jlink Commander工具连接上目标板 选择当前芯片的型号 2. 使用mem命令查看mac地址 首先需要知道mac地址存储在芯片的哪个地址。 Nordic: 寄存器DEVICEADDRTYPE的第一个bit代表mac地址的类型,这里为1。DEVICEADDR[0]和DEVICEADDR[1]的低16bit代表了MAC地址,其中DEVICEADDR[1]的第15位应该或上DE

ching的专栏 1650

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

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

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

camera——HAL层知识分享

CameraHAL层是Android相机系统的核心中间层,负责连接Framework层与硬件驱动层。它通过标准化接口解耦软硬件,实现跨平台兼容性,同时为厂商提供硬件定制空间。主要功能包括:设备管理、数据流处理、参数控制以及图像优化。关键子系统涵盖预览、拍照、录像、对焦与曝光等模块,采用HAL3的"请求-响应"模型实现精细控制。性能优化重点关注启动时间、帧率稳定性和延迟控制。通过分层架构设计(接口层-核心层-适配层)和缓冲池机制,确保高效数据传输和硬件资源调度。

2302_77429403的博客 2074

【转载】Grub原理

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

q123456789098的专栏 1191

智能驾驶辅助系统(ADAS)全解析:功能详解 + 技术原理 + 实战案例

智能驾驶辅助系统(ADAS)是现代汽车技术的重要组成部分,旨在提升驾驶安全性和便利性。本文详细解析了ADAS的多个功能模块,包括自适应巡航控制(ACC)、车道偏离预警/车道保持辅助(LDW/LKA)、前向碰撞预警/自动紧急制动(FCW/AEB)、盲区检测/变道辅助(BSD/BSM)、倒车影像、自动泊车辅助(APA)、交通标志识别(TSR)、自动远光控制(AHB)、后方交叉来车预警(RCTA)和驾驶员疲劳监测。每个功能模块都基于特定的技术原理,如毫米波雷达、摄像头、传感器融合和深度学习算法,以实现对车辆周围环

weixin_43199439的博客 2102

YOLO26优化:注意力魔改 | SKAttention注意力,自适应地调整其感受野大小,效果优于SENet

SKAttention输入自适应地调整其感受野大小的能力

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 250

GRUB原理及修复

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

weixin_34259559的博客 175

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

本文介绍了在Pix4d软件中通过修改中央子午线设置来解决跨分带测区刺点问题的方法。针对测区跨3度分带(如105°和108°之间)时像控点与靶标点偏移较大的情况,建议将中央子午线设为测区中心(如106.5°)。具体操作步骤包括:修改投影文件中的中央子午线参数,选择新的输出坐标系配置文件。该方法能有效提高像控点刺点效率,为航测内业数据处理提供便利。操作简单实用,适合大比例尺测图项目中跨分带测区的数据处理需求。

智慧空间实验室 5527

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

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MBR及linux下grub执行原理浅析

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

jiaoyun007的专栏 492

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

余额充值