前言
这篇文章要讲的内容和标题一样,就是怎么在虚拟化环境下配置开发环境。经过实习期间大大小小的开发环境配置,以及诸多的炸机体验,我认为在虚拟化环境下配置开发环境比较好。
简单来说,就是把开发环境放在虚拟机或者 Docker 里,和日常使用的系统隔离开。这样就算环境被装坏、配置被搞乱,也能随时恢复或者重新搭建,不影响宿主机。
其实我也是在不断摸索,可能几个月后我了解到了更多的技术,知晓了更好的办法
所以这篇文章可能随时会改,只能说做下参考,欢迎你们评论说说你们的方法
缘由
我第一次冒出这个想法,是刚开始实习、在公司分配的电脑上安装开发环境的时候。
编译工具链之类的软件都是客户发过来的,是一个 Windows 上的 *.exe 安装程序。我想着应该也没什么问题,于是就直接运行了安装程序。然后 Windows 要求重启,这也没问题,很多软件安装完也都会要求重启,于是我就重启了。然后就坏了。
后来查到客户发过来的安装程序里带有病毒脚本,会破坏电脑上所有软件的链接,导致电脑开不了机。就算用安全模式之类的办法勉强进入系统,也打不开任何软件。
最后无奈用 U 盘重装系统,重新安装环境。好在刚实习的时候电脑里没什么重要的数据,大部分数据我也都保存了。
方法
后来再配置开发环境,我就不直接在主机上装了,而是放到虚拟化环境里。我目前用到的虚拟化方式主要有两种:虚拟机和 Docker。
虚拟机
虚拟机,也就是 VM(virtual machine),简单来说就是用软件模拟出一台完整的电脑,可以在里面安装一个独立的操作系统,和宿主机隔离开。
如果你需要使用桌面端环境进行开发、编译、烧录,或者使用调试器、串口这类外部接口,那么我推荐你使用虚拟机。虚拟机有完整的图形界面,串口、USB 这类设备也能直接映射进去,用起来和真实电脑差不多。
虚拟机管理软件一般都有一个很有用的功能,就是快照。在安装不熟悉的软件之前,可以先给虚拟机拍个快照。如果像上文那样,某个安装程序有 Bug,甚至把系统搞坏了,也能直接把虚拟机恢复到安装前的状态,不用重装系统。
奇怪的是,客户给的安装程序在虚拟机里执行就正常,在主机里执行就会破坏系统,真是奇怪
Docker
Docker 是操作系统级别的虚拟化。更准确地说,Docker 就是利用 Linux 容器技术,给应用程序封装一个独立的运行环境,每个运行环境就是一个独立的容器。和虚拟机不一样,Docker 不需要完整模拟一台电脑,它和宿主机共享内核,所以更轻量。
Docker 主要用于不需要桌面,但希望系统环境、安装的工具能够固定下来的情况。比如把编译工具链和依赖都放进镜像里,以后拿到同一个镜像,就能得到一模一样的编译环境。我之前在交叉编译的博客里就用了这个思路。
相比虚拟机,Docker 轻量得多,启动也快。
简单来说,需要桌面环境、外部设备和完整系统的时候用虚拟机;只需要一个干净、固定的命令行环境时用 Docker。这样就算安装的软件有问题,遭殃的也只是虚拟机或者容器,不会影响日常使用的电脑。
结语
不熟悉的第三方软件,一定不要直接安装在主机(宿主机)上,要先在虚拟环境里测试,或者至少提前准备好快照,方便恢复系统。
这是我电脑多次炸机得到的教训 😭