将 64 位 Ubuntu 服务器转换为 32 位 Ubuntu 服务器

Tho*_*sen 1 ubuntu 64-bit 32-bit

我们有一个 Ubuntu 服务器 vmware-instance,它似乎安装了 64 位版本。

不幸的是,我们现在想把它移到一个只有 32 位的主机上,所以当前的安装不会运行。安装相当调整,所以我真的,真的更喜欢转换当前安装而不是进行全新安装。

有没有可靠的方法来获得所有东西的 32 位版本并转换内核,还是我应该完全放弃这个想法?

感谢所有帮助。


编辑:这个 Linux 实例的主要目的是提供一个 CVS 存储库。经过慎重考虑,我们决定从 CVS 迁移到 git,而不是进行 64->32 位练习。

Dav*_*ett 5

我怀疑没有简单、稳定、可靠、自动化的方法,因为它不是经常需要的东西,值得花费大量时间进行开发和测试,而手动完成它可能需要花费大量时间比简单地从头开始重建 VM 的安装要长。

不过,您可以在一定程度上加快重建速度,您可以通过运行来确保安装了所有相同的软件包

sudo dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > package_list
Run Code Online (Sandbox Code Playgroud)

在旧 VM 上,传输文件并运行

cat package_list | xargs sudo apt-get install
Run Code Online (Sandbox Code Playgroud)

在新虚拟机上。

然后将旧 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 之前,请确保新虚拟机的 sources.list 启用了与旧虚拟机相同的存储库,否则您会从apt-get.