开发人员如何“write on MacOS, Run in Linux ”?

2018-02-19 20:16:38 +08:00
 billows

1、日常工作习惯了在 MacOS 下使用 VSCODE 做开发,但是产品运行环境是在 CentOS 上,有时候会用 Docker 去做编译,但是有些环境 docker 也胜任不了,就只能搭建虚拟机,开共享文件夹,达到在 macos 上写代码,在虚拟机中去编译运行的效果。。

2、另外,有时候需要做探索方面的工作,需要装各种各样的环境,如果一直在 macos 上做,也容易导致 macos 越来越臃肿,我想到的办法也是弄虚拟机,虚拟机有快照,弄完了恢复就行。但是装的虚拟机的桌面在 mbpr 上的显示效果都好渣啊。。

3、以上,有时候会觉得自己是被 macos 的给毒害了,😓。。。。

除此之外,还有什么其他方法吗?求大佬指教。

11360 次点击
所在节点    程序员
49 条回复
adadada
2018-02-21 10:13:35 +08:00
我是做 KVM 和 QEMU 开发的,也在用 mac,来说说我的经验。我不用 Libvirt,所以情况可能和题主有所不同。根据开发的内容对 KVM 的依赖程度,主要分为三种情况:

1. 只依赖 QEMU 不依赖 KVM,例如大部分的设备模拟 (virtio ...) 和 QMP 接口。这种情况下基本就是在 mac 上编译和运行 QEMU。当然,因为 QEMU 主要是为 Linux 环境开发的,mac 上的编译环境经常会被 break 掉,所以可能需要开发者在 upstream 修复之前自己去定位和修复。此外,TCG 通常会比较慢,但是在 upstream 逐渐加入 Hypervisor Framework 支持后 (Paolo 的一部分 patch 已经合并到 upstream),可能会有所改观。

2. 轻度依赖 KVM,例如涉及 MSR 处理和中断处理的地方。这个度不太好定义,还是需要开发者自己把握。这种情况基本上就是要上支持 nested virtualization 的虚拟机了。我目前用的是 VMware Fusion,这个也只能说是勉强能用 (Mac 上的虚拟机对 nested virtualization 的支持普遍不好,更不要提 VirtualBox 这种玩具级别的完全不支持 nested virtualization 的虚拟机了)。代码的话,可以通过 VMware Fusion 的 shared folder 和 VM 共享。

3. 以上都不适用的情况,例如需要使用 nested virtualization 环境下没有的 KVM 特性,只有物理机上有的特性,或者对性能有需求的场景等。这种情况就只能上物理机了。代码的话可以通过 rsync 同步。
mritd
2018-02-21 15:16:34 +08:00
不行就物理机加 CI 吧
Mirana
2018-02-21 15:40:58 +08:00
ssh 到虚拟机啊,不要用虚拟机原生的桌面
gongzhang
2018-02-22 09:23:41 +08:00
注意大小写 macOS
billows
2018-02-22 10:25:50 +08:00
@gongzhang 谢谢提醒


@adadada 非常感谢,我在这方面是新手,方便的话能否提供个联系方式,有问题需要请教。


@Mirana 目前是这样,通过共享文件夹。ssh 到虚拟机去编译运行。
zhangdawei
2018-02-22 11:01:58 +08:00
@hujianxin 能详细介绍下吗
billows
2018-02-26 12:36:32 +08:00
@adadada 咨询下 libvirt 的问题,1、libvirt 可以监控指定 domain 的带宽信息吗?我需要统计一个 domain 指定时段内的流量。 2、libvirt 创建的 domain,可以移植吗?类似于虚拟机的 export 和 import
adadada
2018-02-26 20:04:03 +08:00
@billows #46 我只做到 QEMU 这一层,再往上的东西就不懂了
billows
2018-02-26 21:36:11 +08:00
@adadada libvirt 是对 qemu 等虚拟化软件的封装库,QEMU 能不能监控带宽呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/431251

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX