GRUB(Boot Loader):
 
1. grub: GRand Unified Bootloader
    grub 0.x: grub legacy
    grub 1.x: grub2
 
2. grub legacy:
 
2.1 运行阶段:
    stage1: mbr
    stage1_5: mbr之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统;
    stage2:磁盘分区(/boot/grub/)
      PS:stage2及内核等通常放置于一个基本磁盘分区;因为bootloader没法识别非常复杂的文件系统结构,如软raid或者卷组
 
2.2 功用:
    (1) 提供菜单、并提供交互式接口
      e: 编辑模式,用于编辑菜单;
      c: 命令模式,交互式接口;
    (2) 加载用户选择的内核或操作系统
      允许传递参数给内核
      可隐藏此菜单
    (3) 为菜单提供了保护机制
      为编辑菜单进行认证
      为启用内核或操作系统进行认证
 
2.3 如何识别设备:
  (hd#,#)
    hd#: 磁盘编号,用数字表示;从0开始编号
    #: 分区编号,用数字表示; 从0开始编号
    例如:(hd0,0)
 
2.3.1 grub的命令行接口
    help: 获取帮助列表
    help KEYWORD: 详细帮助信息
    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命令行接口启动系统:
                grub> root (hd#,#)
                grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
                grub> initrd /initramfs-VERSION-RELEASE.img
                grub> boot
 
2.3.2. 配置文件:/boot/grub/grub.conf<-- /etc/grub.conf
            配置项:
                default=#: 设定默认启动的菜单项;落单项(title)编号从0开始;
                timeout=#:指定菜单项等待选项选择的时长;
                splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;
                hiddenmenu:隐藏菜单;
                password [--md5] STRING: 菜单编辑认证;
                title TITLE:定义菜单项“标题”, 可出现多次;
                    root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;
                    kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核
                    initrd /PATH/TO/INITRAMFS_FILE: 内核匹配的ramfs文件;
                    password [--md5] STRING: 启动选定的内核或操作系统时进行认证;使用grub-md5-crypt命令生成密码串
 
 
2.3.3. 进入单用户模式:
            (1) 编辑grub菜单(选定要编辑的title,而后使用e命令);
            (2) 在选定的kernel后附加
                1, s, S或single都可以;
            (3) 在kernel所在行,键入“b”命令;
 
2.3.4. 安装grub:
            (1) grub-install
                grub-install --root-directory=ROOT /dev/DISK
             
            (2) grub
                grub> root (hd#,#)
                grub> setup (hd#)
 
 
3. 练习、为运行于虚拟机上的CentOS 6添加一块新硬件,提供两个主分区;

  (1) 为硬盘新建两个主分区;并为其安装grub;

  添加新硬盘,vmware上直接add new,选择new disk,然后各种下一步,下面是添加的硬盘

对/dev/sdb分区

分成了sdb1和sdb2两个主分区

格式化成ext4

创建文件夹并且把两块盘挂在文件夹上

安装grub在/dev/sdb1上

  (2) 为硬盘的第一个主分区提供内核和ramdisk文件; 为第二个分区提供rootfs;

吧当前系统的内核和ramdisk文件拷贝到新的boot目录下,注意名字要保持一致(版本号一致,不写也算一致)

  (3) 为rootfs提供bash、ls、cat程序及所依赖的库文件;

bash

ls,用循环的方式拷贝的

cp的就不截图了

for i in $(ldd /bin/cp|grep -o "/lib64/.*\ "); do \cp -f $i /mnt/root$i; done

测试下能不能用

  (4) 为grub提供配置文件;

  (5) 将新的硬盘设置为第一启动项并能够正常启动目标主机;

创建一个新的机器,使用刚才的磁盘作为硬盘,启动时候记得在内核的引导选项上加selinux=0

【Linux】【Basis】Grub的更多相关文章

  1. 【Linux探索之旅】第二部分第二课:命令行,世界尽在掌握

    内容简介 1.第二部分第二课:命令行,世界尽在掌握 2.第二部分第三课预告:文件和目录,组织不会亏待你 命令行,世界尽在掌握 今天的标题是不是有点霸气侧漏呢? 读者:“小编,你为什么每次都要起这么非主 ...

  2. 【Linux探索之旅】第一部分第五课:Unity桌面,人生若只如初见

    内容简介 1.第一部分第五课:Unity桌面,人生若只如初见 2.第一部分第六课预告:Linux如何安装在虚拟机中 Unity桌面,人生若只如初见 不容易啊,经过了前几课的学习,我们认识了Linux是 ...

  3. 两款【linux字符界面下】显示【菜单】,【选项】的powershell脚本模块介绍

    两款[linux字符界面下]显示[菜单],[选项]的powershell脚本模块介绍 powershell linux  ps1 menu choice Multiselect 传教士 菜单 powe ...

  4. 【Linux探索之旅】第二部分第五课:用户和权限,有权就任性

    内容简单介绍 .第二部分第五课:用户和权限,有权就任性 2.第二部分第六课预告:Nano,刚開始学习的人的文本编辑器 用户和权限.有权就任性 今天的标题也挺任性的啊,虽说小编是一个非常本分的人(真的吗 ...

  5. 【Linux探索之旅】开宗明义+第一部分第一课:什么是Linux?

    内容简介 1.课程大纲 2.第一部分第一课:什么是Linux? 3.第一部分第二课预告:下载Linux,免费的噢!   开宗明义 我们总听到别人说:Linux挺复杂的,是给那些追求逼格的程序员用的.咱 ...

  6. 【LINUX/UNIX网络编程】之简单多线程服务器(多人群聊系统)

    RT,Linux下使用c实现的多线程服务器.这个真是简单的不能再简单的了,有写的不好的地方,还希望大神轻拍.(>﹏<) 本学期Linux.unix网络编程的第四个作业. 先上实验要求: [ ...

  7. 【LINUX/UNIX网络编程】之使用消息队列,信号量和命名管道实现的多进程服务器(多人群聊系统)

    RT,使用消息队列,信号量和命名管道实现的多人群聊系统. 本学期Linux.unix网络编程的第三个作业. 先上实验要求: 实验三  多进程服务器 [实验目的] 1.熟练掌握进程的创建与终止方法: 2 ...

  8. 【Linux/unix网络编程】之使用socket进行TCP编程

    实验一 TCP数据发送与接收 [实验目的] 1.熟练掌握套接字函数的使用方法. 2.应用套接字函数完成基本TCP通讯,实现服务器与客户端的信息交互. [实验学时] 4学时 [实验内容] 实现一个服务器 ...

  9. 【Linux探索之旅】第一部分第二课:下载Linux,免费的噢

    内容简介 1.第一部分第二课:下载Linux,免费的噢 2.第一部分第三课预告:测试并安装Ubuntu 下载Linux,免费的噢 大家好,上一课我们认识了非常“霸气侧漏”的Linux操作系统. 也知道 ...

  10. 【Linux探索之旅】第一部分第三课:测试并安装Ubuntu

    内容简介 1.第一部分第三课:测试并安装Ubuntu 2.第一部分第四课预告:磁盘分区 测试并安装Ubuntu 大家好,经过前两个比较偏理论(是否想起了带着瓜皮帽,手拿折扇的老学究,或者腐儒)的课程, ...

随机推荐

  1. Express 的基本使用(创建一个简单的服务器)

    Express 的基本使用(创建一个简单的服务器) const express = require('express') // 创建服务器应用程序 // 相当于 http.creatServer co ...

  2. Springboot+Mybatisplus替换mybatis整合报错Mapped Statements collection does not contain value

    问题一: mybatisPlus完全兼容mybatis,一般来说直接替换掉就可以了,如果mybatis的数据源不能取消创建的话,就注掉mybatisplus的数据源 //@Configurationp ...

  3. coding game, 边打游戏边学编程,是一种怎么样的体验?

    前言 hello,大家好,我是bigsai,好久不见,甚是想念! 在日常生活中,很多人喜欢玩游戏,因为游戏中有着对抗博弈.控制的喜悦,用灵魂指法完成一波靓丽的操作. 但实际上,你的按键都是对应代码中一 ...

  4. C# 判断未将对象引用设置到对象的实例,出错的代码到底在第几行

    DataTable dt = null; try { var x = dt.Rows.Count; } catch(NullReferenceException nullexception) { Me ...

  5. [第二章]c++学习笔记6(复制构造函数在各个编译器中的表现)

    visual studio结果 dev c++结果 两者的输出有所不同 原因:dev c++编译对这个过程进行了优化,因为直接return对象给a,为节省时间所以不生成临时对象,所以结果为10. 注: ...

  6. 暑假算法练习Day2

    第二天啦!大家一起冲冲冲!! 1004 成绩排名 (20 分) 读入 n(>0)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用 ...

  7. vue3 学习笔记 (二)——axios 的使用有变化吗?

    本篇文章主要目的就是想告诉我身边,正在学 vue3 或者 准备学 vue3 的同学,vue3中网络请求axios该如何使用,防止接触了一点点 vue3 的同学会有个疑问?生命周期.router .vu ...

  8. 手把手教你学Dapr - 8. 绑定

    目录 手把手教你学Dapr - 1. .Net开发者的大时代 手把手教你学Dapr - 2. 必须知道的概念 手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序 手把手教你学Dapr ...

  9. ajax的get方法获取豆瓣电影前10页的数据

    # _*_ coding : utf-8 _*_ # @Time : 2021/11/2 11:45 # @Author : 秋泊酱 # 1页数据 电影条数20 # https://movie.dou ...

  10. python实现色彩空间转换

    目录: (一)调用转换函数实现图像色彩空间转换------ cv2.cvtColor函数 (二)色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色 正文: (一)调用转换函数实现图 ...