如果我要迁移到不同的硬件,如何复制我的 Linux 环境?

如果我要迁移到不同的硬件,如何复制我的 Linux 环境?

我目前已在 Kubuntu 上设置了 Eclipse、MySQL、Python、Firefox 等的软件包、模块、设置等。我还已根据自己的需求对 Kubuntu 进行了最佳配置。我想在另一台具有不同处理器的机器上复制我的环境(目前在 Intel Q9450 上,新处理器是 i7)。据我了解,我的应用程序是为与我的特定处理器一起使用而编译的,因此直接进行分区复制是不可能的。

有没有什么办法可以将我的环境复制到另一台机器上,而无需重新安装和重新配置所有内容?

答案1

据我了解,我的应用程序是为了特定处理器使用而编译的,因此直接进行分区复制是不可能的。

是什么让您得出这个结论?至少对于 x86,Kubuntu 安装的软件包经过编译后可在几乎所有非史前 CPU 上运行。我相信它们可以在 486 以上任何型号的 CPU 上运行,这对您来说可能不成问题 :-)。

因此直接分区复制应该就可以正常工作:

  • cp -a复制分区(或者,如果分区布局发生变化,则仅使用复制文件)
  • 使 /etc/fstab 适应新的分区布局
  • 为新分区重新配置引导加载程序,并重新安装引导加载程序
  • 启动并享受

问题只会出现在以下情况:

  • 自编译软件包,但即使如此,大多数也会默认为所有现代 CPU 进行编译,除非你使用编译器选项
  • 设备驱动程序

大多数现代内核在启动时自动检测硬件,所以通常即使是驱动程序也应该没问题,但如果出现故障,您通常可以在单用户模式下启动并修复任何驱动程序问题。

答案2

您可以不做任何更改就使用您的主目录。几乎所有进入主目录的内容都设计为可通过 NFS 等方式共享,因此您无需更改。

另外,使用以下方式保存您选择的套餐

sudo dpkg --get-selections '*' >file.txt

并在另一台机器上恢复它

sudo dpkg --set-selections <file.txt

类似地,使用以下命令保存你的 debconf 设置

sudo debconf-get-selections >file2.txt

并使用

sudo debconf-set-selections <file2.txt

对于其余/etc不由 debconf 管理的配置,很难追踪手动更改的内容,除非你使用了类似etckeeper(也许是未来的想法)。因此,我倾向于将大部分配置保存在主目录中。但是,既然您知道自己感兴趣的程序,那么应该很容易找到相关文件/etc并手动检查和复制它们。

答案3

您可以备份您的主页,然后将其恢复到另一台机器。这不能完全满足您的需求,但它将恢复所有配置。不过,您必须自己重新安装软件包。

答案4

支持获取、设置选择事项。

要确切知道哪些配置文件已发生更改,请运行以下命令:

dpkg-query --show --showformat='${Conffiles}\n' |sort -u | \
while read f m obsolete; do \
  [[ -r $f ]] || continue; m2=$(md5sum "$f") ;
  [[ $m2 != "$m  $f" ]] && echo "$f";
done |xargs -n1 dlocate  |tee ~/edited-conffiles

如果您尚未安装 dlocate,您可以用它替换它,dpkg -S或者跳过该部分。

备份所有配置文件:

dpkg-query --show --showformat='${Conffiles}\n' |sort -u | \
while read f m obsolete; do \
  echo "$f"
done |sudo tar cjf ~/conffiles.tbz2 -T -

相关内容