Ubuntu中利用Grub 2修复移动硬盘引导

转载 2013年05月19日 17:17:26

grub 2的安装需要安装以下包:

        grub-pc, grub-common

可以在包管理工具中发现。

 

grub-install -v来查看当前版本, 传统的grub版本号为0.97及以下, grub2的版本号是1.96或更高。

 

grub 2的配置文件是/boot/grub/grub.cfg, 但是这个文件是不允许修改的,我们要通过对/etc/grub.d/下的文件以及/etc/default/grub文件进行编辑,使用update-grub来生成配置文件。

 

也就是说, 一个正常的流程应该是:

sudo apt-get install grub-pc, grub-common    #如果已经安装了grub2则不需要

sudo grub-install --root-directory=/ /dev/sda    #在设备上安装grub2引导

sudo update-grub  #生成grub配置文件

 

现在的问题就在update-grub,因为grub-install是可以指定设备来进行安装的, 但是生成配置文件的update-grub是不能指定的。

whereis update-grub

查找到它在/usr/sbin/目录下, 编辑发现它是对grub-mkconfig做的一个快捷方式,代码如下
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"

那我们就继续来查看grub-mkconfig的代码(下面仅截取前面的关键目录定义部分)

prefix=/usr
exec_prefix=${prefix}
sbindir=${exec_prefix}/sbin
libdir=${exec_prefix}/lib
sysconfdir=/etc
PACKAGE_NAME=GRUB
PACKAGE_VERSION=1.98+20100804-5ubuntu3
host_os=linux-gnu
datarootdir=${prefix}/share
datadir=${datarootdir}
pkgdatadir=${datadir}/`echo grub | sed "${transform}"`
grub_cfg=""
grub_mkconfig_dir=${sysconfdir}/grub.d

可以看出在这里它定义了路径,其中sysconfdir指定了系统配置文件路径,经过简单核对后面代码,它就是使用这个目录下的grub.d/*和default/grub来生成配置文件的。。。

那么,我们就可以对sysconfdir进行一个修改, 让它指向要修复的移动硬盘的etc目录下,然后运行

sudo grub-mkconfig -o /自定义路径/grub.cfg

这样就会在“/自定义路径/”下生成了grub.cfg

 

当然,此时还是有问题的, 因为现在查找到的系统是将目前操作系统所在硬盘作为主硬盘扫描的,所以,对grub.cfg中操作系统设置的部分进行一个照猫画虎的修改就可以了,修改这部分主要关注的是系统内核版本和设备

ls -l /dev/disk/by-uuid #查看所有设备的uuid

ls -l {要修复的硬盘挂载点}/boot       #查看可用内核

 

好了,到此,将这个修改后的grub.cfg移动到“{要修复的硬盘挂载点}/boot/grub/”, 重启以目标硬盘引导。。

 

我的到这里就成功了....忽忽,关于/etc/grub.d/*和/etc/default/grub的配置,本文没有提到,可以参阅https://help.ubuntu.com/community/Grub2#/etc/default/grub


Ubuntu中利用Grub 2修复移动硬盘引导

grub 2的安装需要安装以下包:        grub-pc, grub-common可以在包管理工具中发现。 grub-install -v来查看当前版本, 传统的grub版本号为0.97及以下...
  • lgg201
  • lgg201
  • 2011年03月01日 09:35
  • 5228

GRUB2硬盘引导Ubuntu14.04LTS镜像

GRUB2硬盘引导Ubuntu14.04LTS镜像GRUB2硬盘引导Ubuntu1404LTS镜像 准备工作 通过GRUB2启动到LIVE CD 设置grub的root 创建loopback来加载镜像...
  • x13945
  • x13945
  • 2016年04月22日 12:31
  • 709

如何使用Live CD来修复Grub / Grub2

Introduction一般我会在计算机上装两个或者多个系统,例如,我在计算机上安装了Ubuntu、Windows 7、Windows 8.1。有一天我的Win8.1不能正常使用了,我想重新安装Win...
  • bendanban
  • bendanban
  • 2015年11月17日 14:18
  • 3467

Ubuntu 修复Grub引导双系统

Linux老手们告诫用户一定要先装windows再装linux,但是有些时候如果windows死机或者中毒后必须重装windows系统时,就需要对Grub进行修复了。这其中原因是因为windows把多...
  • miaoqiucheng
  • miaoqiucheng
  • 2016年07月04日 19:15
  • 5457

Linux_ubuntu&windows双系统grub引导修复

Ubuntu & windows双系统引导修复(狭义) 关键词:ubuntu; linux; windows; 双系统; 双系统引导; 引导修复; 双系统引导修复; 开篇扯淡: 为什么写这篇教程? 因...
  • S_gy_Zetrov
  • S_gy_Zetrov
  • 2016年07月19日 18:48
  • 26641

ubuntu live cd修复grub引导项

----------------------------------------------------2017.5.2更新--------------------------------------...
  • yu132563
  • yu132563
  • 2017年07月16日 20:42
  • 498

Ubuntu 16.04 + win7 双系统 引导修复 grub修复之路

环境: win7 + Ubuntu 16.04双系统   250G SSD  win7一开始是C盘100G,D盘150G,装Ubuntu时从D盘压缩出40G             问题...
  • abcSunl
  • abcSunl
  • 2017年06月06日 11:24
  • 3057

关于ubuntu安装之后系统grub被破坏了之后进行修复的总结

头几天在电脑上面安装双系统,在安装了windows后安装ubuntu来玩玩,结果当我把ubuntu安装成功的时候,从新启动电脑出现了如下的界面:Grub loading!welcome to Grub...
  • liangxanhai
  • liangxanhai
  • 2012年06月11日 23:54
  • 13110

修复ubuntu14.04的grub的方法

修复ubuntu的grub的方法 我是采用live CD的方法修复的。 用Ubuntu的安装CD,也就是Live CD从光驱启动,打开一个终端窗口,在里面输入如下命令: 1、sudo -i ...
  • u014717036
  • u014717036
  • 2015年06月21日 10:48
  • 4007

再生龙恢复Ubuntu之后的grub引导修复方法

再生龙(Clonezilla)是一款可以备份/恢复Ubuntu的利器。然而在备份的时候,同时备份了硬盘的UUID信息,这就导致了有时恢复后开机会进入grub命令行或grub-rescue命令行,导致启...
  • tonovate
  • tonovate
  • 2017年12月08日 09:10
  • 339
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Ubuntu中利用Grub 2修复移动硬盘引导
举报原因:
原因补充:

(最多只允许输入30个字)