一、基本概念

GRUB(boot  loader):  GRand Unified Bootloader

两个版本:
  grub 0.x: grup legacy
  grub 1.x: grub2

grub legacy: 

运行阶段:
stage1: mbr
stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在分区上的文件系统
stage2: 磁盘分区(/boot/grub/)
配置文件:/boot/grub/grub.conf  <-- /etc/grub.conf
stage2及内核通常放置于一个基础磁盘分区
    功用:
     1. 提供菜单,并提供交互接口
    e:编辑模式,用于编辑菜单
    c:命令模式,交互式接口
     2. 加载用户选择的内核或操作系统
     允许传递参数给内核
     可隐藏此菜单
    3. 为菜单提供了保护机制
     为编辑菜单进行认证
     为启用内核或操作系统进行认证
如何识别设备:
(hd#,#): 第#块磁盘第#个分区,#为从0开始编号,grub2从1开始编号
grub的命令行接口
help:获取帮助列表
help KEYWORK:详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE
root (hd#,#): 将哪个磁盘设为根
kernel /PATH/TO/KERNEL_FILE: 设定本地启动时用到的内核文件,额外还可以添加许多内核支持使用的cmdline参数
例如: init=/path/to/init,selinux=0
initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk
boot:引导启动选定的内核
例如:
grub> root (hd0,0)
grub>kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=/dev/mapper/vg0-root quiet
grub>initrd /initramfs-2.6.32-754.el6.x86_64.img
grub>boot
配置文件:/boot/grub/grub.conf (/etc/grub.conf)
配置项:
default #: 设定默认启动的菜单项,菜单项编号从0开始
timeout=#: 指定菜单项等待用户选择的等待时长
splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE: 指明菜单背景图片路径
hidemenu: 隐藏菜单
password [--md5] STRING:菜单编辑认证
title TILE: 定义菜单项的标题,可出现多次
root (hd#,#): grub查找stage2及kernel文件所在设备分区,为grub的“根”
kernel /PATH/TO/BMLINUZ_FILE [PARAMETERS]:启动的内核
initrd /PATH/TO/INITRAMFS_FILE:内核匹配的ramfs文件
password [--md5] STRING:启动选定的内核或操作系统时进行认证
grub-md5-crypt命令:返回输入的密码的MD5格式的密码

二、grub应用

如果root账号密码忘了,如何登录系统: 进入单用户模式,执行passwd命令修改密码后重新登录系统
1.编辑grub菜单(选定要编辑的title,使用e命令)
2.在选定的kernel后附加 1、s、S或single
3.在kernel所在行,键入“b”命令
     4. 执行passwd命令修改密码
     5. 切换运行级别:init 3
如果grub损坏,如何修复grub进入系统: dd if=/dev/zero of=/dev/sda count=1 bs=300  //用0覆盖mbr前446个字节中的一部分数据,让grub损坏
第一种情况:grub损坏后系统还没重启的情况下,修复系统就需要安装grub
     安装方案一 : 使用grub-install命令,这种方式不要求系统上存在boot目录和grub目录以及stage1、stage1_5、stage2,命令执行后会自动安装好这些目录和文件
  # grub-install --root-directory=ROOT /dev/DISK  //比如本机: grub-install --root-directory=/ /dev/sda

   安装方案二 :使用grub命令进入命令提示符,这种方式就要求系统上必须存在boot目录,grub目录以及stage1、stage1_5、stage2
  grub> root (hd#,#)  //指明root根所在的位置
   grub> setup (hd#)  //指明磁盘   第二种情况: grub损坏后系统也重启了
     进入紧急救援模式:
        连接CD/DVD原装光盘,选择rescue system...直到start shell,
        切换根:chroot /mnt/sysimage
        安装grub:grub-install --root-directory=/ /dev/sda
        退出救援模式:exit
        重启:reboot

添加一块新硬盘,实现能够单独运行bash的系统
      [root@alen ~]# fdisk /dev/sdc  //分区 sdc1 sdc2 sdc3
      [root@alen ~]# mke2fs -t ext4 /dev/sdc1  //格式化sdc1和sdc3为ext4格式
      [root@alen ~]# mke2fs -t ext4 /dev/sdc3
      [root@alen ~]# mkswap /dev/sdc2  //格式化sdc2为swap格式       [root@alen ~]# mkdir /mnt/boot  //mnt下创建boot目录
      [root@alen ~]# mount /dev/sdc1 /mnt/boot  //sdc1挂载到/mnt/boot,作为sdc磁盘的boot分区
      [root@alen ~]# grub-install --root-directory=/mnt /dev/sdc  //在boot分区上安装grub,安装grub会根据给出的指定目录寻找/boot目录
          Probing devices to guess BIOS drives. This may take a long time.
          Installation finished. No error reported.
          This is the contents of the device map /mnt/boot/grub/device.map.
          Check if this is correct or not. If any of the lines is incorrect,
          fix it and re-run the script `grub-install'.
          (fd0) /dev/fd0
          (hd0) /dev/sda
          (hd1) /dev/sdb
          (hd2) /dev/sdc       [root@alen ~]# ls /mnt/boot
          grub lost+found
      [root@alen ~]# ls /mnt/boot/grub
          device.map iso9660_stage1_5 stage1 xfs_stage1_5
          e2fs_stage1_5 jfs_stage1_5 stage2
          fat_stage1_5 minix_stage1_5 ufs2_stage1_5
          ffs_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
      [root@alen ~]# cp /boot/vmlinuz-2.6.32-754.el6.x86_64 /mnt/boot/vmlinuz  //为了测试方便,复制现在系统上的内核重命名为vmlinuz到/mnt/boot下
      [root@alen ~]# cp /boot/initramfs-2.6.32-754.el6.x86_64.img /mnt/boot/initramfs.img  //同上,复制initrafs到/mnt/boot/下       [root@alen ~]# vim /mnt/boot/grub/grub.conf  //在/mnt/boot/grub下创建grub.conf文件,编辑简单配置
          default=0
          timeout=5
          tile=CentOS(Express)
            root (hd0,0)
            kernel /vmlinuz ro root=/dev/sda3 init=/bin/bash  //测试/bin/bash能否开机运行
            initrd /initramfs.img
      [root@alen ~]# mkdir /mnt/sysroot  //mnt下创建sysroot目录作为根文件

      [root@alen ~]# mount /dev/sdc3 /mnt/sysroot  //sdc3挂在到sysroot目录下

      [root@alen ~]# cd /mnt/sysroot

      [root@alen sysroot]# ls
      lost+found       [root@alen sysroot]# mkdir -pv etc bin sbin lib lib64 dev proc sys tmp var usr home mnt media  //sysroot作为根目录,增加一些常用目录       [root@alen sysroot]# cp /bin/bash /mnt/sysroot/bin  //复制当前系统/boot/bash到/mnt/sysroot.bin下,用作测试       [root@alen sysroot]# ldd /bin/bash  //查看bash的依赖文件
      linux-vdso.so.1 => (0x00007ffd56d5d000)
       libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003ac7000000)
       libdl.so.2 => /lib64/libdl.so.2 (0x0000003ab7000000)
      libc.so.6 => /lib64/libc.so.6 (0x0000003ab7400000)
      /lib64/ld-linux-x86-64.so.2 (0x0000559a9c9de000)       [root@alen sysroot]# cp /lib64/libdl.so.2 /mnt/sysroot/lib64  //复制bash的依赖文件到/mnt/sysroot指定目录下
      [root@alen sysroot]# cp /lib64/libtinfo.so.5 /mnt/sysroot/lib64
      [root@alen sysroot]# cp /lib64/libc.so.6 /mnt/sysroot/lib64
      [root@alen sysroot]# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64
      最后新建一个新的虚拟机,使用sdc这个虚拟磁盘开机启动,bash可以开机运行了




grub基本应用的更多相关文章

  1. 第14章 Linux启动管理(2)_启动引导程序grub

    2. 启动引导程序grub 2.1 Grub配置文件 (1)grub中分区的表示 硬盘 分区 Linux设备文件名 Grub中设备文件名 第1块SCSI硬盘 第1个主分区 /dev/sda1 hd(0 ...

  2. ubuntu关于引导修复[grub命令行][live linux]

    第一种:grub命令行: ls 列出所有分区 ls /grub ls /grub 检查确认linux引导分区,如果linux单独/boot分区,就要采用如下命令进行检查: ls /boot/grub ...

  3. 使用GRUB 添加新的启动项 (menu entry)

    GRUB版本: Grub2 基础知识: 相关的文件和目录结构: A./etc/grub.d/ 上图中有一个40_custom的脚本: 可以通过修改40_custom脚本来加入自定义的启动项. B./e ...

  4. GRUB、MBR名词解释

    GRUB:是一个来自GUN项目的多操作系统启动程序,是多启动规范的实现,他允许用户在计算机内同时拥有多个操作系统,并在计算机启动时选择希望的操作系统.GRUB可用于选择系统分区上的不同内核,也可用于向 ...

  5. ArchLinux+Win10双系统的Grub配置

    解决:ArchLinux+Win10双系统,Grub设置 原装的Win10,装完ArchLinux后,要进入Win10一段时间只能通过boot选择. Grub的菜单里并没有.Grub安装过程是参考wi ...

  6. win7+ubuntu双系统 重装win7后grub修复

    问题:之前安装的是win7+ubuntu双系统,重装win7后启动选项没有了,直接进入的是win7系统,无法进入ubuntu系统了. 解决办法:我们需要修复grub,将ubuntu系统重新挂载一下,具 ...

  7. Android开发笔记之《Window下安装Ubuntu双系统,Grub无法显示Window选项》

    解决方法是: 在terminal里面输入: sudo update-grub 会找到windows的grub 重启电脑就可以了.

  8. 关于linux开机进入grub问题的解决方法

    用还是用ls (hd0,X)/grub命令查看每个盘里面的内容, 情况一 :如果你是在/boot/grub这个目录下找到的 grub rescue>root=(hd0,9)         gr ...

  9. vm安装centos 老是出现 grub.conf 配置问题

    vm 环境 11  centos 6.5 最开始用的是vm12 发现安装软件一会就出现 客户机操作系统已禁用 cpu.请关闭或重置虚拟机 以为是新机器的cpu或者主板有问题,换vm,换系统依然会出现这 ...

  10. /boot/grub/device.map【设备映射】

    grub-install 安装 GRUB 在第一个硬盘的 MBR: # grub-install '(hd0)' grub-install 会先搜寻设备对应的文件(/boot/grub/device. ...

随机推荐

  1. [11]Windows内核情景分析---设备驱动

    设备驱动 设备栈:从上层到下层的顺序依次是:过滤设备.类设备.过滤设备.小端口设备[过.类.过滤.小端口] 驱动栈:因设备堆栈原因而建立起来的一种堆栈 老式驱动:指不提供AddDevice的驱动,又叫 ...

  2. wordpress学习(三)-----add_action动作钩子和add_filter()过滤器钩子

    <?php echo "<h2>高级教程add_action动作和add_filter()过滤器</h2><br/>"; //1.学会使用 ...

  3. XMLHttpRequest对象(Ajax)的状态码(readystate) HTTP状态代码(status)

    2018-11-28 14:19:00 来自 :XMLHttpRequest对象(Ajax)的状态码(readystate)  HTTP状态代码(status) XMLHttpRequest对象(Aj ...

  4. 【Linux学习一】命令查看与帮助

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.Linux执行命令流程:shell->bash(解释器 执行 ...

  5. Visual Assist 10.9.2248 破解版(支持VS2017)

    [1]下载安装包 下载地址:https://download.csdn.net/download/qq_20044811/10597708 [2]安装与破解方法 第一步:关闭VS所有打开窗体 第二步: ...

  6. mybatis源码解析10---StatementHandler解析

    StatementHandler解析 接口的作用是statement处理器,位于mybatis包的org.apache.ibatis.executor.statement目录下,源码如下: packa ...

  7. Lucene 个人领悟 (三)

    其实接下来就是贴一下代码,熟悉一下Lucene的正常工作流程,或者说怎么使用这个API,更深层次的东西这篇文章不会讲到. 上一篇文章也说了maven的配置,只要你电脑联网就可以下载下来.我贴一下代码. ...

  8. 蓝牙Profile的概念和常见种类(转)

    蓝牙Profile Bluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范.为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规 ...

  9. 安装PG3.0详细教程附图

    从公司要求开始着手调研PG到今天上午都还不知道如何安装PG.. 囧的离谱.. 看了半天的PG官网 就这个网页我瞅了半天..对你没看错 半天 少说有10分钟..原谅我的英文不是非常好..但是我知道什么意 ...

  10. Spring IOC 和 AOP

    一. IOC 1. 概念及原理 IOC: Inversion of Control(控制反转)是一种设计思想,就是容器控制应用程序所需要的外部资源的创建和管理,然后将其反转给应用程序.对象及其依赖对象 ...