突破的难题: 如何在一整个根目录的分区中切出来一半用于安装windows8.1呢?
当初安装debian系统时, 由于脑残,直接把整个500G的硬盘分给了根目录 / ,所以整个磁盘就TMD的一个主分区; 现在想再安装一个window 8.1系统,太让我为难了,几乎找了所有资料,就是没有找到一个在linux下如何把一个分区减少的方法(前提,没有使用LVM机制进行分区)。怎么办??
我想,由于我的整个500G硬盘已经用了不到50个G,我干脆直接把MBR里面的分区表修改一下应该就可以吧!! 但是,没有找到修改分区表的工具, 使用 fdisk 命令也没有修改分区大小的选项。 我灵机一动,我干脆把主分区1删了,然后再重新添加一个200G的分区就等于把原来的500G分区修改为了200G吧,反正硬盘的第一主分区开始的扇区都是一样的,保证好扇区起始相同就OK了!!修改之前需要做的一个件事:我们需要把文件系统由500G调整为200G的文件系统;
由于需要把该主分区 umount 下以后才能操作,所以需要借助一个U盘里的另一个 linux 系统完成该操作,操作如下:
1. 使用 resize2fs 命令,把文件系统由原来的500G 缩小至200G; resize2fs 命令并不改变分区的大小;
- 使用 e2fsck 命令检查文件系统, e2fsck /dev/sda1
- 使用resize2fs命令,调整sda1上面的文件系统至200G, resize2fs /dev/sda1 200G
2. 使用 fdisk 命令把sda1分区删除,再添加一个210G的分区,为了安全起见,使分区比文件系统多了10G;
sudo fdisk /dev/sda
d #删除sda1分区,因为整个硬盘就一个分区,所以不用标记分区号;
Partition 1 has been deleted. Command (m for help): n #新建分区
Partition type
p primary (2 primary, 1 extended, 1 free)
l logical (numbered from 5)
Select (default p): p #建立主分区 Selected partition 1
First sector (2048-976773167, default 2048): #开始值选择默认就OK;
Last sector, +sectors or +size{K,M,G,T,P} (2048-524290047, default 524290047): +210G #大小为210G Created a new partition 1 of type 'Linux' and of size 210 GiB. #最后按 w 保存退出就可以了;
安装window8.1系统:
现在已经扩展出了一半的磁盘,我们就可以在这部分安装 window8.1了,具体步骤就不说了,说几个重要的注意事项:
1. 安装时,别重新安装 主引导记录, 否则原来的linux系统都启动不起来了,后面使用grub2进行引导;
2. 安装时,如果弹出如下窗口时,解决办法:按下shift+f10 会打开命令窗口,进入到C:\windows\system32\oobe文件夹,输入msoobe回车然后输入msoobe即可进入下一步操作,但错误提示框仍然在,不用理会。
3. 安装完成进入了window8.1 桌面以后, 记得关闭 window8.1的 快速启动选项,否则会无法关机, 即使强制关机以后,再启动时,就会出现下面无法启动的问题。 如果真的出现了这个问题的话,反正吧,借助硬盘上的MBR引导它是启动不起来的,你再怎么修复系统所在分区的分区引导记录也不管用, 或许你可以使用老毛桃制作一个U盘启动盘可以启动起来;
在linux系统下,使用grub2 对 window8.1进行分区引导:
(更多参考 grub2.02的文档:https://www.gnu.org/software/grub/manual/grub/grub.html)
在我的电脑上, 使用的是 grub2.02版本, 进入 /etc/grub.d/目录下,我们会发现有如下文件(版本不一样,会不相同的,我只说我的版本):
其实呢, 30_os_prober文件就是一个操作系统的嗅探配置文件,它可以自动地去探测硬盘上支持的操作系统, 所以,安装完了windows以后,只需要执行 sudo update-grub 命令,它就会自己搜索并配置相应的操作系统的引导文件;
当然,我们也可以自己写 window8.1的引导配置文件,打开40_custom文件,里面内容如下:
所以,我们只需要在下面写上window8.1的引导配置文件就好,然后执行 sudo update-grub 命令更新:
其中, insmod chain 表示链式引导, insmod ntfs 表示引导的操作系统的文件系统类型为nfts, (hd0,3) 表示我的window8.1系统在第一块硬盘第3个分区上, chainloader +1 表示从所在分区的第一个扇区开始;