我们有一个Ubuntu服务器vmware-instance似乎与64位版本一起安装。
不幸的是,我们现在想把它移动到只有32位的主机上,所以当前的安装将不会运行。 安装是相当调整的,所以我真的很喜欢将当前的安装转换,而不是做一个全新的安装。
有一个可靠的方式来获得32位版本的一切,并转换内核,或者我应该完全放弃这个想法?
感谢所有帮助。
编辑:这个Linux实例的主要目的是提供一个CVS库。 经过仔细的考虑,我们决定从CVS迁移到GIT,而不是做64-> 32位的练习。
我怀疑没有一种简单,稳定,可靠,自动化的方法,因为它不是经常需要花费大量时间进行开发和testing的工作,而且手动完成这些工作可能会花费很多时间比从头开始重build虚拟机的安装要长。
尽pipe可以在一定程度上加快重build速度,但可以确保运行安装的所有软件包
sudo dpkg --get-selections | grep '[[:space:]]install$' | \awk '{print $1}' > package_list
在旧的虚拟机上,传输文件并运行
cat package_list | xargs sudo apt-get install
在新的虚拟机上。
然后将旧的虚拟机的/etc/ tree复制到新的机器上(而不是像/etc – 将它放在临时的某个地方),然后使用diff工具find需要传输的差异。 之所以不把大容量复制到其他地方,是因为某些64位/ 32位软件包的默认configuration可能会略有不同,您可能希望至less查看这些软件包,而不必知道这些configuration。 一开始/etc/apt/sources.lst将需要有所不同。 (即使这样做复制一个32位安装到另一个32位安装我仍然不会只是复制/etc批发 – 做这样的差异让你find不再相关的东西,应该已被清除明晰)
一旦完成复制/ home重新获得任何用户特定的configuration和数据,以及任何类似/var/www如果你有从HTTP服务的文件,等等,你已经完成了。
我使用上述复制一个32位安装作为另一个32位安装,但它应该同样适用于不同的体系结构之间。 你可能会发现一些软件包会导致apt-get命令警告你没有find软件包。 其中一些是32位compat软件包,显然不会出现在32位repo中(只是将它们从软件包列表中移除并重新运行),有些软件包可能是明确命名为32位和64位软件包的软件包(在这种情况下,使用packages.ubuntu.com上的searchfind正确的名称,编辑软件包列表,然后重新运行apt-get)。
当然,这不会复制任何你没有从Ubuntu储存库安装的东西,所以你必须手动重做任何东西,否则这个过程可能会为你节省一点时间。 另外,在运行apt-get之前,确保新的虚拟机sources.list与旧的虚拟机启用了相同的存储库,否则你会从apt-get更多的未find包的问题。
我知道它不仅是Ubuntu中的64位内核。
之前没有做过这个迁移,我不能肯定地说,但我觉得这个计划可能是最好的。 尝试将内核更改为实例副本上的32位,然后查看是否有效。 然后尝试将其复制到另一台机器。 如果这样做不起作用,请重新安装Ubuntu,并小批量复制configuration文件,以查看是否有任何问题。
如果第一种方式不起作用,第二种方式非常复杂且费时,但可以保存您的调整。
最好的select是执行重新安装。 作为一个例子,看看我的Ubuntu 64位服务器上的binutils包的细节:
smiller@corinne3:~$ dpkg-query -p binutils Package: binutils Priority: optional Section: devel Installed-Size: 10092 Maintainer: Ubuntu Core developers <[email protected]> Architecture: amd64 Version: 2.20-0ubuntu2 Provides: elf-binutils Depends: libc6 (>= 2.8), zlib1g (>= 1:1.1.4) Suggests: binutils-doc (>= 2.20-0ubuntu2) Conflicts: elf-binutils, gas, modutils (<< 2.4.19-1) Size: 1660892 Description: The GNU assembler, linker and binary utilities The programs in this package are used to assemble, link and manipulate binary and object files. They may be used in conjunction with a compiler and various libraries to build programs. Original-Maintainer: Matthias Klose <[email protected]>
“体系结构:amd64”这一行表示该软件包被编译为一个64位的二进制文件,并且在引导到一个32位的内核之前需要用32位版本replace。 当您replace核心libc6库时,会有很大的问题,因为很多软件包依赖于那些正在使用的库。