Linux

從一台電腦獲取現有的 Linux 安裝以在另一台電腦上啟動

  • January 15, 2011

我有一個現有的 Dell Precision 690 工作站設置來雙啟動 Windows XP 和 CentOS 5.5。這些作業系統安裝在兩個單獨的驅動器上。我在 Linux 驅動器上有一個 grub 菜單,它設置為驅動器 1,並指向驅動器 2 上的 Windows 啟動資訊。

我嘗試使用 linux 驅動器並將其安裝在新的 HP Z800 工作站上,看看我是否有幸讓它啟動,但它沒有。它開始啟動後立即出現一些錯誤。

這是系統顯示的內容:

在此消息之後,Red Hat nash version 5.1.19.6 starting我得到以下幾行:

Unable to access resume device (LABEL=SWAP-sda2)
mount: could not find filesystem '/dev/root'
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!

有什麼我可以調整以使其可能啟動的嗎?我真的很想不必在這台機器上重新載入 CentOS 5.5 和專用軟體。

我在這個驅動器上有一個 grub 菜單設置,這可能是我的問題嗎?舊機器中的驅動器設置為 Linux 作為驅動器 1,Windows 作為驅動器 2,Linux 驅動器託管 grub 菜單,允許我啟動到 Linux 或 Windows。這可能是個問題嗎?

我確實知道使用 Windows 解決此問題的方法:在機器中安裝輔助 HDD 控制器卡,安裝驅動程序,將驅動器連接到舊機器中的控制器並確保它啟動,將驅動器和控制器移動到新機器並啟動關閉它,載入主機板驅動程序(特別是硬碟控制器驅動程序),然後你可以取出控制器卡,將硬碟直接連接到主機板上,你就設置好了。同樣的事情可能在 Linux 中可以完成,但我不確定。如果沒有其他方法,這可能是最後的嘗試。

如果你走到這一步,這意味著引導載入程序成功載入了核心和 initrd/initramfs,但核心沒有找到根設備。因此,您應該能夠通過root=/dev/sda42在核心命令行上傳遞類似的東西來啟動。

在 Grub 提示符下,編輯 Linux 條目,然後查找以 . 開頭的行linux。在那一行上,應該有一個看起來像root=/dev/sda42. 將其更改為root=/dev/sdb42,即不同的驅動器。目前字母可能不是a,並且有效的字母可能不是b,但如果您有兩個驅動器,您可能只需要交換sdbsda反之亦然。

Linux 中驅動器號的順序與 BIOS、Grub 或 Windows 中的順序無關(或至少不直接相關)(這取決於載入驅動程序的順序)。(有一些方法可以解決這個問題,但它們現在不會幫助你。)

啟動時,如果條目/etc/fstab與目前磁碟設備名稱不匹配,您可能會收到錯誤消息。如果您無法進入修復控制台,請重新啟動並(除了root=更改之外)init=/bin/sh直接添加到 shell,然後執行

mount /proc
mount -o remount,rw /
vi /etc/fstab    # or whatever your favorite editor is

引用自:https://unix.stackexchange.com/questions/5887