当前位置: 首页 > news >正文

关于GRUB2

grub2启动引导

    GRUB 2是GNU GRUB(GRand Unified Bootloader)的最新版本。bootloader(引导程序)是计算机开机后(bios自检之后)第一个运行的软件程序,它负责加载操作系统内核并把控制权交给操作系统内核。之后,操作系统内核初始化操作系统的其他部分 
    在grub 2引导启动时,会读取配置文件/boot/grub2/grub.cfg。该配置文件中会列出该机器上安装的所有操作系统. 如果需要将某个系统作为默认启动项,则可以: 
(1)在/etc/default/grub 中设置 grub_default=saved 表示保存系统的默认启动项 
(2)然后将它写到grub2的启动配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg 
(3)执行grub2-set-default 启动名 设置为默认启动 
(4)此时查看 grub2-eidtenv list 可以查看此时的默认启动项

    grub2的启动配置文件为 /boot/grub2/grub.cfg,但是一般不直接修改它,而是通过 配置文件/etc/default/grub.cfg以及grub2-的相关命令来修改配置。

grub2修复GRUB

    如果操作不当导致机器GRUB bootloader失效(比如错误修改/boot/grub2/grub.cfg),GRUB 2可能会加载失败,随后进入启动提示符。此时,可以在grub2中进行启动设置修复: 
(1)列出GRUB 2识别的驱动器 
grub2> ls 
(2)对于一个含有三个分区的 dos 分区表 /dev/sda, 输出看起来类似于: 
(hd0) (hd0, msdos3) (hd0, msdos3) (hd0, msdos3) 
对于一个含有四个gpt分区表的/dev/sda,输出看起来类似于: 
(hd0) (hd0, gpt4) (hd0, gpt3) (hd0, gpt2) (hd0, gpt1) 
(4)通过这些信息就可以在驱动器的每个分区探测并定位您的vmlinuz和initramfs文件了,通过ls命令列出文件,进行判断

(5)有了vmlinuz和initramfs的全路径就可以启动系统了: 
(5.a)声明根分区:grub> set root=(hd0, 3) 
(5.b)声明您想使用的内核:grub> linux (hd0, 1)/vmlinuz-3.0.1.fc6.i686 root=/dev/sda3 rhgh quiet selinux=0 #看自己机器情况修改内容 
(5.c)声明要使用的initrd:grub> initrd (hd0, 1)/initramfs-3.0.1.fc16.i686.img 
(5.d)通知 GRUB 2启动所选文件:grub > boot

(6)启动后打开终端,执行grub2-mkconfig命令来重建grub2 启动系统所需要的grub.cfg 
grub2-mkconfig -o /boot/grub2/grub.cfg

grub2修复MBR

    如果操作不当导致机器的MBR(Master Boot Record主引导记录,硬盘的0柱面,0磁头,1扇区称为主引导扇区。其中446字节是bootloader,64Byte为分区表,剩下2字节为magic number)错误,可以使用grub2进行修复。 
    如果出现MBR被破坏的情况,将无法通过bootloader进入grub2命令行。此时需要使用光盘或者U盘进入修复模式。在修复模式下,使用grub2-install命令重建bootloader,如何进入修复模式:

  1. #grub2-install root-directory=/mnt/sysimage/boot /dev/sda #重做MBR
  2. #sync #将MBR写入硬盘
  3. #reboot

参考: 
GRUB 2/zh-cn 
centos7 修复MBR和GRUB

相关文章:

  • 演化理解 Android 异步加载图片
  • 棋牌游戏服务器架构: 总体设计
  • Python操作MySQL以及中文乱码的问题
  • Linux常用命令1
  • 图像增强---中值滤波
  • Exchange 2013 为DAG添加成员服务器,遇到的几个问题解决方法
  • [python] 之 装饰器
  • linux--dhcp服务器
  • 浪潮NF5280M3安装Windows Server 2008 R2注意事项
  • 关于使用/来 dispatcherServlet 的url-pattern带来的问题
  • c语言中函数的形参test(int *a)?
  • Core Bluetooth下实现两个设备进行互联
  • MyEclipse开发WebService教程
  • noi 2989 糖果
  • 微软Hyper-v管理——迁移虚拟(奇葩问题)
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • ComponentOne 2017 V2版本正式发布
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • HTTP 简介
  • k个最大的数及变种小结
  • Promise面试题2实现异步串行执行
  • React-flux杂记
  • 分享几个不错的工具
  • 开发基于以太坊智能合约的DApp
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 马上搞懂 GeoJSON
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 深度学习在携程攻略社区的应用
  • 实现简单的正则表达式引擎
  • 提醒我喝水chrome插件开发指南
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 译有关态射的一切
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 怎样选择前端框架
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​虚拟化系列介绍(十)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $$$$GB2312-80区位编码表$$$$
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)构建dubbo分布式平台-平台功能导图
  • (六)激光线扫描-三维重建
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)Oracle 9i 数据库设计指引全集(1)
  • (转)VC++中ondraw在什么时候调用的
  • (转载)Linux 多线程条件变量同步
  • .cn根服务器被攻击之后
  • .htaccess 强制https 单独排除某个目录
  • .NET CLR基本术语