zoukankan      html  css  js  c++  java
  • linux基础之grub基本应用

    一、基本概念

    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可以开机运行了

     

     

     

     

     

     

  • 相关阅读:
    GeoProcessor执行工具参数设置
    matlab为影像制作散点图
    无法连接SVN
    STM32例程之USB HID双向数据传输(源码下载)【转】
    USB仪器控制教程
    STemWin5.22移植笔记(flyheart)
    STemWin5.22移植笔记【转】
    [STemWin教程入门篇]第二期:emWin5.xx的详细移植步骤
    [STemWin教程入门篇] 第一期:emWin介绍
    TI推出一款强大模拟设计与仿真工具TINA-TI 9.
  • 原文地址:https://www.cnblogs.com/ckh2014/p/9576535.html
Copyright © 2011-2022 走看看