问题重述:
前段时间,我从家里带来了一块坏的硬盘,里面的数据还在,但是会间歇性不能识别,并且其中的系统损坏了。今天我重新购买了sata to usb 的转接器和12v的电源,尝试修复一下磁盘;看看能不能重新启动。
但是我宿舍里只有一个电脑。为了修复方便,我尝试从虚拟机直接从实体硬盘启动。通过在网络上搜索,大致过程记录如下,防止下一次重新学习命令。
注1:本方法,还适用于电脑上有多块硬盘,而且每个硬盘里单独装了一个操作系统,并且操作系统引导是独立的。这样我们可以在现有系统中,使用虚拟机启动另外一个硬盘上的系统。
注2:本方法,还适用于电脑上有多快硬盘,用户可以选择直接在实体硬盘里,使用虚拟机装系统,从而避免虚拟机直接写文件系统的硬盘文件带来的性能损失;这样使得虚拟机可以直接使用裸盘的性能。
解决方法:
cd %programfiles%\Oracle\VirtualBox # 进入Virtual Box的安装位置,如果在其他地方,可自由替换。
VBoxManage internalcommands createrawvmdk -filename C:\SSD.vmdk -rawdisk \\.\PhysicalDrive1 # 1 为上述的磁盘编号; C:\SSD.vmdk 为创建的虚拟机可识别的位置;
实际效果:
我在实际测试过程中,使用的是我在另一块固态上安装的ubuntu系统,并没有使用从家里带来的那块硬盘,因为那块硬盘存在数据损坏,系统一直蓝屏,书写此篇博客时,硬盘正在进行修复。装有ubuntu系统的SSD硬盘镜像创建过程大致如上述所示,启动效果如下图所示:
diskmgmt # 通过查看,我需要使用的硬盘为 磁盘 0
cd %programfiles%\Oracle\VirtualBox
VBoxManage internalcommands createrawvmdk -filename C:\SSD-Ubuntu.vmdk -rawdisk \\.\PhysicalDrive0
创建虚拟机,并设置具体参数后,虚拟机启动效果如下:
由图中可见,其硬盘分区和虚拟机中硬盘分区相同。虚拟机的运行效果,也与我们直接从硬件启动的效果相同。实验成功。
这种模拟的优点:
参考链接:
How to Boot From a USB Drive in VirtualBox
How to Boot From a USB Flash Drive in VirtualBox
错误参考:
错误1:VBoxManage.exe: error: Cannot open the raw disk '\\.\PhysicalDrive0': VERR_SHARING_VIOLATION
原因:这是因为,我在创建虚拟磁盘的时候,此磁盘已经被 DiskGenius 占用了,所以报了 SHARING_VIOLATION 的错误,我关闭了DiskGenius 后,重新创建,错误消失,创建成功;
错误参考:VERR_SHARING_VIOLATION When Creating Raw Disk
扩展阅读:
实际,我们创建的SSD-Ubuntu.vmdk文件为描述型文件。我们可以使用记事本进行查看,具体数据如下;
我们甚至可以手动修改和创建;
转载请注明出处; by xuyaowen