Ubuntu

將 64 位 Ubuntu 伺服器轉換為 32 位 Ubuntu 伺服器

  • July 4, 2011

我們有一個似乎安裝了 64 位版本的 Ubuntu 伺服器 vmware-instance。

不幸的是,我們現在想將它移動到僅限 32 位的主機,因此目前安裝將無法執行。安裝相當調整,所以我真的非常喜歡轉換目前安裝而不是進行全新安裝。

是否有可靠的方法來獲取所有內容的 32 位版本並轉換核心,還是我應該完全放棄這個想法?

感謝所有幫助。


編輯:這個 Linux 實例的主要目的是提供一個 CVS 儲存庫。經過仔細考慮,我們決定從 CVS 遷移到 git,而不是進行 64->32 位練習。

我懷疑沒有簡單、穩定、可靠、自動化的方法,因為它不是經常需要的東西,不值得花大量時間開發和測試,手動完成可能需要比簡單地從頭開始重建 VM 的安裝更長。

您可以在一定程度上加快重建速度,您可以通過執行確保安裝了所有相同的包

sudo dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > package_list

在舊虛擬機上,傳輸文件並執行

cat package_list | xargs sudo apt-get install

在新的虛擬機上。

然後將舊 VM 的/etc/樹複製到新機器上(而不是像/etc- 將它臨時放在某個地方)並使用diff工具來定位您需要轉移的差異。不只是批量複製/etc到位的原因是,某些 64 位/32 位軟體包的預設配置可能存在細微差異,您可能至少希望對其進行研究,而不是在不知道的情況下進行閃電戰。首先/etc/apt/sources.lst需要有所不同。(即使這樣做是為了將 32 位安裝複製到另一個 32 位安裝,我仍然不會只是/etc批發複製 - 做這樣的差異可以讓您找到不再相關的東西,為了清晰起見應該清除)

一旦完成複制 /home 以重新獲得任何使用者特定的配置和數據,以及/var/www如果您有 HTTP 從那裡提供的文件等等,您就完成了。

我使用上面的方法將一個 32 位安裝複製為另一個 32 位安裝,但它應該在架構之間同樣有效。您可能會發現某些包會導致apt-get命令警告您找不到包。其中一些將是 32 位兼容包,顯然不會出現在 32 位儲存庫中(只需將它們從包列表中刪除並重新執行),還有一些可能是明確命名為 32 位和 64 位包的包(在這種情況下,使用在 packages.ubuntu.com 上的搜尋找到正確的名稱,編輯包列表,然後重新執行 apt-get)。

*當然,這不會複製您沒有從 Ubuntu 儲存庫安裝的任何內容,因此您必須手動重做類似的任何事情,*否則此過程可能會為您節省一點時間。此外,在執行 apt-get 之前,請確保新的 VMs sources.list 啟用了與舊的相同的儲存庫,否則您會從apt-get.

引用自:https://serverfault.com/questions/102656