如何通过 SSH 安全地将一个 Linux 发行版替换为另一个发行版?

如何通过 SSH 安全地将一个 Linux 发行版替换为另一个发行版?

我打算用 Arch Linux 替换 NAS 的 Custom Linux(详细信息在底部),当然希望保留所有用户数据,并且(由于仅限 SSH 无头访问)尝试万无一失,因为可能会出现错误固件重新安装(甚至使设备变砖)。因此,不要运行安装(下载适当的Arch Linux ARM 版本并可能使用chroot 到 LiveCD 方法)如果没有适当的准备,我必须记住什么? (请随意回答,不受 Arch Linux 的限制)更准确地说:

  • 我是否必须费心弄清楚特定设备的引导过程如何工作(例如引导加载程序的哪些部分驻留在闪存上,哪些部分位于硬盘上),或者我可以依靠发行版的安装程序来正确处理这个问题吗?
  • 如何确定是否使用了某些(可能是专有的)驱动程序以及如何将它们迁移到新设置中?
  • RAID 配置是否不会被意外删除?
  • 有没有办法伪造启动过程,以便我可以检查安装是否正确,同时只需重新启动即可访问原始系统?例如使用chrootkexec不知何故?
  • 我还应该注意什么?

具体情况是我想从一个替换定制的LinuxBuffalo LinkStation Pro 双核(armv5tel架构,鼻中枢描述此处更有帮助,还提供了有关如何进行操作的说明获得 SSH root 访问权限) 和Arch Linux ARM。但更笼统的答案可能对其他人也更有帮助。

答案1

有了所需的技能,尤其是有关已安装的 Linux 的知识,就不再值得更换它了。无论你做什么,你可能都不想替换已经安装的内核。然而,你可以让你的 arch linux 相对简单并且万无一失!

概念:将 arch linux 安装到 NAS 上的某个目录中,并man chroot对其进行 chroot ()。这样你就不需要更换nas linux。您安装并配置您的 arch linux 并逐步将本机 linux 的服务替换为 arch linux 服务。你的 arch linux 安装越完整、越强大,你就可以自动执行 chroot 过程,一一关闭本机 linux 提供的服务,同时自动启动 chrooted arch linux 中的服务。完成后,NAS 的启动过程将如下所示:exec /sbin/init在 chroot 环境中加载内核并挂载硬盘,chroot 到 arch linux。

你需要自己计算出精确的 doibg,b/ci 既不知道 arch linux,也不知道你的 NAS 及其操作系统。您需要创建要安装 arch linux 的目标目录;它需要位于具有足够可用可写空间的设备上 ( mkdir /suitable/path/archlinux),然后您需要引导您的 arch linux

cd /suitable/path/archlinux
wget -nd https://raw.githubusercontent.com/tokland/arch-bootstrap/master/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。现在,您当前的 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

这并不像真正的替代品那么完整,但也是万无一失的。正如最初所述,凭借所需的知识和技能,恕我直言(!),完全更换是不必要的,也是值得的。

相关内容