• 3.3 多重开机安装流程与管理(Option)
    • 3.3.1 安装 CentOS 7.x + windows 7 的规划
    • 3.3.2 进阶安装 CentOS 7.x 与 Windows 7
    • 3.3.3 救援 MBR 内的开机管理程序与设置多重开机菜单

    3.3 多重开机安装流程与管理(Option)

    有鉴于自由软件的蓬勃发展以及专利软件越来越贵,所以政府单位也慢慢的希望各部门在选购计算机时, 能够考虑同时含有两种以上操作系统的机器了。加上很多朋友其实也常常有需要两种不同操作系统来处理日常生活与工作的事情。 那我是否需要两部主机来操作不同的操作系统?不需要的,我们可以通过多重开机来选择登陆不同的操作系统喔! 一部机器搞定不同操作系统哩。

    鸟哥的图示

    Tips 你可能会问:“既然虚拟机这么热门,应用面也广,那为啥不能安装 Linux 上面使用 windows 虚拟机?或反过来使用呢?” 原因无他,因为“虚拟机在图形显示的性能依旧不足”啊!所以,某些时刻你还是得要使用实体机器去安装不同的操作系统啊!

    不过,就如同鸟哥之前提过的,多重开机系统是有很多风险存在的,而且你也不能随时变动这个多重操作系统的开机扇区, 这对于初学者想要“很勐烈的”玩Linux是有点妨碍~所以,鸟哥不是很建议新手使用多重开机啦! 所以,下面仅是提出一个大概,你可以看一看,未来我们谈到后面的章节时,你自然就会有“豁然开朗”的笑容出现了! ^_^

    3.3.1 安装 CentOS 7.x + windows 7 的规划

    由于鸟哥身边没有具有 UEFI BIOS 的机器,加上 Linux 对于 UEFI 的支持还有待持续进步,因此,下面鸟哥是使用虚拟机创建 200GB 的磁盘, 然后使用传统 BIOS 搭配 MBR 分区表来实做多重开机的项目。预计创建 CentOS 7.x 以及一个 Windows 7 的多重操作系统,同时拥有一个共享的数据磁盘。

    鸟哥的图示

    Tips 为什么要用 MBR 而不用本章之前介绍的 GPT 呢?这是因为“Windows 8.1 以前的版本,不能够在非 UEFI 的 BIOS 环境下使用 GPT 分区表的分区来开机”啊! 我们既然没有 UEFI 的环境,那自然就无法使用 GPT 分区来安装 Windows 系统了。但其实 windows 还是可以使用 GPT,只是“开机的那颗硬盘,必须要在 MBR 的分区磁盘中”。 例如 C 盘单颗硬盘使用 MBR ,而数据磁盘 D 盘使用 GPT ,那就 OK 没问题!

    另外,与过去传统安装流程不同,这次鸟哥希望保留 Linux (因为开机管理是由 Linux 管的) 在前面,windows 在后面的分区内, 因此需要先安装 Linux 后再安装 windows,后来通过修改系统配置文件来让系统达成多重开机!基本上鸟哥的分区是这样规划的 (因为不用 GPT,所以无须 BIOS Boot 项目):

    Linux设备文件名 Linux载点 Windows设备 实际内容 文件系统 容量
    /dev/vda1 /boot - Linux 开机信息 xfs 2GB
    /dev/vda2 / - Linux 根目录 xfs 50GB
    /dev/vda3 - C Windows 系统盘 NTFS 100GB
    /dev/vda5 /data D 共享数据磁盘 VFAT 其他剩余

    再次强调,我们得要先安装 Linux 在通过后续维护的方案来处理的喔!而且,为了强制 Windows 要安装在我们要求的分区, 所以在 Linux 安装时,得要将上述的所有分区先分区出来喔!大概就是这样!来实作吧!

    3.3.2 进阶安装 CentOS 7.x 与 Windows 7

    请依据本章前面的方式一项一项来进行各项安装行为,比较需要注意的地方就是安装时,不可以加上 inst.gpt 喔!我们单纯使用 MBR 分区啊!

    进行到 图 3.2.12 的项目时,先不要选择分区,请按下“ [ctrl]+[alt]+[f2] ”来进入安装过程的 shell 环境。 然后进行如下的动作来预先处理好你的分区!因为鸟哥使用图形化界面的分区模式,老是没有办法调出满意的顺序! 只好通过如下的手动方式来创建啰!但是你得要了解 parted 这个指令才行!

    1. [anaconda root@localhost /]# parted /dev/vda mklabel msdos # 创建 MBR 分区
    2. [anaconda root@localhost /]# parted /dev/vda mkpart primary 1M 2G # 创建 /boot
    3. [anaconda root@localhost /]# parted /dev/vda mkpart primary 2G 52G # 创建 /
    4. [anaconda root@localhost /]# parted /dev/vda mkpart primary 52G 152G # 创建 C
    5. [anaconda root@localhost /]# parted /dev/vda mkpart extended 152G 100%# 创建延伸分区
    6. [anaconda root@localhost /]# parted /dev/vda mkpart logical 152G 100% # 创建逻辑分区
    7. [anaconda root@localhost /]# parted /dev/vda print # 显示分区结果

    如果按照上面的处理流程,由于原本是 MBR 的分区,因此经过 mklabel 的工作,将 MBR 强制改为 GPT 后, 所有的分区就死光光了!因此不用删除就不会有剩余。接下来就是创建五个分区,最终的 print 行为就是列出分区结果, 结果应该有点像下面这样:

    本范例的分区结果图3.3.1、本范例的分区结果

    接下来再次按下“ [ctrl]+[alt]+[f6] ”来回到原本的安装流程中,然后一步一步实做到分区区那边, 然后依据相关的设备文件名来进行“重新格式化”并填入正确的挂载点,最终结果有点像下面这样:

    安装流程的分区情况图3.3.2、安装流程的分区情况

    你会看到有个“重新格式化”的项目吧!那个一定要勾选喔!之后就给它持续的安装下去,直到装好为止喔!安装完毕之后, 你也无须进入到设置的项目,在重新开机后,塞入 windows 7 的原版光盘,之后持续的安装下去!要注意,得要选择那个 100G 容量的分区安装才行! 最重要的那个安装画面有点像下面这样:

    安装 windows 的分区示意图图3.3.3、安装 windows 的分区示意图

    一样,让 windows 自己安装到完毕吧!

    3.3.3 救援 MBR 内的开机管理程序与设置多重开机菜单

    为了应付分区工作,所以我们是先安装 Linux 再安装 Windows 的。只是,如此一来,整颗硬盘的 MBR 部份就会被 windows 的开机管理程序占用了! 因此,安装好了 Windows 的现在,我们得要开始来救援 MBR,同时编辑一下开机菜单才行!

    • 救援回 Linux 的开机管理程序:
      救援 Linux 开机管理程序也不难,首先,放入原版光盘,重新开机并且进入类似 图 3.2.8 的画面中,然后依据下面的方式来处理救援模式。 进入“ Troubleshooting ”,选择“ Rescue a CentOS system ”,等待几秒钟的开机过程,之后系统会出现如下的画面,请选择“ Continue ”喔!

    如何使用找到的 Linux 磁盘系统,建议用 Continue (RW) 模式图3.3.4、如何使用找到的 Linux 磁盘系统,建议用 Continue (RW) 模式

    如果真的有找到 Linux 的操作系统,那么就会出现如下的图示,告诉你,你的原本的系统放置于 /mnt/sysimage 当中喔!

    找到了 CentOS 操作系统时,可以进行任务了图3.3.5、找到了 CentOS 操作系统时,可以进行任务了

    接着下来准备要救援 MBR 的开机管理程序啰!处理的方法指令如下:

    1. sh-4.2# chroot /mnt/sysimage
    2. sh-4.2# grub2-install /dev/vda
    3. Installing for i386-pc platform.
    4. Installation finished. No error reported.
    5. sh-4.2# exit
    6. sh-4.2# reboot
    • 修改开机菜单任务:
      接下来我们可以修订开机菜单了!不然开机还是仅有 Linux 而已~先以正常流程登陆 Linux 系统,切换身份成为 root 之后,开始进行下面的任务:
    1. [root@study ~]# vim /etc/grub.d/40_custom
    2. #!/bin/sh
    3. exec tail -n +3 $0
    4. # This file provides an easy way to add custom menu entries. Simply type the
    5. # menu entries you want to add after this comment. Be careful not to change
    6. # the 'exec tail' line above.
    7. menuentry "Windows 7" {
    8. set root='(hd0,3)'
    9. chainloader +1
    10. }
    11. [root@study ~]# vim /etc/default/grub
    12. GRUB_TIMEOUT=30 # 将 5 秒改成 30 秒长一些
    13. ...
    14. [root@study ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

    接下来就可以测试能否成功了!如果一切顺利的话,理论上就能够看到如下的图示,并且可以顺利的进入 Linux 或 Windows 啰!加油!

    多重开机的开机菜单示意图3.3.6、多重开机的开机菜单示意

    • 后续维护的注意事项
      多重开机设置完毕后请特别注意, (1)Windows的环境中最好将Linux的根目录与swap取消挂载,否则未来你打开文件资源管理器时, 该软件会要求你“格式化!”如果一个不留神,你的Linux系统就毁了。 (2)你的Linux不可以随便的删除! 因为grub会去读取Linux根目录下的/boot/目录内容,如果你将Linux移除了,你的Windows也就无法开机了! 因为整个开机菜单都会不见喔!

    原文: https://wizardforcel.gitbooks.io/vbird-linux-basic-4e/content/28.html