Windows7或10安装Centos双系统无法引导最佳解决方案(根据Grub官方文档)

笔者最近有需求要做一个Windows7或者10和CentOS的双系统,发现CentOS做完以后,Windows7或者10的启动菜单消失了,以为Windows系统盘被CentOS给吃了,经过一番检查以后发现MBR上的引导程序(boot loader),centos采用的grub2,覆盖了原有windows的引导程序 ,经过网上一番查询,基本分为两种解决方案,一种方案是进PE盘用引导修复程序覆盖CentOS的引导程序,然后再用启动配置程序把CentOS的引导添加进来,另外一种方案是进CentOS修改引导配置文件,添加Windows引导。笔者对于第一种方法并不喜欢,因为对于没有PE盘的朋友就麻烦了,对于第二种方法又不敢乱复制代码,防止有错误导致CentOS都进不去,于是经过Grub官网的一番查询,总结如下:

1.添加Windows引导配置

打开/etc/grub.d/40_custom,添加以下代码:

menuentry "Windows 7" {
	insmod chain
	insmod ntfs
	set root=(hd0,1)
	chainloader +1
}

说明:

如果您是Windows 10,把Windows 7处修改。

insmod意思是加载chain模块,insmod ntfs意思是加载ntfs文件系统模块。

set root=(hd0,1) 其中 hd0 表示硬盘,1 表示C盘 ,我的win7装在C盘所以是1 。

保存,如遇不能保存麻烦以root账户登陆系统,可以在CentOS的桌面的右上角选择注销当前用户然后使用root用户名登录即为最高权限 。

官方原文如下:

5.1.2 Chain-loading an OS

Operating experiences that do not support Multiboot and do not have specific support in GRUB (specific support is available for Linux, FreeBSD, NetBSD and OpenBSD) must be chain-loaded, which involves loading another boot loader and jumping to it in real mode.

The chainloader command (see chainloader) is used to set this up. It is normally also necessary to load some GRUB modules and set the appropriate root device. Putting this together, we get something like this, for a Windows experience on the first partition of the first hard disk:

menuentry "Windows" {
	insmod chain
	insmod ntfs
	set root=(hd0,1)
	chainloader +1
}

On experiences with multiple hard disks, an additional workaround may be required. See DOS/Windows.

Chain-loading is only supported on PC BIOS and EFI platforms.

2.使刚刚编辑的配置文件生效。

打开CentOS终端,运行以下代码:

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

官方原文如下:

24 Invoking grub-mkconfig

The program grub-mkconfig generates a configuration file for GRUB (see Simple configuration).

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

grub-mkconfig accepts the following options:–help

Print a summary of the command-line options and exit.–version

Print the version number of GRUB and exit.-o file–output=file

Send the generated configuration file to file. The default is to send it to standard output.

细心的网友会发现怎么我们多了一个数字2,因为现在已经是Grub2了,所以我们我们用Grub2这个。

重启,您就会发现成功了。

3.设置默认引导的操作系统

有些网友表示,平常CentOS不怎么使用,用Windows的频次多,不想让CentOS占了默认启动项。

打开/etc/default/grub

注释掉GRUB_DEFAULT=saved,在这一行的下面插入GRUB_DEFAULT=’Windows 7’,保存并退出。(注意这个要根据/etc/grub.d/40_custom中自己设置的menuentry配置,务必一样)

执行grub2-mkconfig -o /boot/grub2/grub.cfg,最后reboot重启

官方文档如下:

‘GRUB_DEFAULT’

The default menu entry. This may be a number, in which case it identifies the Nth entry in the generated menu counted from zero, or the title of a menu entry, or the special string ‘saved’. Using the id may be useful if you want to set a menu entry as the default even though there may be a variable number of entries before it.

For example, if you have:

menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux {
	...
}

then you can make this the default using:

GRUB_DEFAULT=example-gnu-linux

Previously it was documented the way to use entry title. While this still works it’s not recommended since titles often contain unstable device names and may be translated

If you set this to ‘saved’, then the default menu entry will be that saved by ‘GRUB_SAVEDEFAULT’ or grub-set-default. This relies on the environment block, which may not be available in all situations (see Environment block).

The default is ‘0’.‘GRUB_SAVEDEFAULT’

If this option is set to ‘true’, then, when an entry is selected, save it as a new default entry for use by future runs of GRUB. This is only useful if ‘GRUB_DEFAULT=saved’; it is a separate option because ‘GRUB_DEFAULT=saved’ is useful without this option, in conjunction with grub-set-default. Unset by default. This option relies on the environment block, which may not be available in all situations (see Environment block).

至此全部完成配置,恭喜您成功了。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/linuxe/923.html

(8)
上一篇 2020年2月6日 00:42
下一篇 2020年2月18日 19:22

相关推荐

  • Ubuntu系统添加和删除PPA源

    在Ubuntu系统中经常需要安装第三方软件,此时就需要先添加该软件的PPA源,再安装该软件。 PPA的解释为:Personal Package Archives(个人软件包档案),是Ubuntu Launchpad网站提供的一项服务,允许个人用户上传软件源代码,通过Launchpad进行编译并发布为二进制软件包,作为a…

    Linux经验 2020年1月8日
    02.2K0
  • ‘GRUB_CMDLINE_LINUX’和‘GRUB_CMDLINE_LINUX_DEFAULT’的区别

    除非咱们把Linux操作系统恢复模式启动入口关闭,正常Linux操作系统启动会有两个入口,一个是正常模式启动入口,另一个是恢复模式启动入口,正常模式下,linux内核会首先启动‘GRUB_CMDLINE_LINUX’,然后启动‘GRUB_CMDLINE_LINUX_DEFAULT’,恢复模式下,仅启动‘GRUB_CMD…

    Linux经验 2021年2月27日
    03.6K0
  • 如何查看当前Linux系统的默认shell?

    当前Linux系统可用的shell都记录在/etc/shells文件中。 输出当前Linux系统可用的shell: 系统支持的shell有那么多,sh、bash、rbash、dash等,如何知道当前Linux系统的默认shell? 可见默认shell为bash。几乎所有Linux系统的默认shell都是bash。

    Linux经验 2020年7月18日
    01.9K0

发表回复

登录后才能评论