linux下在grub.cfg中配置win7启动引导

来源:互联网 发布:java tar打包代码 编辑:程序博客网 时间:2024/05/16 20:30



本人电脑原本是安装win7   64位,后来装双系统加入linux在F盘独立分割一个G的盘给他用

当安装后发现进入界面只有 linux儿没有win7 选项,默认直接进入linux,无法进入win7!所以需要进入grub.cfg中配置文件。原因应该是引导文件被破坏~

cd boot/grub

ls     (可以看到grub.cfg 文件,此时权限为—r-r-r )

sudo chmod 777 grub.cfg  改变文件权限为可编辑状态

ll   (即可查看文件权限为全打开)、

vi  grub.cfg   (进入编辑文件状态)

(快捷键  进入vi编辑界面  ,按大写的 G ,则快速跳转到最后一行)

本文就截取需要插入的配置文本 如下:(大家仔细对照自己的grub.cfg文件,就可以发现少掉了或者和中间的部分方法不同,改为相同即可)

### END /etc/grub.d/10_linux ###


### BEGIN /etc/grub.d/10_lupin ###
### END /etc/grub.d/10_lupin ###


### BEGIN /etc/grub.d/20_linux_xen ###


### END /etc/grub.d/20_linux_xen ###


### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-BA484E09484DC53B' {
        insmod part_msdos
        insmod ntfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  BA484E09484DC53B
        else
          search --no-floppy --fs-uuid --set=root BA484E09484DC53B
        fi
        parttool ${root} hidden-
        chainloader +1
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

### END /etc/grub.d/30_os-prober ###


### BEGIN /etc/grub.d/30_uefi-firmware ###
### END /etc/grub.d/30_uefi-firmware ###


### BEGIN /etc/grub.d/40_custom ###
# 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.
### END /etc/grub.d/40_custom ###


### BEGIN /etc/grub.d/41_custom ###
if [ -f  ${config_directory}/custom.cfg ]; then
  source ${config_directory}/custom.cfg
elif [ -z "${config_directory}" -a -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###


修改完成后 输入 wq! 保存并退出~

然后将grub.cfg权限改回

sudo  chmod 444 grub.cfg

重启即可


以下为个人转的一篇博客,大家可以参考:

Ubuntu的启动配置文件grub.cfg(menu.lst)设置指南

 

奶牛用的第一个ubuntu版本是9.04,那时候启动配置文件还是menu.lst,到了ubuntu9.10的时候就更名为grub.cfg了,ubuntu 10.04依旧沿用的是grub.cfg,但是这个文件的内容变更并不是那么大。在ubuntu中,grub.cfg(menu.lst)就相当于windows系统下的boot.inf文件,记录着一些启动配置信息,在这里奶牛为大家介绍一些简单的设置规则。

打开命令行, sudo gedit /boot/grub/grub.cfg  (或者 sudo gedit /boot/grub/menu.lst)打开grub.cfg文件

在### BEGIN /etc/grub.d/00_header ###后面的部分主要记录了一些启动默认信息。

if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
这句中,default="0"表示从启动项中的第一个系统进行启动(就是那个默认的ubuntu),这里顺序是从0开始。例如:如果你想把启动项中的第五个选项作为默认的启动项,那么这里把数字0更改为4就可以了。

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=2
这句中,else后面的timeout是指那个等待时间,以妙作为单位,我们可以根据具体需要进行修改。

在### BEGIN /etc/grub.d/10_lupin ###后面的部分记录着启动选项的信息。
例如:
menuentry "Ubuntu, Linux 2.6.32-22-generic" {
    insmod ntfs
    set root=’(hd0,5)’
    search –no-floppy –fs-uuid –set 0e9ca6229ca60475
    loopback loop0 /ubuntu/disks/root.disk
    set root=(loop0)
    linux /boot/vmlinuz-2.6.32-22-generic root=/dev/sda5 loop=/ubuntu/disks/root.disk ro   quiet splash
    initrd /boot/initrd.img-2.6.32-22-generic
}
这是奶牛的ubuntu系统的第一个启动选项,第一行显示的是ubuntu的名称Ubuntu, Linux 2.6.32-22-generic,引号内的内容可以任意修改,    insmod ntfs是载入模块信息,例如insmod jpeg可以添加jpg支持,如要使用png或tga 文件做背景,加上 insmod png或insmod tga,。set root=’(hd0,5)’这里很关键,这里是记录系统从那个分区启动,这里的顺序可能与你在windows下看到的顺序有所不同,因为windows下系统分区顺序是根据分区号来的,而分区号可以任意更改,而这里是物理意义上的顺序,你可以通过在终端中输入df命令查看挂载分区信息。这里hd0是指第一块物理硬盘,顺序也是从0开始,后面的5是指第6个分区,顺序也是从0开始排。讲到这里,那些在安装完ubuntu之后却没有windows启动选项的朋友们应该找到些思路了吧,对,我们就可以利用这个信息进行添加,比如我们可以添加
title        Windows XP
root        (hd0,0)
makeactive
chainloader    +1
表示从第一块儿硬盘的第一个分区进行启动widows xp系统。

linux /boot/vmlinuz-2.6.32-22-generic root=/dev/sda5 loop=/ubuntu/disks/root.disk ro   quiet splash

在这句中,splash表示闪屏,如果你不喜欢开机看到那个ubuntu的logo界面,你可以删除splash这个单词,这样ubuntu就不会以文字模式启动。

最后我在附加一个windows 7的默认启动选项

menuentry "Windows 7   (on /dev/sda1)" {
    insmod ntfs
    set root=’(hd0,1)’
    search –no-floppy –fs-uuid –set 44c07536c0752f74
    chainloader +1
}

这里的search –no-floppy –fs-uuid –set 44c07536c0752f74是设定uuid=****的分区为root,和上句set root=’(hd0,1)’重复,可删除。

 

grub.cfg(menu.lst)的设置奶牛就介绍到这里,希望对大家有所帮助。

文章二

补充 ubuntu中的

==============================================================================
default      0
timeout     3
hiddenmenu
title       Ubuntu 9.04, kernel 2.6.28-11-generic
uuid          bb77114e-07a7-44a4-9345-4cc9f6e25296
kernel        /vmlinuz-2.6.28-11-generic root=UUID=5e0cc8d2-2b7f-41a5-aa58-acc670569b5f ro quiet splash 
initrd          /initrd.img-2.6.28-11-generic
quiet

title            Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)
uuid           bb77114e-07a7-44a4-9345-4cc9f6e25296
kernel        /vmlinuz-2.6.28-11-generic root=UUID=5e0cc8d2-2b7f-41a5-aa58-acc670569b5f ro single
initrd          /initrd.img-2.6.28-11-generic

title          Windows 95/98/NT/2000
root           (hd0,0)
makeactive
chainloader    +1

title       Ubuntu 9.04, memtest86+
uuid          bb77114e-07a7-44a4-9345-4cc9f6e25296
kernel         /memtest86+.bin
quiet
==============================================================================
上面的选项的作用:
(1)default 0:此选项是在默认的情况下,GRUB启动哪个操作系统,如果装了多个操作系统,GRUB能够指定默认是启动那个操作系统。如果是0,则默认启动第一个(最上面的)的操作系统;如果是1,则默认第二个,以此类推。
(2)timeout 3:超时时间,单位是秒,在此时间内如果用户没有进行任何操作,那么将启动default指定的操作系统,如果是正数,则此等待时间规定为秒数,如果是 0,则立刻进入指定操作系统,如果是负数,则进入GRUB的程序界面,一直等待用户选择进入指定的操作系统。
(3)hiddenmenu:表示隐藏GRUB的程序界面,在Ubuntu系统中,默认情况下GRUB的程序界面是隐藏的,如果想显示,则需要按提示按下Esc键。
(4)title       Ubuntu 9.04, kernel 2.6.28-11-generic:表示出现在GRUB程序界面中的字符串,这里可以是任何字符串,原则上都使用引导的操作系统的名称。
(5)root(hd0,1):这个是GRUB中分区的表示方法,GRUB程序中分区的表示方法与Ubuntu系统中的表示分区方法不同,在Ubuntu 中表示分区的方法如同hda1:其中h表示IDE硬盘,d表示设备,a表示第一个IDE设备中的主盘,1表示此硬盘的第一个主分区(具体分配信息请查阅其 他有关资料)。而在grub中是使用(hd0,1)的方式表示的,其中h表示IDE硬盘,d表示设备,0表示第一块IDE设备中的主盘,1表示此硬盘上的 第二个分区。因此在GRUB程序v中,硬盘的分区是从0开始的,而硬盘数也是从0开始的,如Ubuntu系统的hdb5在GRUB程序中就表示为 (hd1,4)。注意,前面的root表示的是操作系统的启动分区,而不是root目录。
(6)kernel:kernel及其后面的部分指定的是具体的内核文件,并且根据分区的挂载点和特性,后面指定了内核文件所在位置以及内核文件名,并且指明了跟目录所在的分区,并且将其以只读(ro)方式挂载。
(7)initrd:这部分是虚拟磁盘的文件名。
(8)chainloader+1:存在Windows操作系统的时候就会有这一项,这是Ubuntu采用的链式启动引导器,即表示启动分区有GRUB的启动分区直接下移到下一个位置(windows的引导位置)。
通过对GRUB的配置文件menu.lst的配置,可以很容易对启动的操作系统进行控制(在此文件中有大量#表示的详细说明)。



0 0