有可能把虚拟机 100% 复制到实体电脑上吗?

虚拟机效能还是比较低下,有可能 100% 复制虚拟机到实体电脑上吗?

对于部分滿足 POSIX 的 OS,包括 Linux macOS BSD Windows NT,在目标架構相同時(都是 x86_64),只要把用到的 lib 的接口都移植了,就能直接运行 binary。WINE 和 FreeBSD 的 Linux Binary 相容性都是这樣的做法。后者因 Linux 开源「曾經有報告指出,在某些情況下,Linux Binary 在 FreeBSD 的表現比在 Linux 好。」但是由于 Window NT 不开源,WINE 靠逆向工程能做到的比較有限,但 WINE 由于可调参数,对 Window XP 以前的软件支持好于 Windows 10。


恕我越偕,改了題目。如果我理解不对的话改回去吧⋯⋯

如果只看标题,我的回答是:可以

我最早就是在虚拟机学习使用 Ubuntu,一段时间后把整个系统打包(tar)迁移到硬盘,后来彻底告别 Windows。

再看正文,又有点不太明白问题的真实意图。

看到你的回答,我也不太明白问题了⋯⋯

抱歉,我再补充一些细节

我在Windows下用 virtualbox,主要工作平台是一个 archlinux guest,现在想把 archlinux 系统全部还原到一台电脑上,也就是不用 virtualbox,然后所有配置都保留。两位的回复都很有道理,但是有没有具体的实现步骤呢?

除了通常意义上的硬盘数据,还有其它:

  1. 硬盘分区表
  2. boot 分区 要不都启动不了,还谈什么后面的呢?
  3. 文件系统
  4. 硬件驱动 和宿主机肯定不一样,启动大概率蓝屏
  5. 然后才是操作系统各种 runtime、lib
  6. 软件
  7. 个性化配置

现在已有傻瓜化的软件,能实现硬盘对拷。实际效果和你把硬盘拆下来接到另一台电脑上一样的。

这样问题就简化为一个了:只要保证虚拟机“硬件驱动”和宿主机一致,所有东西都能完美迁移。

暂时就这些,想到了再说。

1 个赞

那看来还不太容易,估计会牵扯到许多底层的问题,

https://wiki.archlinux.org/index.php/Arch_boot_process_(简体中文)

以上链接里提到的有可能会出问题吗? 还是 systemd 可能会出问题

既然用 Arch 的话,先在虚拟机里预装完驱动,然后打包根目录成 tar,放到个能下载的地方或者移动储存设备上。另外做个安装 USB,按照 Archwiki 处理完分区以后解压 tar,然后稍微调节测试一下就行。只要有安装 USB 就算一开始启动不了也容易修改。

所有细节 Archwiki 应该都能参照。 实际上你可以先装几次全新的 Arch 练练手。

另一个比较稳妥的做法是,打包完 tar 以后,装一个全新的系统,处理网络和文件系统驱动等,把旧系统做成 chroot 用,把能用的配置慢慢复制到新系统。这样万一旧系统有什么软件冲突问题导致驱动弄不好也能很快开始使用。等迁移完成后就可以把旧系统删了。反正 Arch 更新周期快,旧系统没放几个礼拜就要全部换了。

引导程序没什么影响。

1 个赞

理论上那些操作都可以手动完成(还可以保证和虚拟机一样的参数),这样你把操作系统文件和其他数据复制到新硬盘对应分区,应该就可以了。至于硬件驱动在终端中慢慢调整安装。

应该可以完美迁移。

这种类似直接 dd 的做法我觉得会有不可预期的后果,因为虚拟机的分区表啊引导啊直接给实体用可能不太妥当,而且也不是轻易能改的。

1 个赞

再开台机器,把虚拟机的盘mount到实体机上 :smiley:

我想起来一个:

把光盘镜像 dd 到 U 盘,在新电脑正常安装一个全新的系统。记得保证 root 密码以及新用户账户和密码,都和以前一样。

把虚拟机操作系统所在的分区 cp 到新的硬盘/U 盘备份。这个硬盘分区/U 盘必须和虚拟机分区格式一样,比如都是 exf4。

archlinux 是 livecd 版的吧?在新电脑上以 livecd 方式启动,插上上一步做好的硬盘/U 盘。

livecd 版系统应该能无缝读取新操作系统分区文件和备份硬盘分区/U 盘,直接从备份 rsync 到新操作系统分区。除了 home 目录全部覆盖。当然,得除了驱动所在文件夹。

提前搜索一下驱动文件夹是不是集中放在一个地方,这样容易决定 rsync 时哪些目录不要覆盖。但即使不在一个地方,reboot 之后至少能进到终端,慢慢再安各种硬件驱动。


算了,还是硬盘对拷方案好使,操作步骤少还简单,仅有蓝屏风险。但至少应该能进到终端下,硬件驱动慢慢整。最省事儿。

1 个赞

硬件方面可能显卡和网卡比较容易出问题。

主要还是分区的问题吧,可以参考一些移动硬盘 linux 的安装方法,把 GRUB 设置好。然后再解压 linux_backup.tar.gz 到硬盘。

如果你的 virtualbox 可以用 Docker 代替,可以考虑在另外一台电脑安装 linux 当作主机,在上面跑 Docker 比在 Windows 轻很多。

1 个赞

卧槽,我属于用那种傻瓜软件的童鞋。。。虽然只用过mac的。。。不知道linux下是啥

我是以前在 Windows 上操作过,隔挺长时间了…

Linux/macOS 上只用过 dd ,不过 dd 严格来说应该算分区克隆工具?

恐怕得自己找一下对应软件。


刚才看了下 tldr,发现 dd 也是支持硬盘克隆的。

- Clone a drive to another drive with 4MB block, ignore error and show progress:                 
                                                                                                 
  dd if=/dev/source_drive of=/dev/dest_drive bs=4M conv=noerror status=progress

不过我自己没试过,不好说。

因為 *nix 中 分区 和设备 也是文件,实际上只要是广义上的文件(设备) dd 都能克隆。比如在 tty 之間传数据也能用 dd。

作为一个用了6年arch的用户,我觉得只要配置文件都保存好,从头装一个花费的时间不会超过一个下午(考虑到网速可能不够快)

Gentoo 用戶大胆表示重装不过十天的事。

十分钟装不好都会焦虑症发作,十天还不得去死...

问题就在这,配置文件很多很乱,各种 hack,真下不了决心重头来过