已有windows系统的情况下安装centos双系统

本文是基于已有win7的前提下, 安装centos

部分参考自 https://www.cnblogs.com/xiaoyao-lxy/p/5561728.html#yi

1. 刻录DVD

之所以刻录DVD是因为在通过DVD安装centos时不需要像用USB安装那样还要手动设置USB的位置, 要不然会无法找到USB的位置。如果希望采用usb安装的方式, 可以通过https://www.cnblogs.com/xiaoyao-lxy/p/5561728.html#yi这里边提到的方法, 修改u盘的位置, 好让centos识别

2. windows磁盘分区

右键 此电脑 - 管理 




但是, 上述方法有时候会不管用, 所以我们最好使用winPE来对磁盘进行分区。插入winPE的启动盘, 进入winPE

一般来说, 我们只要像上面那个直接通过windows7自带的磁盘工具进行分区那个方法, 通过压缩卷压缩一部分空间出来后, 在安装时centos就会自动识别这部分空间, 将其作为/home和/    这类挂载点的空间位置, 然后同时会自动从c盘这类主分区压缩出来一部分区域供 /boot 挂载点使用。 因为 /boot 挂载点只能挂载在主分区分出来的区域, 所以必须要确保主分区有足够的区域供压缩。

我们首先打开winPE中的分区助手, 在我这个winPE中这个软件叫傲梅分区助手。 看到下图。


下面我们来看看如何开始分区。





这样就完成了, 但如果不希望从c盘压缩出来未分配空间, 可以采取如下步骤

我们回到最开始, 将之前的分区方案都取消, 现在我们从E和F两个磁盘分区



需要注意的是只有E盘需要转化为主分区, F盘不要转化为主分区, 因为如果F盘转化为主分区后, 当后面添加挂载点时, 系统只会识别f这个主分区划分出来的未分配区域, 而忽略掉E盘分出来的未分配区域。而我们之前说了, /boot挂载点和centos下其他的挂载点不能在同一个未分配区域后, 也就是说, 如果在F盘这个未分配区域挂载上/boot, 那么同时也就无法挂载上centos系统, 如果挂载了centos系统, 同时就无法挂载 /boot。

不过最好的还是直接从c盘主分区压缩出来一小部分未分配区域用作/boot挂载点。 还需要注意一点的是, centos是无法识别除了未分配区域以外的磁盘状态。也就是说如果空出来的区域上有盘符, 也就是有卷, 那么首先需要删除该区域的卷。

3. 开始安装 

将DVD放入驱动

如果是外置驱动的话将外置驱动两根线都连入电脑, 重启电脑


根据不同的主板版本选择对应的按键, 譬如华硕是 F8, 一般来说会多两个启动项, 选择 没有UEFI的那个启动项, 

如果看到底下这个, 说明进入到了UEFI的模式, 最好是按 CTRL+ALT+DELETE 重启, 如果执意要从这里进的话, 将光标移动到第一个选项, 按下e, 在有linux那行最后加上 nomodeset。


一般来说如果看到这个界面就对了

选择第一个选项, 即 Install CentOS Linux 7, 然后等待即可。

如果屏幕突然黑屏并现实最佳分辨率是 1920x1080, 很不幸, 建议换一个显示器。 换那种老式VDI的接口的显示器。或者选择上图的Test this media那个, 然后通过无图形界面的方式来安装。

需要注意的是上图右侧的选项是可以多选的, 可以选中所有希望有的功能, 当然, 除此之外左边的选择KDE也行, 或者其他的。

分区挂载

点击下面的加号, 逐一添加挂载点, 也可点击自动创建它们。 一般来说 /boot 最少需要500M的内存, 其他的可以都给 /  下, swap大概需要8g或者更多的内存


如果出现 /boot 无论怎么修改大小又变回  1024KiB  的情况, 说明还是主分区问题, 简易对c盘进行压缩卷, 如果启动项是通过 UEFI启动的, 那么就不需要分配 /boot 挂载点, 而是需要分配 /boot/efi  挂载点, 不过对于UEFI的选项, 比较麻烦的是分区格式不能采用默认的 LVM, 而是要采用标准分区格式

除此之外还需要设置root密码和设置用户账号密码。

恢复windows启动项

如果本身是安装双系统, 安装完centos后, 原有的windows启动项会被自动隐藏, 此时需要将其恢复。

输入  sudo grub2-mkconfig > /dev/null  应该会产生如下输出


如果其中没有  Windows 7  标志的话, 需要依次输入, 因为windows系统是ntfs格式的分区, 所以安装ntfs-3g用来识别该格式分区

sudo yum install epel-release

sudo yum install ntfs-3g

sudo yum install os-prober

然后再次尝试

sudo grub2-mkconfig > /dev/null

此时应该会产生 Windows 7  的标志了, 键入下面的命令, 将原文件备份后, 写入新文件

sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old

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

额外补充

grub2-mkconfig首先会检查 /boot/  文件夹下的所有可用的启动项, 然后根据这些启动项自动生成 /boot/grub2/grub.cfg  这个启动项脚本文件, 然后在重启系统时系统会读取  grub.cfg 这个脚本, 然后根据脚本从 /boot/  文件夹下注意寻找  grub.cfg  中提到的系统启动项, 如果在启动界面选择一个没找到的系统话则会报错并重新返回到启动项选择界面。

Centos覆盖掉GPT硬盘分区格式下windows启动项的解决办法

背景知识:

一般来说,磁盘分区表有两种格式:MBR和GPT

MBR分区表在windows操作系统下最多支持4个主分区或3个主分区+1个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1个扩展分区可以划分多个逻辑分区

MBR分区表不支持容量大于2.2TB的分区(一些硬盘制造商将他们的容量较大的磁盘升级到了4KB的扇区,这意味着MBR的有效容量上限提升到了16 TB)

如下图是一个MBR分区表示例:1个主分区+1个扩展分区(划分了3个逻辑分区)

GPT分区表对分区数量没有限制,但在windows系统上最多可以支持128个主分区

GPT分区表突破了MBR最大支持2.2T分区的限制,貌似最大支持18EB的分区

如下图是一个GPT分区表示例:划分了7个主分区

UEFI BIOS引导windows系统时,是通过一个FAT格式分区下的bootmgfw.efi文件来导入BCD文件,然后BCD文件根据自身的配置内容加载系统引导文件winload.efi

(对比legacy引导发现,UEFI的引导文件为winload.efi,而Legacy的引导文件为winload.exe)

需要注意的是:GPT磁盘格式下,windows系统的启动文件(bootmgfw.efi、BCD)是存放在一个FAT格式的分区里的,有些出厂预装win8系统的电脑下将该FAT分区称之为ESP分区或EFI分区

UEFI+GPT模式引导windows系统时,并不需要mbr主引导记录,也不需要活动分区,只需要你一个存放了引导启动文件的fat格式分区就可以了,这个fat分区当然也可以是U盘等外接USB设备了。

就目前情况而言,GPT分区表磁盘不支持32位的win7以及win7之前的系统,支持64位的XP、win7、win8、win10和32位的win8、win10。一般地,GPT磁盘多与64位windows系统组合搭配。

之前碰到的问题是, windows系统安装在硬盘1上, 是GPT硬盘分区格式, 其引导程序在硬盘2上。而在硬盘二上安装了centos后, 因为GPT的格式引导是通过EFI的, centos会自动划分一个分区用来安装BIOS EFI, 安装完BIOS EFI后, 自然就把原来window的EFI覆盖了, 而且覆盖后, 通过 grub2-mkconfig 是无法检测出windows系统的。 那么可以首先尝试下面的方法, 如果不行, 可以考虑http://tieba.baidu.com/p/3754146793?pn=1中提到的方法。

进入winPE启动盘, 进入win 10PE系统, 找到UEfix这个软件


点击开始修复

安装显卡驱动

来自https://www.tecmint.com/install-nvidia-drivers-in-linux/

centos的显卡驱动与ubuntu不一样, ubuntu直接通过apt-get就能安装, centos不行

下载显卡驱动

首先去https://www.nvidia.com/Download/index.aspx网站上搜索当前显卡 (有时可以通过lspci命令查询当前电脑主机显卡, 有时又不行) 所对应的最新版本的显卡驱动, 选好后点download, 下载到自定的一个文件夹中, 后续要用到。

下载必要包

在命令行中输入:

# yum groupinstall "Development Tools"

# yum install kernel-devel kernel-headers dkms

禁用nouveau

添加黑名单

创建 /etc/modprobe.d/blacklist.conf 文件, 可以用 vi , gedit, nano等等文件编辑器, 在其中写入

blacklist nouveau

或者直接通过命令

echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf

注意只需要写入这一行就行, 不需要任何引号之类的符号。

备份原启动项

将下面蓝色的部分替换成自己当前系统中实际的文件名

mv /boot/initramfs-3.10.0-327.el7.x86_64.img /boot/initramfs-3.10.0-327.el7.x86_64.img.bak

dracut -v /boot/initramfs-3.10.0-327.el7.x86_64.img

重启系统

输入reboot

开始安装

重启系统后有可能当前GNOME界面崩溃, 导致黑屏, 不用紧张, 此时按 ALT+ALT+F2 进入命令行模式

进入root模式, 即输入 su

找到之前下载nvidia驱动的位置, 运行, 如果有任何依赖项的话, 通过 yum 安装

bash ./NVIDIA-Linux*.run

如果报错说还没有关闭X有关的程序的话, 说明还需要关闭当前的一些譬如桌面控制软件之类的程序, 通过键入

systemctl isolate multi-user.target

键入完成后就关闭了这些程序

写入xorg.conf文件

依次键入

X -configure (这个命令会在/root下产生一个文件)

cp /root/xorg.conf.new /etc/X11/xorg.conf (覆盖掉原有的xorg.conf)

init 5 (启动图形界面)