浅谈grub

GRUB:GRand Unified Bootloader

开机管理程序扮演的角色,就是要在计算机开机时负责加载和传输操作系统的核心程序。

现在大部分的操作系统默认提供的开机管理程序都可以多重开机,GRUB(GRand Unified Bootloader)是由GNU(GNU’s Not Unix)所提供,GRUB 在使用、设置、操作或接口上,都比 Windows 或之前使用的另一套 LILO 方便,而grub是存在MBR里面的。

为什么需要这个MBR,主要是因为BIOS太小,功能有限。当系统加电,bios自检后,就会将MBR的Load进内存。也就意味着引导程序被激活,分区信息被加载到内存,同时也意味着对系统的控制权从bios过渡到grub

GRUB的版本:

GRand uniform Bootloader 0.9  ceontos6

Grub2   centos7

GRUB是一个系统引导程序,提供一个菜单,允许用户选择要启动系统或不同的内核版本,把用选定的内核装载到内存中的特定空间中,解压.展开,并把系统控制权移交给内核.(而Bootloader里面的程序是grub,它的作用是启动内核,grub分两部分组成,stage1和stage2,stage1是在MBR里面的,为了引导stage2的。stage2是存放在分区文件系统上的,分区在系统没有启动之前是无法识别的。则需要stage1.5这个中间层来协助stage1找到stage2,当stage2引导后,将内核和文件系统映射到内存,从而把系统控制权交给内核。

通过制作一个Linux系统启动流程,来了解grub的作用:

给虚拟机新添加一块磁盘,分三个区(100M  2G 5G),格式化

[[email protected] ~]# mke2fs -t ext4 /dev/sdb1
[[email protected] ~]# mkswap /dev/sdb2
[[email protected] ~]# mke2fs -t ext4 /dev/sdb3
[[email protected] ~]# mkdir /mnt/boot
[[email protected] ~]# mount /dev/sdb1 /mnt/boot
[[email protected] ~]# cd /mnt/boot/
[[email protected] boot]# grub-install --root-directory=/mnt /dev/sdb  #安装grub  
 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
[[email protected] boot]# ls
  grub  lost+found
[[email protected] boot]# cp /boot/vmlinuz-2.6.32-504.el6.x86_64 vmlinuz
[[email protected] boot]# cp /boot/initramfs-2.6.32-504.el6.x86_64.img initramfs.img
[[email protected] boot]# ls
grub  initramfs.img  lost+found  vmlinuz
[[email protected] grub]# vim grub.conf
default=0
timeout=5
title minilinux
root (hd0,0)
kernel /vmlinuz   ro root=/dev/sda3  selinux=0 init=/bin/bash
initrd /initramfs.img
[[email protected] ~]# umount /dev/sdb1
[[email protected] ~]# mkdir /mnt/sysroot
[[email protected] ~]# mount /dev/sdb1 /mnt/sysroot/
[[email protected] ~]# cd /mnt/sysroot/
[[email protected] sysroot]# mkdir -pv etc lib lib64 root home sbin bin proc sys dev opt
 [[email protected] bin]# cp /bin/bash .
    [[email protected] sysroot]# ldd /bin/bash
    linux-vdso.so.1 =>  (0x00007fffa6bff000)
    libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000035c7e00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00000035b6600000)
    libc.so.6 => /lib64/libc.so.6 (0x00000035b6a00000)
    /lib64/ld-linux-x86-64.so.2 (0x00000035b6200000)
    [[email protected] sysroot]# cp /lib64/libtinfo.so.5 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/
    [[email protected] sysroot]# ls /mnt/sysroot/lib64/
    ld-linux-x86-64.so.2  libc.so.6  libdl.so.2  libtinfo.so.5
[[email protected] bin]# chroot /mnt/sysroot/
    bash-4.1#

grub的修复--光盘修复

[[email protected] ~]# dd if=/dev/zero of=/dev/sda bs=200 count=1 #用dd来破坏grub

然后用光盘来修复

 chroot /mnt/sysimage  #切换根
    grub-install --root-directory=/ /dev/sda 安装grub

如此重要的MBR应该要做备份:

dd if=/dev/sda of=sda.mbr.back  bs=512  count=1

时间: 2024-10-10 07:44:50

浅谈grub的相关文章

浅谈RHEL7和RHEL6的主要变化

浅谈RHEL7和RHEL6的主要变化 RHEL7 RHEL6 文件系统 XFS EXT4 内核版本 3.10.x-x系列 2.6.x-x系列 内核名称 Maipo Santiago 发布时间 2014-06-09(3.10.0-123) 2010-11-09(2.6.32-71) 进程名称 systemd init 运行级别 runlevel0.target->poweroff.target      runlevel1.target->rescue.target      runlevel2

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化

浅谈——页面静态化

现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量.像12306需要应付上亿人同时来抢票,淘宝双十一--所以,如何提高网站的性能,是做网站都需要考虑的. 首先网站性能优化的方面有很多:1,使用缓存,最传统的一级二级缓存:2,将服务和数据库分开,使用不同的服务器,分工更加明确,效率更加高:3,分布式,提供多台服务器,利用反向代理服务器nginx进行反向代理,将请求分散开来:4,数据库的读写分离,不同的数据库,将读操作和写操作分开,并实时同步即可:5,分布式缓存,使用memc

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜

浅谈html标签

浅谈html各常用标签用法 标题标签:<h1>-<h6>来表示,使标题字体变粗. <br />换行标记 <hr />水平分隔符 &nbsp空格符 &copy版权符 <a href>a标签超链接 href可接链接地址 <p>段落标签<blockquote>引用标签及可用做缩进 <table>表格中的<ul>无序列表<ol>有序列表<dl>自定义列表<row

浅谈二维中的树状数组与线段树

一般来说,树状数组可以实现的东西线段树均可胜任,实际应用中也是如此.但是在二维中,线段树的操作变得太过复杂,更新子矩阵时第一维的lazy标记更是麻烦到不行. 但是树状数组在某些询问中又无法胜任,如最值等不符合区间减法的询问.此时就需要根据线段树与树状数组的优缺点来选择了. 做一下基本操作的对比,如下图. 因为线段树为自上向下更新,从而可以使用lazy标记使得矩阵的更新变的高校起来,几个不足就是代码长,代码长和代码长. 对于将将矩阵内元素变为某个值,因为树状数组自下向上更新,且要满足区间加法等限制

[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b

浅谈C++容器动态内存管理的优化

在信息学竞赛中,C++的容器的用途非常广泛,但经常因常数过大而超时.怎样才能提高它们的效率呢? 我们知道,容器是存储同一类对象的对象,既然"对象"我们无法改变,那么我们只能从"存储"入手,不难想到,不同容器在实现上的根本区别是它们对应着不同的内存组织方式,内存管理无疑是这种实现的核心,所以优化内存管理是加快容器效率的最好途径之一. 一.内存分配器简介 怎样才能优化内存管理呢?很简单,C++为我们提供了这样的接口,我们可以通过自定义容器模板中的最后一个allocato

张小龙浅谈微信公众平台的意义

腾讯高级副总裁张小龙表示:微信公众平台,就是在移动互联网时代,让企业和个人以更简捷的形式提供服务给有需要的人. 张小龙浅谈微信公众平台的意义,布布扣,bubuko.com