如何在具有不同硬件的计算机之间迁移配置?


9

我想将Ubuntu桌面的配置迁移到具有不同硬件的新盒子。最简单的方法是什么?/ etc /包含机器和硬件的特定设置,因此我不能盲目地复制它。安装的软件包存在类似的问题。

编辑:这是从x86到x86-64的移动。


@Gilles我认为“不同的硬件”值得另一个问题,尤其是从x86到x86-64的迁移。
phunehehe 2011年

对于处理器架构相同的更简单情况,请参阅将linux安装移至新计算机。@phunehehe:这个问题最初没有提到架构差异。
吉尔(Gilles)“所以,别再邪恶了”,

Answers:


7

首先,如果您要继续运行32位二进制文​​件,那么您实际上并没有在更改处理器体系结构:即使x86处理器也能够执行其他操作,您仍将在运行它。在这种情况下,我建议克隆安装或仅移动硬盘,如将linux安装移动到新计算机中所述

另一方面,如果要使用64位系统(用Ubuntu术语:amd64体系结构),则需要重新安装,因为不能amd64i386系统上安装软件包,反之亦然。(这将在Multiarch出现时改变)。

许多自定义项位于您的主目录中,您可以将其复制到新计算机上。由于处理器体系结构的变化,无法轻松复制系统设置。

在Ubuntu 10.10及更高版本上,尝试使用OneConf

OneConf是一种用于在Ubuntu One中记录软件信息并根据需要与其他计算机同步的机制。在Maverick中,存储已安装软件的列表。最终可能会扩展为包括一些应用程序设置和应用程序状态。其他工具,如点画可以提供更高级的设置/控制。

您希望在新安装中复制的主要内容之一是已安装的软件包集。在基于APT的发行版上,可以使用aptitude-create-state-bundle命令(aptitude软件包的一部分)在新计算机上创建一个包含已安装软件包及其debconf配置列表的归档文件aptitude-run-state-bundle。(感谢直觉告诉我有关的信息aptitude-create-state-bundle。)另请参见Ubuntu列表中明确安装的软件包以及此处引用的Super User和Ask Ubuntu问题,特别是 Telemachus的答案,有关如何手动执行此部分。

对于您已经改变的事情 /etc,您需要对其进行检查。许多问题与特定的硬件或网络设置有关,因此不应复制。其他设置与个人首选项有关-但是您应该尽可能按用户设置个人首选项,以便将设置保存在主目录中。

如果事先计划,则可以使用etckeeper 安装etckeeper进行/etc版本控制(etckeeper quickstart)。您无需了解任何有关使用etckeeper的版本控制的知识,只要您想利用它来做一些奇特的事情,就只需开始学习。


您能否解释一下有关处理器架构问题的部分。我希望这不会有问题,因为他从x86-32迁移到x86-64。
tshepang 2011年

1
@Tshepang:只要你不改变架构,它的简单复制整个安装(/home/etc/var/usr和所有的),只是编辑的几个文件etc是需要编辑。如果要切换到其他体系结构,这不是一个选择,因为您需要重新安装所有二进制软件包。
吉尔(Gilles)“所以,别再邪恶了”,

1
@ user4745:理想情况下,您将/etc使用有意义的提交消息分别提交每个更改(而不是依赖于自动提交挂钩),并在与系统管理员首选项或站点范围的配置不同的分支上提交计算机特定的更改。但是,即使是基本用法也可以帮助您跟踪对所做的更改/etc,以便可以将其复制到新计算机上。
吉尔(Gilles)“所以,别再邪恶了”,

1
这与使用相比如何aptitude-create-state-bundle
直觉

1
@intuited:我不知道aptitude-create-state-bundle。谢谢,这是一种重现APT管理状态的自动方法(比不重现APT源或debconf设置的手动方法更好)。您可能要一个答案添加 相关的 问题为好。
吉尔斯(Gilles)“所以,别再邪恶了”,

3

除了手动配置的内容,以下是获取所有内容的方法:

dpkg --get-selections > packages.txt
debconf-get-selections > debconf.txt

对于与拱有关的任何内容(例如linux-image),都需要根据需要编辑这些文件,但是我认为不会太多。

将这些文件复制到新系统,然后运行:

debconf-set-selections < debconf.txt
dpkg --set-selections < packages.txt
apt-get dselect-upgrade

您还需要将/ home和任何其他数据目录复制(最好使用rsync)到新系统。

剩下的只有主要软件包的配置文件(例如apache,bind,cronjobs等)。


2
+1表示debconf,但-1表示恢复dpkg选择。这会将所有软件包标记为手动安装在新计算机上。使用aptitude search '~i !~M'以节省手动安装的软件包列表; 有关更多信息,请参见此答案
吉尔(Gilles)“所以,别再邪恶了”,

1

如果您使用的是将所有驱动程序作为模块的通用内核,那么在Linux上,关于驱动程序,注册表以及对主板更改敏感的许多Windows伏都教并不是那么严重,这是Ubuntu的常见情况。这些是/ etc中唯一依赖于我所知道的硬件的东西:

  • 如果您安装了专有的图形驱动程序,我认为这可能是一个问题。
  • 我已将装有Debian的硬盘从旧的HP Pavilion(500Mhz cpu,相当旧的)更换为稍新的MSI KT4V主板。我唯一的问题是我的网络接口名称混乱。但这比普通用户对我的影响更大,因为此安装明确用作路由器。
  • 如果使用的话,可能会受到影响的另一件事是流明传感器。这是特定于主板的,但是您可以运行传感器检测程序来修复它。
  • 如果您更改设备,Linux希望它的根分区是,或者/ etc / fstab中指向的任何设备/分区都已更改,即您正在从PATA驱动器转移到SATA,则必须更新此设备,否则Linux将有问题。

如果GPU是相同的,驱动器控制器是相同的类型,并且您没有一堆依赖于网络接口名称的自制脚本,那么我认为不会出现重大问题。


硬件不会非常相似,磁盘更大,分区不同,GPU也不同。我认为复制文件层次结构在没有剧烈干预的情况下是行不通的,因为它将是x86-> x64的过渡。
2011年

引导选项(/etc/default/grub以的值存储在中GRUB_CMDLINE_LINUX_DEFAULT)应添加到此列表中。
直觉

0

[加上这个极好的答案 ]

我看到您提到有关已安装软件包的问题。这样,我想您的意思是要把磁盘从一台机器转移到另一台机器。假设您的两台计算机是x86体系结构,那么我能想到的唯一问题是您的安装是64位的,而您的新计算机不是。如果事情不一样,那应该没有问题。


我没有在传输磁盘,但是如果可以的话,我可以复制整个驱动器。假设我进行了全新安装,我想重新安装相同的软件包,而忽略与硬件或系统相关的软件包。
2011年

同样,它将是x86-> x64过渡。
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.