【修电脑】VMware 从GHO文件备份恢复Win10/Win7系统
本文仅供参考学习,任何因阅读者操作导致的数据损失和破坏,本文作者概不负责!
硬盘接口通常分为五种类型:SATA接口硬盘、IDE接口硬盘、SCSI接口硬盘、光纤通道硬盘、SAS接口硬盘。
IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,而光纤通道只在高端服务器上,价格昂贵。SATA是目前比较流行的的硬盘接口类型,目前市场上最普及的接口类型。
硬盘分为固态硬盘(SSD 盘)、机械硬盘(HDD)、混合硬盘(HHD)三种。SSD采用闪存颗粒来存储,HDD采用磁性碟片来存储,混合硬盘(HHD: Hybrid Hard Disk)是把磁性硬盘和闪存集成到一起的一种硬盘。绝大多数硬盘都是固定硬盘,被永久性地密封固定在硬盘驱动器中。
HDD(Hard Disk Driver):传统硬盘,即机械硬盘;
SSD(Solid State Disk):固态硬盘
这一部分是重点,希望能通过这部分的讲解,对整个硬盘接口体系有一个清晰的认识。
1)ATA和SCSI是两大接口类型
ATA(Advanced Technology Attachment),高技术配置,一般来说,ATA是一种控制器技术,而IDE(Integrated Drive Electronics)是一个匹配它的磁盘驱动器技术,ATA和IDE通常可以互换使用。ATA下一步的技术是SATA(Serial ATA),串行ATA。有了SATA之后,原来的ATA又被称为PATA(Parallel ATA),并行ATA。简单小结一下,一般意义上,IDE和PATA是说的同一种东西,它们的进化型是SATA。
SCSI(Small Computer System Interface),小型计算机系统接口,是一种计算机与外部设备之间的接口标准。SCSI的进化型是SAS(Serial Attached SCSI),串行SCSI。
2)这里所谓的硬盘接口,就是硬盘与主板之间的连接方式。
3)还有一个很奇怪的东西,SATA和SAS是两种不同分支的进化型,但是,SAS却可以完全兼容SATA,即能用SAS硬盘的地方,可以毫无阻碍的使用SATA硬盘。
传统Legacy BIOS引导windows操作系统时,是通过一个活动的主分区下的bootmgr(启动管理器)文件导入根目录下boot文件夹里的BCD(启动设置数据)文件,然后BCD文件根据自身的配置内容加载系统启动文件winload**.exe**(位置:根目录\Windows\system32\winload.exe)来启动系统。
UEFI BIOS引导windows系统时,是通过一个FAT格式分区下的bootmgfw.efi文件来导入BCD文件,然后BCD文件根据自身的配置内容加载系统引导文件winload.efi。

1、电脑开机后,上电自检,UEFI固件被载,并由它初始化启动要用的硬件。
2、UEFI固件寻找EFI分区中的启动文件(\efi\Microsoft\boot\bootmgfw.efi)启动管理器
3、启动管理器读取硬盘EFI分区中BCD文件(efi\Microsoft\BCD)系统菜单
4、最后根据配置内容加载引导程序winload.efi(\Windows\system32\winload.efi)加载系统
UEFI只支持64位的操作系统,UEFI模式下的系统会有两个很小的分区,一个叫ESP(EFI系统分区),另一个MSR(微软保留分区,通常为128MB),MSR是窗口要求的分区。
win10建议还是用uefi。因为UEFI是新模式,其启动顺序:开机→UEFI初始化→引导操作系统→进入操作系统启动。速度相对lagacy模式要更快。且现在有很多新机型采用的nvme协议的m.2固态硬盘,只支持uefi模式安装系统。注意:采用uefi新模式后,硬盘分区要采用gpt分区。
装win10用uefi还是legacy引导模式安装?uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。uefi只支持64为系统且磁盘分区必须为gpt模式,传统BIOS使用Int 13中断读取磁盘,每次只能读64KB,非常低效,而UEFI每次可以读1MB,载入更快。此外,Win10,更是进一步优化了UEFI支持,号称可以实现瞬时开机。
ESP对UEFI启动模式很重要,UEFI的引导程序是后缀名为.efi的文件存放在ESP分区中的,ESP分区采用fat32文件系统。此外,可能还存在一个小分区叫WinRe Tools,这个是在Win8中的恢复分区。体积也很小。
在管理员模式的CMD命令行窗口中执行命令bcdedit /v,查看Windows 启动加载器下的path行。
如果是winload.exe,则系统是BIOS引导;如果是winload.efi,则系统是UEFI引导。
除此之外,也在“开始”菜单输入msinfo32,打开系统信息,查看BIOS模式。
参考:vmware workstation Pro 16使用ghost镜像安装windows11
注意选择稍后安装操作系统,如下图所示:


磁盘大小默认,储存为单个或多个文件不影响,博主一般选择单个文件。

可以自定义硬件,设置内存为4G。
参考老毛桃官方的任意一个教程。如:如何使用老毛桃winpe系统进行Ghost备份。选择好U盘,默认其他选项不变,即可开始制作。(注意先备份好U盘中的数据,因为U盘将被格式化为引导U盘)
制作好的U盘打开LMT文件夹后,如下:

选择打开电源时进入固件,启动VMware win10

初始可以看到如下所示的多个boot项目,实际上直接使用都是失败:

之后在物理机上插入我们的U盘,在vmware中选择win10虚拟机,让虚拟机连接到老毛桃制作的引导U盘,如下图Kingston,单击图片中的连接按钮后,该U盘就连接到此虚拟机:

或者在插入U盘时选择连接到虚拟机:

之后在boot界面,通过上下箭头键,选择Enter setup并回车,如下图:

进入到Boot Maintenance Manager界面,选择Configure boot options选项,并回车,如下图:

选择Add boot option选项并回车,如下图:

选择Boot from a file选项,并回车,如下图:

可以看到其中第一个EFI选项有一个关键字USB,如下图:(如果没有USB的选项,则是因为引导USB没有成功连接到虚拟机,请再次检查USB是否连接到了物理机而没有连接到Win10虚拟机)

依次选择efi,回车

boot,回车

bootx64.efi,回车

即可进入到老毛桃win pe界面,选择第二个选项一定程度上可以改善在vmware中的显示效果(否则默认的win pe界面可能在vmware中显示较大),如下图所示:

选择第二个选项后显示效果如下图:

在这里使用Ghost32程序将整个磁盘导出为GHO格式的Image。
前面我们通过Ghost软件,将某台Win10的磁盘备份出得到了.gho文件,进一步我们在win pe中使用Ghost软件,恢复系统。该文件因体积较大,放到了博主的一个固态移动硬盘上。同样的方式插入到物理机中,连接到该虚拟机上。
使用老毛桃Win PE的分区工具进行快速分区,格式化硬盘:

之后打开Ghost软件,选择Loca=>Disk=>From Image表示从镜像还原:

注意路径名字不要含中文或下划线等特殊符号,否则识别文件可能出现问题:

然而遇到报错is not a symantec ghost file or is not the correct span segment,如下图:

将GHO文件转为vmdk文件,53GB的GHO文件转为vmdk文件却有68GB。使用的命令如下:
ghost32 -clone,mode=restore,src=win10.gho,dst=win10.vmdk -batch -sure
ghost32 -clone,mode=restore,src=win7.gho,dst=win7.vmdk -batch -sure


进入到VMware删除原有的硬盘,使用新的硬盘并指定该vmdk文件,选择后提示转换格式,选择保持现有格式即可。

开启虚拟机。然而进入到了引导模式,且无法正常引导启动。使用老毛桃,直接由GHO文件恢复系统,之后使用如下的引导修复对其进行修复。

修复成功后重启电脑,然而依旧无法boot。

在对备份系统所在的固态环境进行检查后得知,其使用的是HDD格式的机械硬盘,且磁盘类型是SCSI接口类型。使用bcdedit /v命令检查得知其是bios引导,则重新自定义建立我们的新的虚拟机。
设置BIOS的固件类型,如下图:

设置SCSI的磁盘,如下图:

自定义虚拟硬盘选择我们之前使用GHO文件转出来的vmdk文件,直接打开即可。

然而对win7,蓝屏:换硬件导致ghost还原后蓝屏

然而忽略了原系统的配置,到原系统查看硬盘信息,发现是IDE格式的硬盘,而且是x86(32位)的操作系统。因此回到vmware,新建虚拟机,注意设置这俩参数后,成功打开win7操作系统。
使用一个winpe U盘,从该U盘引导启动,使用里面的Ghost 11.5.1软件,将磁盘整体导出为GHO格式的image。(导出位置建议选择一个移动固态盘,且路径中不能包含中文及下划线等字符)
为什么不使用一个普通的U盘,放一个Ghost软件,直接导出?博主认为,如果你使用原系统,并在原系统上运行GHOST会导致文件及系统冲突。
所以要从win pe引导启动, 这时原系统就是一个静静的没有启动的硬盘中的某些文件,是一个静态的存在,这时对该硬盘进行整体GHOST备份才不会破坏文件。
然而如果是一个运行着的系统运行GHOST程序,则其相当于是一个CPU不断地进行着命令执行,内存不断进行着换入换出的一个动态的环境,因此对其进行备份理论上是不可行的。所以也明白了为什么要制作win pe系统启动U盘的原因,算是给大三上学期,操作系统原理与安全的周老师布置的作业进行了回答。
使用ghost32.exe程序执行命令,将GHO格式文件转为vmdk格式,查询之前系统的BIOS引导方式和硬盘类型,据此自定义添加新的vmware虚拟机并指定虚拟磁盘为该vmdk文件。打开系统即可。
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我注意到像bundler这样的项目在每个specfile中执行requirespec_helper我还注意到rspec使用选项--require,它允许您在引导rspec时要求一个文件。您还可以将其添加到.rspec文件中,因此只要您运行不带参数的rspec就会添加它。使用上述方法有什么缺点可以解释为什么像bundler这样的项目选择在每个规范文件中都需要spec_helper吗? 最佳答案 我不在Bundler上工作,所以我不能直接谈论他们的做法。并非所有项目都checkin.rspec文件。原因是这个文件,通常按照当前的惯例,只