grub4dos命令引导自定义映像_已有Ubuntu与Win10,纯命令行VHD装Windows8.1
发布日期:2021-10-31 18:34:19 浏览次数:28 分类:技术文章

本文共 4248 字,大约阅读时间需要 14 分钟。

看文章前啥都别说,先一起大喊:
巨硬,巨硬,真**的硬

本文同步发在我的Github Blog上

锦心的电脑上已经安装了Windows 10 [1st], Ubnntu[2nd], Phoenix OS[3rd], 突发奇想决定安装一个VHD Windows8.1,本文纯属记录如何用VHD安装Windows以及拿Grub引导两个Windows系统的过程以及巨硬留下的天坑

教程同样适用于只有单系统的情况。

数据无价,谨慎操作

材料准备

(标*的是必须准备的)

  • [*] Windows 8或更高版本(得有挂载VHD和ISO的功能)
  • [*] Windows 8.1 ISO文件 (或光盘)
  • Linux系统如Ubuntu
  • GParted(Linux软件)

VHD 安装 Windows 8.1

创建VHD

打开Powershell(管理员),键入diskpart命令进入diskpart:

PS C:WINDOWSsystem32> diskpart

使用cre命令创建一个vhd文件,名称自选 其中,maximum是vhd的大小(单位:MB)。创建后VHD为固定大小,因此用时较久

DISKPART> cre vdi file="D:vhdswin8.vhd" maximum=51200  100 百分比已完成DiskPart 已成功创建虚拟磁盘文件。

连接虚拟磁盘文件,格式化,并分配驱动器号。

DISKPART> attachMicrosoft DiskPart 版本 10.0.18362.1VDISK       - 连接虚拟磁盘文件。DISKPART> attach vdi  100 百分比已完成DiskPart 已成功连接虚拟磁盘文件。DISKPART> cre par priDiskPart 成功地创建了指定分区。DISKPART> for quick fs=ntfs  100 百分比已完成DiskPart 成功格式化该卷。DISKPART> assDiskPart 成功地分配了驱动器号或装载点。DISKPART> exit退出 DiskPart...

安装Windows 8.1

首先把你的Windows安装ISO挂载。如果你是Win8以上直接双击即可。

这里ISO被挂载在了E盘。

PS C:WINDOWSsystem32>E:PS E:> cd sources

使用dism获取install.wim的信息

PS E:sources> dism /get-wiminfo /wimfile:install.wim部署映像服务和管理工具版本: 10.0.18362.900映像的详细信息: install.wim索引: 1名称: Windows 8.1 专业版描述: Windows 8.1 专业版大小: 12,855,928,858 个字节操作成功完成。

安装Windows 8.1 其中applydir是你的VHD挂载的盘符(这里是F), index是你要安装的系统所处于install.wim的索引。

PS E:sources> dism /apply-image /imagefile:install.wim /index:1 /applydir:F:部署映像服务和管理工具版本: 10.0.18362.900正在应用映像[==========================100.0%==========================]操作成功完成。

等待,完成后,键入:

PS E:sources> bcdboot f:windows -l zh-cn已成功创建启动文件

到此,Windows下的双系统安装宣告完毕,可以重启进入Windows8进行安装了。

注意bcdboot会默认把Windows 8.1作为默认系统,完成安装步骤时还好,要是对此不满了,请win+R运行msconfig把默认OS变为Windows 10

如果看到这里的你没有安装Linux系统,可以直接关闭网页走入了。

Linux修复引导

嗯,在此之前的微软还是那个体贴的微软,安装非常方便,然而要是你安装了Linux,巨硬的硬才刚刚开始

重启,熟悉的Windows启动画面出现……Grub引导又没了。

恢复Grub引导

巨硬:用了我家的Windows你就是我家的人了,必须得用Windows Boot Manager启动,Grub滚远点!

进入BIOS,改启动顺序,把Windows Boot Manager调到后面,把ubuntu的Grub改回前面。重启,出现Grub引导界面,OK。

要是没有……请自行百度“ubuntu引导修复”

优化Windows Boot Manager

现在出现了一个问题:你用上了Grub,Grub里只有一个Windows Boot Manager, 巨硬又非常贴心地在Windows Boot Manager里自动启动默认系统,启动第二系统需要重启:于是你想启动被放置在非默认系统位置的Windows 8.1需要:

开机 -> Grub选Windows Boot Manager -> 启动默认系统后选择启动Windows 8.1 -> 重启- > Grub再选Windows Boot Manager

我就想开个机您整出3遍选择菜单也太过分了吧?

分离bootmgfw

(以下步骤请确保已经安装完成Windows 8.1)

进入Ubuntu

开启GParted,随意分一个大小260MiB(和你原有的EFI分区一样大就好),格式化为fat32,右键点击管理标识为boot

e4d4910484690e49ad225e96d91d1e0d.png

这里锦心原有的EFI分区为/dev/sda1,新的分区为/dev/sda7,lhcfl是锦心的linux用户名,请自行替换

挂载EFI分区和你的新分区EFI2:

lhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFIlhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI2lhcfl@lhcfl-Ubuntu-PC:~$ sudo mount /dev/sda1 /media/lhcfl/EFIlhcfl@lhcfl-Ubuntu-PC:~$ sudo mount /dev/sda7 /media/lhcfl/EFI2

把EFI分区里的EFI/Microsoft/Boot文件夹保留原格式整个复制到EFI2里。

lhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI2/EFIlhcfl@lhcfl-Ubuntu-PC:~$ sudo mkdir /media/lhcfl/EFI2/EFI/Microsoftlhcfl@lhcfl-Ubuntu-PC:~$ sudo cp -r /media/lhcfl/EFI/EFI/Microsoft/Boot /media/lhcfl/EFI2/EFI/Microsoft/Boot

现在你拥有了两份Windows Boot Manager

更改grub

首先,umonut掉两个EFI分区

lhcfl@lhcfl-Ubuntu-PC:~$ sudo umount /dev/sda1lhcfl@lhcfl-Ubuntu-PC:~$ sudo umount /dev/sda7

然后,更新grub

lhcfl@lhcfl-Ubuntu-PC:~$ sudo update-grub

不出所料的话,你将拥有两个Windows Boot Manager:

Windows Boot Manager (on /dev/sda1)Windows Boot Manager (on /dev/sda7)

在/boot/grub/grub.cfg里,找到形如这样的内容:

menuentry 'Windows Boot Manager (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-efi-48AC-0E64' {	insmod part_gpt	insmod fat	set root='hd0,gpt1'	if [ x$feature_platform_search_hint = xy ]; then	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1  48AC-0E64	else	  search --no-floppy --fs-uuid --set=root 48AC-0E64	fi	chainloader /EFI/Microsoft/Boot/bootmgfw.efi}

使用sudo身份强制编辑,把两个Windows Boot Manager换成你想要的名字,如

Windows 10Windows 8.1 (VHD)

重启,进入Grub界面,进入你的主Windows系统

win+R运行msconfig,在OS中删掉另一个系统。关机。

巨硬这时候就体现了她·无·微·不·至·的关怀,如果你直接重启,恭喜你grub又没了……

进BIOS把被巨硬放上第一的Windows Boot Manager调到下面。重启。进入另一个系统。

对于下面所有的操作,进入的时候记得时刻关注可能弹出的"即将进行磁盘扫描,x秒内按任意键取消",并以你最快的速度按任意键取消掉。

你可能因为巨硬的关·怀而多次进入错误的系统,请关机然后进BIOS把不听话的Windows Boot Manager调下去。总之,进入Windows 10就把Windows 8.1的启动项删掉,进入Windows 8.1就把Windows 10的启动项删掉。如果误删了,用bcdboot把引导重建。然后……总是可以调好的……

后继

秀一波我的桌面

Windows 8.1

625e31ebeebcaf28b9ba75c14ce94f66.png

Windows 7

58d8f0383af316f0b5eaa42ca383f1f6.png

Ubuntu 20.04

6bd479e7e3536c6dd62145be25c2e10b.png

Phoenix OS

1c3fee85418a421cdf326182c3946897.png

Windows XP

e8a8eec1a51c1597f70cf3cdfca70fbf.png

装巨硬的系统总是让我有种不知道是在装巨硬的系统还是被巨硬的系统装的感觉……

转载地址:https://blog.csdn.net/weixin_40006779/article/details/109961900 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:并联串联混合的电压和电流_初中物理归纳并联和串联的区别
下一篇:python xlrd模块_python 项目中xlrd模块读取数据样例

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月14日 16时33分05秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Linux工作笔记-CentOS 调整 home分区 扩大 root分区 2019-04-27
Vmware工作笔记-通过光驱位与虚拟机(Vmware)共享数据【含iso制作】 2019-04-27
Linux工作笔记-使用SCP文件协议(SSH协议22端口)使Windows与Linux互传文件 2019-04-27
Qt文档阅读笔记-最简单的动态3D圆环实例 2019-04-27
PySide文档阅读笔记-第一个Qt for Python程序 2019-04-27
Linux工作笔记-ssh中-X属性的使用(Linux传界面) 2019-04-27
C++学习笔记-DLL中动态内存管理 2019-04-27
C++学习笔记-利用rapidJSON生成JSON数据 2019-04-27
C++学习笔记-利用rapidJSON读取JSON数据 2019-04-27
Linux工作笔记-解决安装Qt时缺少libX11-xcb.so.1文件问题 2019-04-27
Linux工作笔记-解决spawn: not found与expect: not found问题(安装expect) 2019-04-27
Qt|Linux工作笔记-异步调用ping命令,重定向获取信息,界面显示 2019-04-27
Linux学习笔记-最基础的常用shell命令 2019-04-27
C++|STL学习笔记-对STL中关联容器map的进一步认识 2019-04-27
Linux文档阅读笔记-cut与sort的基本用法 2019-04-27
linux工作笔记-linux之间文件传输图形界面工具gftp 2019-04-27
C++|STL学习笔记-map的属性(大小以及是否存在) 2019-04-27
Linux学习笔记-grep的基本认识 2019-04-27
解决mysql ERROR 1045(28000)问题【忘记密码,修改配置文件,无密码登录mysql修改密码】 2019-04-27
C++设计模式-面向对象程序设计要点以及封装性特点 2019-04-27