我想将 Ubuntu 桌面的配置迁移到具有不同硬件的新机器。做到这一点最简单的方法是什么? /etc/ 包含机器和硬件特定的设置,所以我不能盲目地复制它。安装的软件包也存在类似的问题。
编辑:这是从 x86 到 x86-64 的迁移。
答案1
首先,如果您要继续运行 32 位二进制文件,那么您实际上并没有更改处理器架构:您仍然会运行 x86 处理器,即使它还能够执行其他操作。在这种情况下,我建议克隆您的安装或简单地移动硬盘,如中所述将 Linux 安装移动到新计算机。
另一方面,如果你想要一个 64 位系统(用 Ubuntu 术语来说:一个amd64
架构),你需要重新安装,因为你不能amd64
在 64 位系统上安装软件包。i386
,反之亦然。 (当多架构随之而来)。
许多自定义项都位于您的主目录中,您可以将其复制到新计算机。由于处理器架构的变化,系统设置无法轻易复制。
在 Ubuntu 10.10 及更高版本上,尝试统一会议。
OneConf 是 Ubuntu One 中记录软件信息并根据需要与其他计算机同步的机制。在 Maverick 中,存储了已安装软件的列表。这最终可能会扩展到包括一些应用程序设置和应用程序状态。其他工具如点画可以提供更高级的设置/控制。
您在新安装中想要重现的主要内容之一是已安装的软件包集。在基于 APT 的发行版中,您可以使用命令aptitude-create-state-bundle
(软件包的一部分aptitude
)创建一个包含已安装软件包列表及其软件包的存档德布会议配置,以及aptitude-run-state-bundle
在新机器上。 (谢谢直觉的告诉我有关aptitude-create-state-bundle
。)另请参阅Ubuntu 列出显式安装的软件包以及其中引用的超级用户和询问 Ubuntu 问题,特别是忒勒马科斯的回答,关于如何手动完成这部分。
对于您在 中更改的内容/etc
,您需要进行检查。许多与特定硬件或网络设置有关,不应复制。其他与个人偏好有关 - 但您应该尽可能根据每个用户设置个人偏好,以便将设置保存在您的主目录中。
如果您提前计划,您可以使用等等管理员 放在/etc
版本控制之下(etckeeper 快速入门)。你不需要了解任何关于版本控制的知识就可以使用etckeeper,如果你想利用它来做一些花哨的事情,你只需要开始学习。
答案2
以下是获取除手动配置之外的所有内容的方法:
dpkg --get-selections > packages.txt
debconf-get-selections > debconf.txt
根据需要编辑这些依赖于 arch 的文件(例如,linux-image),但我认为不会有太多。
将这些文件复制到新系统然后运行:
debconf-set-selections < debconf.txt
dpkg --set-selections < packages.txt
apt-get dselect-upgrade
您还需要将 /home 和任何其他数据目录复制(最好使用 rsync)到新系统。
唯一剩下的就是来自主要包的配置文件(例如,apache、bind、cronjobs 等)。
答案3
事实上,如果您使用将所有驱动程序作为模块的通用内核(这是 Ubuntu 的常见情况),那么许多有关驱动程序、注册表和对主板更改敏感的 Windows 巫毒在 Linux 上就不那么严重了。据我所知,这些是 /etc 中唯一依赖于硬件的内容:
- 如果您安装了专有的图形驱动程序,我认为这些可能是一个问题。
- 我已经将安装有 Debian 的硬盘从旧的 HP Pavilion(500Mhz cpu,相当旧)更换为稍新的 MSI KT4V 板。我遇到的唯一问题是我的网络接口名称弄乱了。但这对我的影响比普通用户更大,因为这个安装是明确用作路由器的。
- 另一个可能受到影响的东西是流明传感器(如果您使用它)。这是主板特定的,但您可以运行 Sensor-Detect 来修复该问题。
- 如果您更改 Linux 期望其根分区的设备,或者 /etc/fstab 中指向的任何设备/分区发生更改,即您要从 PATA 驱动器移至 SATA,那么您必须更新此设备,否则 Linux 将有问题。
如果 GPU 相同,驱动控制器是相同类型,并且您没有一堆依赖于网络接口名称的自制脚本,我预计不会出现重大问题。
答案4
[添加到这个优秀的答案]
我看到您提到了对已安装软件包的关注。我想您的意思是要将磁盘从一台机器转移到另一台机器。假设您的两台机器是 x86 架构,我能想到的唯一可能发生的问题是您的安装是 64 位而您的新机器不是。如果情况相反,应该没有问题。