每当我买了一台新笔记本电脑,我都要经历做sudo apt-get install xxx
所有我已经习惯的事情的痛苦,也就是说,我必须重新创建整个环境。考虑到我在两台笔记本电脑上都使用 Ubuntu,有没有一种无忧的方式可以从一台笔记本电脑迁移到另一台笔记本电脑?(除了一直使用虚拟机之外?我也尝试过使用 Vmware 从物理机迁移到虚拟机,但体验并不顺利)
答案1
是的,在一定程度上你可以
这假设您拥有相同的/etc/apt/sources.list
和/etc/apt/sources.list.d/
文件,前者用于常规存储库,后者是 ubuntu 添加 PPA 的地方。将其从源系统复制到目标系统,然后运行 apt-get/aptitude/ubuntu 软件中心的更新命令 -请参阅 AU 上的这个答案以了解更多详细信息
我已经调整了从ubuntugeek.你可以将源系统中的软件包列表转储到名为installedpackages的文本文件中,使用以下命令
sudo dpkg --get-selections | grep '[[:space:]]install$='| awk '{print $1}' > installedpackages
并将 installpackages 复制到目标系统,然后cat installedpackages | xargs sudo aptitude install
在已安装包所在的位置重新安装它
对于主要的配置文件来说,复制 /etc/ 可能也是一个好主意。
当然,还要复制过去/home/username
以获得您的工作环境的副本,例如您的主文件夹和桌面。
软件包列表转储并重新安装摘自 ubuntugeek.com
这应该涵盖 ubuntu 的“桌面”安装上的大量文件。可能会遗漏一些特定内容(apache 虚拟主机就浮现在脑海中),但应该解决软件包和桌面相关设置的问题。
答案2
dd
您可以将整个文件系统从一个分区复制到另一个分区。例如,使用和的组合nc
。
root@old# dd if=/dev/sda1 bs=4M | nc -l -p 4444
root@new# nc old 4444 | dd of=/dev/sda1 bs=4M
这假设您在新系统上运行实时系统(例如,从安装 CD 运行)。并且您拥有旧系统的主机名或 IP 地址,因此您可以通过 TCP 连接到它。sda1
假设是 Linux 文件系统的分区;如果您使用不同的分区或多个分区,请根据需要进行调整。如果您可以将两个驱动器连接到同一台机器,则可以使用dd
不带nc
。
按照上述方法复制文件系统后,您可以
resize2fs
如果新分区较大,则调整文件系统大小。- 将文件系统挂载到某处并
chroot
安装引导加载程序。您可能需要mount --bind
额外的文件系统,例如/dev
来自实时系统内部的文件系统。 - 再次在 chroot 内部,调整已安装的驱动程序集以匹配新硬件。
我已经将文件系统迁移到多个不同的硬件配置,包括多个硬盘。从 32 位切换到 64 位有点困难,但使用 Gentoo 我甚至无需从头开始重新安装系统就可以做到这一点。