將 Vultr(雲端)VM 轉換為 Virtual Box VM

將 Vultr(雲端)VM 轉換為 Virtual Box VM

我最近將 Vultr VPS 的 DD 映像傳輸到我的家用電腦。我使用 Debian VirtualBox VM 建立一個新的虛擬磁碟,掛載 DD 映像,將 DD 映像中的所有檔案同步到新的虛擬磁碟。我已/etc/fstab使用根檔案系統的新 UUID 進行編輯,並/etc/networking/interfaces使用虛擬磁碟上的新介面進行編輯。然後我將其與該虛擬機器分開。

我製作了一個全新的 VirtualBox VM 並附加了這個新建立的虛擬磁碟並假設它可以啟動。事實並非如此。我得到的只是黑屏上閃爍的遊標。沒有其他事情發生。我甚至/boot從正在運行的 Debian VirtualBox VM 進行 rsync。仍然只是一個閃爍的遊標。

我是否缺少一些明顯的東西?有什麼想法嗎?感謝您的輸入。

答案1

有。

在引導過程中存在檔案系統的概念之前,需要載入一段能夠理解檔案系統的程式碼 - 這稱為引導程序,通常位於磁碟的前幾個磁區或特殊 UEFI 分割區上的特殊資料夾。

在您的情況下,它很可能是 GRUB,它需要安裝在新映像上(同樣:在根檔案系統之外!)

從具有復原模式的即時 Linux 系統啟動,並在虛擬磁碟上(重新)安裝 Grub。

答案2

感謝@Eugen Rieck 的回答,我成功了!

也感謝https://unix.stackexchange.com/questions/191218/how-to-install-grub-on-a-new-drive如何修復 grub.cfg 中錯誤的 UUID?

解決方案:

  • 我啟動到 GParted Live 並運行終端會話。
  • sudo mount /dev/sda1 /mnt
  • sudo /mnt/usr/sbin/grub-install /dev/sda --skip-fs-probe --boot-directory=/mnt/boot
  • sudo sed -i 's/OLD-UUID/NEW-UUID/g' /mnt/boot/grub/grub.cfg(我從 grub.cfg 檔案中獲取了舊的 UUID。它被列出了多次,因此全域替換為sed。新的 UUID 來自blkid。)

相關內容