如何通過 SSH 安全地將一個 Linux 發行版替換為另一個發行版?
我打算用 Arch Linux 替換 NAS 的 Custom Linux(詳情在底部),當然希望保留所有使用者數據並且(由於 SSH-only 無頭訪問)試圖做到萬無一失,因為錯誤可能需要韌體重新安裝(甚至將設備變磚)。因此,在沒有適當準備的情況下執行安裝(下載適當的Arch Linux ARM 版本並可能使用chroot 進入 LiveCD 方法),我必須記住什麼?(請隨意回答,不受 Arch Linux 限制)更準確地說:
具體情況是,我想用Arch Linux ARM替換Buffalo LinkStation Pro Duo(armv5tel 架構,nas-central 描述在這裡更有幫助,還提供有關如何獲得 SSH root 訪問權限)的自定義 Linux 。但更一般的答案可能對其他人也更有幫助。
有了所需的技能,尤其是有關已安裝 linux 的知識,不再值得更換它。不管你做什麼,你可能永遠不想替換已經安裝的核心。然而,你可以讓你的 Arch linux 相對簡單和簡單!
概念:您將arch linux安裝到NAS上的某個目錄中,然後將chroot(
man chroot
)安裝到其中。這樣你就不需要更換 nas linux。你安裝和配置你的arch linux,一步一步用arch linux服務替換原生linux的服務。你的arch linux安裝越完整和強大,你就可以自動完成chrooting過程,一一關閉本地linux提供的服務,同時自動啟動chrooted arch linux中的服務。完成後,NAS 的啟動過程如下所示:載入核心並將硬碟掛載,chroot 到 arch linux 中,exec /sbin/init
在你的 chroot 環境中。您需要自己計算出精確的 doibg,b/ci 既不知道 arch linux 也不知道您的 NAS 及其作業系統。您需要創建要安裝arch linux的目標目錄;它需要在具有足夠可用可寫空間(
mkdir /suitable/path/archlinux
)的設備上,然後您需要引導您的 Arch linuxcd /suitable/path/archlinux wget http://tokland.googlecode.com/svn/trunk/archlinux/arch-bootstrap.sh bash arch-bootstrap.sh yournassarchitecture
現在您在該路徑中有一個基本的 arch linux。您可以按照以下方式 chroot 進入它
cp /etc/resolv.conf etc/resolv.conf cp -a /lib/modules/$(uname -r) lib/modules mount -t proc archproc proc mount -t sysfs archsys sys mount -o bind /dev dev mount -t devpts archdevpts dev/pts chroot . bin/bash
那麼你應該
source /etc/profile
. 現在您的 currnt shell 在您的 arch linux 中,您可以使用它,就好像您已經替換了您的本機 linux ……您在目前程序的範圍內擁有它。顯然你想安裝東西並配置你的 Arch linux。當你使用目前的 shell 執行/etc/init.d/ssh start
時,你實際上是在啟動你的 arch linux 安裝的 ssh 守護程序。當你完成並且你真的想用 arch linux 完全替換你的原生 linux(服務)時,你的 NAS 的原生 linux 不再啟動任何服務,而是執行上面的 chroot 過程,不同之處在於最後一行是
exec chroot . sbin/init
.這不像真正的替代品那樣完整,但它得到了萬無一失的證明。並且如最初所述,憑藉為此所需的知識和技能,恕我直言(!),完全更換不是必要的,也值得。