Grub2 强大的引导程序,智能修复启动-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

Grub2 强大的引导程序,智能修复启动

简介:

偶然间发现ubuntu自9.10来就把grub2当作默认引导程序,而grub2的确功能强大。

一直以来,人们都为安装linux和windows之后怎样修复启动而头疼。

而grub2的出现,或许可以减少很多麻烦,因为比起grub,grub for dos,grub2的确智能很多。

 

grub2目前中文文档很少,下面是一些英文帮助页面。

ubuntu wiki页面:

https://help.ubuntu.com/community/Grub2

grub2 wiki

http://grub.enbug.org/FrontPage

grub2 命令

http://grub.enbug.org/CommandList

 

grub2的配置文件主要在下面三个位置

 

The configuration resides (generally) in three places:

  • in /etc/default/grub - where a set of general configuration options reside, created by grub-set-default, that you may not want to change much.

  • in /etc/grub.d - where a set of sh scripts are sequentially used to do useful things that generate the actual bootloader's config file, much like init scripts.

  • in /boot/grub - where the bootloader itself looks for configuration ( /boot/grub/grub.conf ). This file is written from the /etc/grub.d files, so changes here will be overwritten by some commands.


    !!! boot/grub/gurb.conf 可能有误,在ubuntu下是boot/grub/grub.cfg

     

    /etc/default/grub :默认配置

    /etc/grub.d          :类似shell脚本一样的配置

    /boot/grub/grub.cfg :所/etc/grub.d文件夹下的文件生成的配置文件,最重要的配置

 

 

下面主要说介绍怎样在ubuntu下修复windows启动

1.使用grub-mkconfig 命令智能生成grub.cfg

把生成的cfg文件覆盖到 /boot/grub/grub.cfg 就行了。

只能说grub-mkconfig命令真是神器,一直很希望能有这样的智能命令。

# grub-mkconfig -o /root/grubtrial/grub.conf_2 Generating grub.cfg ... Found linux image: /boot/vmlinuz-2.6.31-20-generic-pae Found initrd image: /boot/initrd.img-2.6.31-20-generic-pae Found linux image: /boot/vmlinuz-2.6.31-17-generic-pae Found linux image: /boot/vmlinuz-2.6.31-14-generic-pae Found initrd image: /boot/initrd.img-2.6.31-14-generic-pae Found memtest86+ image: /boot/memtest86+.bin Found Windows Vista (loader) on /dev/sda3 Found Debian GNU/Linux (5.0.3) on /dev/sda8 done 

 

2.能过编写grub2脚本来修复启动

首先查看分区的uuid

> sudo blkid  

可能是以下的结果

>/dev/sda2: UUID="10AC99D8AC99B8A4" TYPE="ntfs"  

参照下面编写脚本,用户的脚本文件是 /etc/grub.d/40_custom 

编辑 /etc/grub.d/40_custom   文件如下

如果熟悉grub 或者 grub for dos,很容易明白。

grub2的一大特点就是用uuid来代替了以前的(hd0,0)的写法。

因为硬盘可能增加,移动分区等,但是uuid通常不会改变,这避免了频繁修改配置文件

#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. menuentry "Windows XP" { insmod chain insmod ntfs search --fs-uuid --set 10ac99d8ac99b8a4 chainloader +1 } 

执行

>sudo update-grub  

可以查看到配置文件更新了。

>cat /boot/grub/grub.cfg  

 

 

 

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: