我希望克隆一個 500GB 的硬碟,所以我啟動到 Kali Linux 並執行以下命令:
dd if=/dev/sda of=/media/root/usb/windows.img bs=64k conv=noerror
這一切都工作得非常好,圖像已製作並且能夠啟動。但是,實際 PC 啟動時,會顯示以下訊息:
An operating system wasn't found. Try disconnecting any drives that don't contain an operating system. Press Ctrl+alt+Del to restart.
這可能只是巧合,但這似乎不太可能。我目前無法物理訪問這台計算機,我的問題是,運行此 dd 命令是否會導致計算機無法找到任何可啟動驅動器?
答案1
不太可能這dd 命令本身對啟動有任何不利影響,因為它所做的只是從磁碟機 /dev/sda 讀取資料並將其寫入物理上位於另一個儲存裝置上的映像檔中。
不太可能並不意味著不可能。檢查是否可以排除以下兩種情況。
例外 1:我注意到您通過了該選項conv=noerror
。通常,此選項用於從發生故障的儲存裝置中提取資料(事實上,您將使用conv=sync,noerror
與硬碟的實體磁區大小相符的 bs 值)。它的作用是導致 dd 在讀取的驅動器上遇到壞扇區後繼續進行,因此您可以從映像檔中提取數據,該文件可能仍包含由故障驅動器引起的數據損壞,但現在位於安全存儲上。反過來看,如果您懷疑自己的驅動器是否健康,那麼您確實會懷疑自己的驅動器是否健康不是想要通過conv=noerror
,這樣如果 dd 失敗,您就知道驅動器有問題。
假設您正在從壞驅動器讀取數據,那麼 dd 本身的讀取可能會在驅動器上造成更多壞扇區,就像任何其他程式的任何其他讀取操作(例如正常啟動電腦)一樣。如果這是真的,dd 很可能是該扇區的最後一次成功讀取。
例外 2:此外,雖然上面引用的 dd 呼叫是正確的,但在手動鍵入 dd 命令時,很容易將“if”替換為“of”,這很容易導致硬碟上的資料無法使用。
即使您現在不確定 dd 沒有破壞您的數據,也不要忽視查看引導失敗的其他原因。以下一些提示可能會對您有所幫助,並且可能使您能夠更準確地描述問題:
您正在閱讀的訊息 ( An operating system wasn't found [...]
) 來自 Windows 開機載入程式。因此 BIOS 找到了一個有此開機載入程式的磁碟,而該磁碟又找不到與之相符的 Windows 安裝。您是否希望啟動進入 Windows?
您是否嘗試執行您的描述中的來源硬碟、具有新磁碟映像的硬碟或完全其他安裝?
您是否更改過任何 BIOS 開機選項,例如開機到 Kali 時?您確定 BIOS 現在指向正確的驅動器嗎? (或者可能是以前用於 Windows 安裝的磁碟機?)
如果您的描述完整,您實際上並沒有「克隆」硬碟,您只是在現有檔案系統內建立了一個映像檔(這將作為備份有用)。可以將正確複製的硬碟插入電腦中以替換原始硬碟,但這對於您到目前為止所做的操作尚不起作用。此外,如果來源硬碟發生故障,則映像可能已損壞。您可能想閱讀有關使用 dd 克隆的更多信息在這個基本範例中和在關於 conv=sync,noerror 的討論中。