問題重述:
前段時間,我從家里帶來了一塊壞的硬碟,里面的資料還在,但是會間歇性不能識別,并且其中的系統損壞了,今天我重新購買了sata to usb 的轉接器和12v的電源,嘗試修復一下磁盤;看看能不能重新啟動,
但是我宿舍里只有一個電腦,為了修復方便,我嘗試從虛擬機直接從物體硬碟啟動,通過在網路上搜索,大致程序記錄如下,防止下一次重新學習命令,
注1:本方法,還適用于電腦上有多塊硬碟,而且每個硬碟里單獨裝了一個作業系統,并且作業系統引導是獨立的,這樣我們可以在現有系統中,使用虛擬機啟動另外一個硬碟上的系統,
注2:本方法,還適用于電腦上有多快硬碟,用戶可以選擇直接在物體硬碟里,使用虛擬機裝系統,從而避免虛擬機直接寫檔案系統的硬碟檔案帶來的性能損失;這樣使得虛擬機可以直接使用裸盤的性能,
解決方法:
- 在windows中通過磁盤管理,確定磁盤編號:cmd 中鍵入 diskmgmt 命令,可直接打開,

- 使用管理員模式啟動cmd,并通過命令創建虛擬磁盤:
cd %programfiles%\Oracle\VirtualBox # 進入Virtual Box的安裝位置,如果在其他地方,可自由替換,
VBoxManage internalcommands createrawvmdk -filename C:\SSD.vmdk -rawdisk \\.\PhysicalDrive1 # 1 為上述的磁盤編號; C:\SSD.vmdk 為創建的虛擬機可識別的位置;
- 使用管理模式啟動VirtalBox, 并匯入創建的虛擬硬碟;C:\SSD.vmdk

- 創建虛擬機,并選擇使用已經存在的硬碟;SSD.vmdk

- 通過設定,設定虛擬機運行環境;并啟動虛擬機,即可通過物體硬碟啟動,
- 如果實際的硬碟有壞道,可以通過DG進行修復:壞道檢測與修復
實際效果:
我在實際測驗程序中,使用的是我在另一塊固態上安裝的ubuntu系統,并沒有使用從家里帶來的那塊硬碟,因為那塊硬碟存在資料損壞,系統一直藍屏,書寫此篇博客時,硬碟正在進行修復,裝有ubuntu系統的SSD硬碟鏡像創建程序大致如上述所示,啟動效果如下圖所示:
diskmgmt # 通過查看,我需要使用的硬碟為 磁盤 0 cd %programfiles%\Oracle\VirtualBox VBoxManage internalcommands createrawvmdk -filename C:\SSD-Ubuntu.vmdk -rawdisk \\.\PhysicalDrive0
創建虛擬機,并設定具體引數后,虛擬機啟動效果如下:
由圖中可見,其硬碟磁區和虛擬機中硬碟磁區相同,虛擬機的運行效果,也與我們直接從硬體啟動的效果相同,實驗成功,
這種模擬的優點:
- 可以充分利用存盤硬體;充分發揮底層存盤的性能,不用再過一層檔案系統,
- 充分利用windows機器的網路環境和應用環境;Virtual Box 軟體變成一種媒介,使得我們可以將物體硬碟上的作業系統加載起來,并以作業系統的形式進行使用,
- Windows機器和Linux系統無縫配合,使得一個系統可以運行多個系統,
- 充分利用馮諾依曼體系結構;這樣即使我們使用真實硬體加載硬碟上的作業系統,我們也不存在資料的不一致性,
- 在硬體情況運行的情況下,可以通過這種模式,恢復系統和修復硬碟;我們可以通過虛擬機將硬碟上的系統啟動,
- 加深我們對作業系統的理解,當前作業系統的核心設備為硬碟(非易失性存盤),所有的邏輯都是圍繞著存盤來進行展開,
參考鏈接:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/240738.html
標籤:其他
上一篇:面試官讓你講講Linux內核的競爭與并發,你該如何回答?
下一篇:shell腳本
