前言

自己在自己的笔记本上,除了自带的windows8系统,然后又安装了一个centos7系统,但是后来发现如果从windows启动就不能启动centos7,如果启动了centos7就无法启动windows,于是上网查了查,发现可以配置grub2来实现双系统引导,这样每次就可以自己选择启动哪个系统了,很方便。下面是具体的操作步骤。

Linux GRUB2 简介

GRUB 来自 GRand Unified Bootloader 的缩写。它的功能是在启动时从 BIOS 接管掌控、加载自身、加载 Linux 内核到内存,然后再把执行权交给内核。一旦内核开始掌控,GRUB 就完成了它的任务,也就不再需要了。

具体配置方法

第一种方法:直接在boot/grub2/grub.cfg中找到

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

在后面添加

menuentry 'Windows8'{  
  insmod ntfs
  set root=(hd1,1)  
  chainloader +1  
} 

如果不清楚windows安装在哪的话可以使用fdisk -l查看,比如我就是安装在了C盘,这是我的显示:

磁盘 /dev/sda:500.1 GB, 500107862016 字节,976773168 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:dos
磁盘标识符:0x00080e4a

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   104861695    52429824    7  HPFS/NTFS/exFAT
/dev/sda2       104861696   976773119   435955712    f  W95 Ext'd (LBA)
/dev/sda5       104863744   541073407   218104832    7  HPFS/NTFS/exFAT
/dev/sda6       541075456   976773119   217848832    7  HPFS/NTFS/exFAT

磁盘 /dev/sdb:24.0 GB, 24015495168 字节,46905264 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000cf9f8

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1   *        2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    46903295    22402048   8e  Linux LVM

磁盘 /dev/mapper/centos-root:20.5 GB, 20535312384 字节,40108032 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/mapper/centos-swap:2403 MB, 2403336192 字节,4694016 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

虽然在boot界面的我的centos是在hd1盘上,但是我把它作为了启动盘,就变成了hd0,所以此处我的windows的盘就变成了hd1

这里有个问题,这个文件是不推荐直接手动改的,因为系统更新会执行grub更新操作,这个文件就会被刷新,添加的内容就没了,所以推荐第二种方法,在etc/grub.d/40_customer修改:

#!/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 'Windows8'{  
  insmod ntfs
  set root=(hd1,1)  
  chainloader +1  
} 

就是前面提到的那个内容,实际上应该是在这个模板文件里输入,再刷进boot下的文件里,使用命令:

grub2-mkconfig -o /boot/grub2/grub.cfg

查看cat /boot/grub2/grub.cfg

...
### 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.
menuentry 'Windows8'{  
  insmod ntfs
  set root=(hd1,1)  
  chainloader +1  
}  
### END /etc/grub.d/40_custom ###
...

然后重启你的电脑,就可以看到你的启动项里成功地多了一个windows的引导项: