## 3.3 多重开机安装流程与管理(Option)
有鉴于自由软件的蓬勃发展以及专利软件越来越贵,所以政府单位也慢慢的希望各部门在选购计算机时, 能够考虑同时含有两种以上操作系统的机器了。加上很多朋友其实也常常有需要两种不同操作系统来处理日常生活与工作的事情。 那我是否需要两部主机来操作不同的操作系统?不需要的,我们可以通过多重开机来选择登陆不同的操作系统喔! 一部机器搞定不同操作系统哩。
![鸟哥的图示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鸟哥的图示")
**Tips** 你可能会问:“既然虚拟机这么热门,应用面也广,那为啥不能安装 Linux 上面使用 windows 虚拟机?或反过来使用呢?” 原因无他,因为“虚拟机在图形显示的性能依旧不足”啊!所以,某些时刻你还是得要使用实体机器去安装不同的操作系统啊!
不过,就如同鸟哥之前提过的,多重开机系统是有很多风险存在的,而且你也不能随时变动这个多重操作系统的开机扇区, 这对于初学者想要“很勐烈的”玩Linux是有点妨碍~所以,鸟哥不是很建议新手使用多重开机啦! 所以,下面仅是提出一个大概,你可以看一看,未来我们谈到后面的章节时,你自然就会有“豁然开朗”的笑容出现了! ^_^
### 3.3.1 安装 CentOS 7.x + windows 7 的规划
由于鸟哥身边没有具有 UEFI BIOS 的机器,加上 Linux 对于 UEFI 的支持还有待持续进步,因此,下面鸟哥是使用虚拟机创建 200GB 的磁盘, 然后使用传统 BIOS 搭配 MBR 分区表来实做多重开机的项目。预计创建 CentOS 7.x 以及一个 Windows 7 的多重操作系统,同时拥有一个共享的数据磁盘。
![鸟哥的图示](https://box.kancloud.cn/2016-05-13_5735736501917.gif "鸟哥的图示")
**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](../Text/index.html#fig3.2.12) 的项目时,先不要选择分区,请按下“ [ctrl]+[alt]+[f2] ”来进入安装过程的 shell 环境。 然后进行如下的动作来预先处理好你的分区!因为鸟哥使用图形化界面的分区模式,老是没有办法调出满意的顺序! 只好通过如下的手动方式来创建啰!但是你得要了解 parted 这个指令才行!
```
[anaconda root@localhost /]# parted /dev/vda mklabel msdos # 创建 MBR 分区
[anaconda root@localhost /]# parted /dev/vda mkpart primary 1M 2G # 创建 /boot
[anaconda root@localhost /]# parted /dev/vda mkpart primary 2G 52G # 创建 /
[anaconda root@localhost /]# parted /dev/vda mkpart primary 52G 152G # 创建 C
[anaconda root@localhost /]# parted /dev/vda mkpart extended 152G 100%# 创建延伸分区
[anaconda root@localhost /]# parted /dev/vda mkpart logical 152G 100% # 创建逻辑分区
[anaconda root@localhost /]# parted /dev/vda print # 显示分区结果
```
如果按照上面的处理流程,由于原本是 MBR 的分区,因此经过 mklabel 的工作,将 MBR 强制改为 GPT 后, 所有的分区就死光光了!因此不用删除就不会有剩余。接下来就是创建五个分区,最终的 print 行为就是列出分区结果, 结果应该有点像下面这样:
![本范例的分区结果](https://box.kancloud.cn/2016-05-13_5735736ebc592.jpg)图3.3.1、本范例的分区结果
接下来再次按下“ [ctrl]+[alt]+[f6] ”来回到原本的安装流程中,然后一步一步实做到分区区那边, 然后依据相关的设备文件名来进行“重新格式化”并填入正确的挂载点,最终结果有点像下面这样:
![安装流程的分区情况](https://box.kancloud.cn/2016-05-13_5735736ed6e54.jpg)图3.3.2、安装流程的分区情况
你会看到有个“重新格式化”的项目吧!那个一定要勾选喔!之后就给它持续的安装下去,直到装好为止喔!安装完毕之后, 你也无须进入到设置的项目,在重新开机后,塞入 windows 7 的原版光盘,之后持续的安装下去!要注意,得要选择那个 100G 容量的分区安装才行! 最重要的那个安装画面有点像下面这样:
![安装 windows 的分区示意图](https://box.kancloud.cn/2016-05-13_5735736f001d5.jpg)图3.3.3、安装 windows 的分区示意图
一样,让 windows 自己安装到完毕吧!
### 3.3.3 救援 MBR 内的开机管理程序与设置多重开机菜单
为了应付分区工作,所以我们是先安装 Linux 再安装 Windows 的。只是,如此一来,整颗硬盘的 MBR 部份就会被 windows 的开机管理程序占用了! 因此,安装好了 Windows 的现在,我们得要开始来救援 MBR,同时编辑一下开机菜单才行!
* 救援回 Linux 的开机管理程序:
救援 Linux 开机管理程序也不难,首先,放入原版光盘,重新开机并且进入类似 [图 3.2.8](../Text/index.html#fig3.2.8) 的画面中,然后依据下面的方式来处理救援模式。 进入“ Troubleshooting ”,选择“ Rescue a CentOS system ”,等待几秒钟的开机过程,之后系统会出现如下的画面,请选择“ Continue ”喔!
![如何使用找到的 Linux 磁盘系统,建议用 Continue (RW) 模式](img/multi_boot_mbr_4.jpg)图3.3.4、如何使用找到的 Linux 磁盘系统,建议用 Continue (RW) 模式
如果真的有找到 Linux 的操作系统,那么就会出现如下的图示,告诉你,你的原本的系统放置于 /mnt/sysimage 当中喔!
![找到了 CentOS 操作系统时,可以进行任务了](https://box.kancloud.cn/2016-05-13_5735736f21210.jpg)图3.3.5、找到了 CentOS 操作系统时,可以进行任务了
接着下来准备要救援 MBR 的开机管理程序啰!处理的方法指令如下:
```
sh-4.2# chroot /mnt/sysimage
sh-4.2# grub2-install /dev/vda
Installing for i386-pc platform.
Installation finished. No error reported.
sh-4.2# exit
sh-4.2# reboot
```
* 修改开机菜单任务:
接下来我们可以修订开机菜单了!不然开机还是仅有 Linux 而已~先以正常流程登陆 Linux 系统,切换身份成为 root 之后,开始进行下面的任务:
```
[root@study ~]# vim /etc/grub.d/40_custom
#!/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 7" {
set root='(hd0,3)'
chainloader +1
}
[root@study ~]# vim /etc/default/grub
GRUB_TIMEOUT=30 # 将 5 秒改成 30 秒长一些
...
[root@study ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
```
接下来就可以测试能否成功了!如果一切顺利的话,理论上就能够看到如下的图示,并且可以顺利的进入 Linux 或 Windows 啰!加油!
![多重开机的开机菜单示意](https://box.kancloud.cn/2016-05-13_5735736f36ad7.jpg)图3.3.6、多重开机的开机菜单示意
* 后续维护的注意事项
多重开机设置完毕后请特别注意, (1)Windows的环境中最好将Linux的根目录与swap取消挂载,否则未来你打开文件资源管理器时, 该软件会要求你“格式化!”如果一个不留神,你的Linux系统就毁了。 (2)你的Linux不可以随便的删除! 因为grub会去读取Linux根目录下的/boot/目录内容,如果你将Linux移除了,你的Windows也就无法开机了! 因为整个开机菜单都会不见喔!
- 鸟哥的Linux私房菜:基础学习篇 第四版
- 目录及概述
- 第零章、计算机概论
- 0.1 电脑:辅助人脑的好工具
- 0.2 个人电脑架构与相关设备元件
- 0.3 数据表示方式
- 0.4 软件程序运行
- 0.5 重点回顾
- 0.6 本章习题
- 0.7 参考资料与延伸阅读
- 第一章、Linux是什么与如何学习
- 1.1 Linux是什么
- 1.2 Torvalds的Linux发展
- 1.3 Linux当前应用的角色
- 1.4 Linux 该如何学习
- 1.5 重点回顾
- 1.6 本章习题
- 1.7 参考资料与延伸阅读
- 第二章、主机规划与磁盘分区
- 2.1 Linux与硬件的搭配
- 2.2 磁盘分区
- 2.3 安装Linux前的规划
- 2.4 重点回顾
- 2.5 本章习题
- 2.6 参考资料与延伸阅读
- 第三章、安装 CentOS7.x
- 3.1 本练习机的规划--尤其是分区参数
- 3.2 开始安装CentOS 7
- 3.3 多重开机安装流程与管理(Option)
- 3.4 重点回顾
- 3.5 本章习题
- 3.6 参考资料与延伸阅读
- 第四章、首次登陆与线上求助
- 4.1 首次登陆系统
- 4.2 文字模式下指令的下达
- 4.3 Linux系统的线上求助man page与info page
- 4.4 超简单文书编辑器: nano
- 4.5 正确的关机方法
- 4.6 重点回顾
- 4.7 本章习题
- 4.8 参考资料与延伸阅读
- 第五章、Linux 的文件权限与目录配置
- 5.1 使用者与群组
- 5.2 Linux 文件权限概念
- 5.3 Linux目录配置
- 5.4 重点回顾
- 5.5 本章练习
- 5.6 参考资料与延伸阅读
- 第六章、Linux 文件与目录管理
- 6.1 目录与路径
- 6.2 文件与目录管理
- 6.3 文件内容查阅
- 6.4 文件与目录的默认权限与隐藏权限
- 6.5 指令与文件的搜寻
- 6.6 极重要的复习!权限与指令间的关系
- 6.7 重点回顾
- 6.8 本章习题:
- 6.9 参考资料与延伸阅读
- 第七章、Linux 磁盘与文件系统管理
- 7.1 认识 Linux 文件系统
- 7.2 文件系统的简单操作
- 7.3 磁盘的分区、格式化、检验与挂载
- 7.4 设置开机挂载
- 7.5 内存交换空间(swap)之创建
- 7.6 文件系统的特殊观察与操作
- 7.7 重点回顾
- 7.8 本章习题 - 第一题一定要做
- 7.9 参考资料与延伸阅读
- 第八章、文件与文件系统的压缩,打包与备份
- 8.1 压缩文件的用途与技术
- 8.2 Linux 系统常见的压缩指令
- 8.3 打包指令: tar
- 8.4 XFS 文件系统的备份与还原
- 8.5 光盘写入工具
- 8.6 其他常见的压缩与备份工具
- 8.7 重点回顾
- 8.8 本章习题
- 8.9 参考资料与延伸阅读
- 第九章、vim 程序编辑器
- 9.1 vi 与 vim
- 9.2 vi 的使用
- 9.3 vim 的额外功能
- 9.4 其他 vim 使用注意事项
- 9.5 重点回顾
- 9.6 本章练习
- 9.7 参考资料与延伸阅读
- 第十章、认识与学习BASH
- 10.1 认识 BASH 这个 Shell
- 10.2 Shell 的变量功能
- 10.3 命令别名与历史命令
- 10.4 Bash Shell 的操作环境:
- 10.5 数据流重导向
- 10.6 管线命令 (pipe)
- 10.7 重点回顾
- 10.8 本章习题
- 10.9 参考资料与延伸阅读
- 第十一章、正则表达式与文件格式化处理
- 11.1 开始之前:什么是正则表达式
- 11.2 基础正则表达式
- 11.3 延伸正则表达式
- 11.4 文件的格式化与相关处理
- 11.5 重点回顾
- 11.6 本章习题
- 11.7 参考资料与延伸阅读
- 第十二章、学习 Shell Scripts
- 12.1 什么是 Shell scripts
- 12.2 简单的 shell script 练习
- 12.3 善用判断式
- 12.4 条件判断式
- 12.5 循环 (loop)
- 12.6 shell script 的追踪与 debug
- 12.7 重点回顾
- 12.8 本章习题
- 第十三章、Linux 帐号管理与 ACL 权限设置
- 13.1 Linux 的帐号与群组
- 13.2 帐号管理
- 13.3 主机的细部权限规划:ACL 的使用
- 13.4 使用者身份切换
- 13.5 使用者的特殊 shell 与 PAM 模块
- 13.6 Linux 主机上的使用者讯息传递
- 13.7 CentOS 7 环境下大量创建帐号的方法
- 13.8 重点回顾
- 13.9 本章习题
- 13.10 参考资料与延伸阅读
- 第十四章、磁盘配额(Quota)与进阶文件系统管理
- 14.1 磁盘配额 (Quota) 的应用与实作
- 14.2 软件磁盘阵列 (Software RAID)
- 14.3 逻辑卷轴管理员 (Logical Volume Manager)
- 14.4 重点回顾
- 14.5 本章习题
- 14.6 参考资料与延伸阅读
- 第十五章、例行性工作调度(crontab)
- 15.1 什么是例行性工作调度
- 15.2 仅执行一次的工作调度
- 15.3 循环执行的例行性工作调度
- 15.4 可唤醒停机期间的工作任务
- 15.5 重点回顾
- 15.6 本章习题
- 第十六章、程序管理与 SELinux 初探
- 16.1 什么是程序 (process)
- 16.2 工作管理 (job control)
- 16.3 程序管理
- 16.4 特殊文件与程序
- 16.5 SELinux 初探
- 16.6 重点回顾
- 16.7 本章习题
- 16.8 参考资料与延伸阅读
- 第十七章、认识系统服务 (daemons)
- 17.1 什么是 daemon 与服务 (service)
- 17.2 通过 systemctl 管理服务
- 17.3 systemctl 针对 service 类型的配置文件
- 17.4 systemctl 针对 timer 的配置文件
- 17.5 CentOS 7.x 默认启动的服务简易说明
- 17.6 重点回顾
- 17.7 本章习题
- 17.8 参考资料与延伸阅读
- 第十八章、认识与分析登录文件
- 18.1 什么是登录文件
- 18.2 rsyslog.service :记录登录文件的服务
- 18.3 登录文件的轮替(logrotate)
- 18.4 systemd-journald.service 简介
- 18.5 分析登录文件
- 18.6 重点回顾
- 18.7 本章习题
- 18.8 参考资料与延伸阅读
- 第十九章、开机流程、模块管理与 Loader
- 19.1 Linux 的开机流程分析
- 19.2 核心与核心模块
- 19.3 Boot Loader: Grub2
- 19.4 开机过程的问题解决
- 19.5 重点回顾
- 19.6 本章习题
- 19.7 参考资料与延伸阅读
- 第二十章、基础系统设置与备份策略
- 20.1 系统基本设置
- 20.2 服务器硬件数据的收集
- 20.3 备份要点
- 20.4 备份的种类、频率与工具的选择
- 20.5 鸟哥的备份策略
- 20.6 灾难复原的考虑
- 20.7 重点回顾
- 20.8 本章习题
- 20.9 参考资料与延伸阅读
- 第二十一章、软件安装:源代码与 Tarball
- 20.1 开放源码的软件安装与升级简介
- 21.2 使用传统程序语言进行编译的简单范例
- 21.3 用 make 进行宏编译
- 21.4 Tarball 的管理与建议
- 21.5 函数库管理
- 21.6 检验软件正确性
- 21.7 重点回顾
- 21.8 本章习题
- 21.9 参考资料与延伸阅读
- 第二十二章、软件安装 RPM, SRPM 与 YUM
- 22.1 软件管理员简介
- 22.2 RPM 软件管理程序: rpm
- 22.3 YUM 线上升级机制
- 22.4 SRPM 的使用 : rpmbuild (Optional)
- 22.5 重点回顾
- 22.6 本章习题
- 22.7 参考资料与延伸阅读
- 第二十三章、X Window 设置介绍
- 23.1 什么是 X Window System
- 23.2 X Server 配置文件解析与设置
- 23.3 显卡驱动程序安装范例
- 23.4 重点回顾
- 23.5 本章习题
- 23.6 参考资料与延伸阅读
- 第二十四章、Linux 核心编译与管理
- 24.1 编译前的任务:认识核心与取得核心源代码
- 24.2 核心编译的前处理与核心功能选择
- 24.3 核心的编译与安装
- 24.4 额外(单一)核心模块编译
- 24.5 以最新核心版本编译 CentOS 7.x 的核心
- 24.6 重点回顾
- 24.7 本章习题
- 24.8 参考资料与延伸阅读