十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VirtualBox搭建Linux开发环境:从安装到调优的完整指南

VirtualBox搭建Linux开发环境:从安装到调优的完整指南 如果你跟我一样日常主力机是 Windows但手头又经常需要跑 Linux 环境来编译内核、调嵌入式交叉工具链或者就是想验证某个开源项目在 Linux 下的表现那 VirtualBox 大概率是你绕不开的第一个选项。我这几年用它搭过 Ubuntu、Debian、CentOS、Kali甚至跑过一套 Hadoop 学习环境前后踩了不少坑也攒下一些比官方文档更落地的经验。这篇文章就完整记录一下我是怎么从零把 VirtualBox 上的 Linux 开发环境搭到能干活的状态。先说结论VirtualBox 不是性能最强的虚拟化方案但它是我在免费、跨平台、易用、功能完整这四个维度里综合得分最高的选择特别适合做开发实验机和多发行版测试环境。下面所有步骤我都按照实际可复现的标准来写尽量把那些容易被忽略但直接影响成败的细节也讲清楚。1. 为什么我最终选了 VirtualBox而不是直接装双系统或改用其他方案1.1 几种常见方案的实际对比很多人拿到这个需求时第一反应是直接装双系统不就好了或者用 WSL2 不香吗。我的建议是视场景而定但 VirtualBox 在不少开发场景下确实比这两种更稳。先给出我自己基于实际使用做的对比表。方案优点主要痛点适合场景物理机双系统性能零损耗、硬件兼容性最完整切换系统要重启某个系统崩了会影响引导Windows 和 Linux 不能同时在线对性能有极致要求、且很少需要切换系统的场景WSL2启动快、和 Windows 文件互通最顺对 USB 设备、串口调试支持不彻底网络模型偏 NAT部分服务调试要额外配置内核是定制版和标准发行版有差异纯终端开发、写 Go/Rust/Python 这类不碰硬件的场景Docker Desktop资源隔离轻、可复现性极强只能跑 Linux 的用户态内核必须复用宿主机不能跑 systemd 完整系统也不能做内核调试或驱动开发微服务、CI/CD 验证、依赖安装测试VMware Workstation Player性能好、兼容性广免费版功能精简个人使用免费商业用途需授权体积较庞大不介意授权、需要比 VirtualBox 更强性能的场景VirtualBox开源免费、跨平台、快照/克隆/导出齐全性能不如 VMware 极致3D 图形性能一般偶尔和 Windows 的 Hyper-V 冲突开发实验、多发行版并存、嵌入式交叉编译、内核模块调试从表里能看出来VirtualBox 最核心的价值不是性能天花板而是功能齐全且几乎没有门槛。我实际用它跑过 Linux 内核编译四核八线程的机器开两个 vCPU全量编译大概比物理机慢二十分钟左右完全在可接受范围内。而如果你做的是 STM32 开发、PX4 飞控编译这类交叉编译工作瓶颈往往在磁盘 IO 和内存容量VirtualBox 的瓶颈反而没那么明显。1.2 VirtualBox 适合承载哪些开发环境任务基于我自己的经验下面这四类任务放 VirtualBox 里最合适内核 / 驱动开发你需要一个可以随便折腾、随时回滚快照的内核环境。比如做file_operations拦截 read/write 的实验搞不好就 oops没有快照的话你就等着重装吧。交叉编译环境比如 STM32 的 arm-none-eabi-gcc 工具链、树莓派内核编译、PX4 固件编译。这些工具链在不同发行版上的依赖不一样用一个统一模板封装好换机器也能快速恢复。网络实验 / 集群学习Hadoop、Kubernetes、Spark 这类需要多节点联调的环境VirtualBox 的 NAT Network 模式可以一键内网互通比用多台物理机划算太多。测试型任务比如在 Kali 里做安全工具实验或者在 Debian、CentOS 甚至国产发行版上验证软件兼容性。这类场景通常有破坏性虚拟机隔离是最好的保险。1.3 我需要提前说明的一个反直觉经验很多人以为 VirtualBox 安装 Linux 最难的部分是装系统实际操作后会发现最难的是安装增强功能Guest Additions和网络配置。原因在于VirtualBox 默认的 NAT 模式下虚拟机可以上网但宿主机很难主动连进去而开发场景里我们偏偏需要宿主机用 SSH 连进虚拟机或者让两个虚拟机互相通信。这个问题我在第 3 章会详细展开不要急。2. 从镜像选择到系统落地虚拟机创建与 Linux 安装全流程2.1 VirtualBox 版本怎么选以及扩展包的作用先解决一个问题到底下载哪个版本的 VirtualBox搜索记录里出现频率很高的virtualbox 5.2.44其实是旧时代的残留。5.2.x 系列本身没有功能问题但它对较新 Linux 内核的 Guest Additions 支持很差而且在新版 Windows 上容易报rc-1908一类驱动错误。我的建议很简单直接到官网下载当前最新稳定版不需要追求旧版。如果你有特殊需要比如宿主机是老旧 Windows XP 或 32 位系统那再考虑 5.2.x 分支。安装完 VirtualBox 之后紧接着做两件事安装 Extension Pack扩展包它提供 USB 3.0 支持、NVMe 存储、显卡直通增强、RDP 远程桌面等能力。下载时注意扩展包版本必须和 VirtualBox 主程序版本完全一致否则安装会报错。确认虚拟化开关进主板 BIOS/UEFI 打开 Intel VT-x 或 AMD-V。这一步不做虚拟机性能会很难看而且部分系统安装时甚至会直接卡住。提示Windows 宿主机上如果开启了内核隔离或 Hyper-VVirtualBox 会大概率报kernel driver not installed (rc-1908)。这个坑我在第 6 章单独讲先给一个最简单的临时处置以管理员身份运行 VirtualBox多数时候能顶一阵。2.2 Linux 发行版选择开发场景决定版本不是越新越好不同开发任务适合的发行版完全不同。下面是我的实战选择标准。开发任务首选发行版理由通用后端开发 / 嵌入式交叉编译Ubuntu LTS 或 Debian stable软件源最丰富arm 工具链一条命令装全出问题的答案最多纯终端 / 服务器运维模拟Debian netinst 或 CentOS Stream最小化安装贴近生产服务器环境内核 / 驱动开发实验Ubuntu LTS 或 Kali内核版本适中Kali 自带大量测试工具安全工具与渗透测试Kali Linux预装工具链齐全省去大量手动安装时间国产化软硬件适配验证按需求选择 openEuler、统信 UOS、麒麟等如果你在国有企业或信创项目赛道这个必须提前熟悉特别注意如果你在搜linux国产或者linux 面试题测试那多半是有意转向国产系统方向。VirtualBox 对国产发行版的兼容性和对 Ubuntu 差不多唯一要注意的是部分国产发行版默认不开 SSH 服务装完系统后需要手动安装并启用 openssh-server这我在后面网络章节一起说。2.3 创建虚拟机的关键参数不要全默认VirtualBox 的新建虚拟机向导看起来简单但有几个参数直接影响后续开发体验建议按下表配置。配置项我的推荐值理由内存至少 2048 MB开发编译建议 4096 MB内存小会疯狂触发 swap编译速度直接掉一半CPU 核心数2 核起步最高给物理机一半给太多反而因为调度竞争导致宿主机卡死显存64 MB 以上只跑终端 16M 也够但要装 GNOME 桌面则不够硬盘类型VDIVirtualBox 原生格式兼容性好后续扩容、迁移都方便硬盘分配动态分配 上限 40 GB 以上动态分配不占满物理磁盘但上限要留足给编译缓存存储控制器SATA / AHCINVMe 需要扩展包支持对老内核兼容性有风险EFI对 Ubuntu 20.04 开对老系统不开开 EFI 后部分旧发行版引导会失败创建完成后进入设置 - 系统 - 处理器记得勾选启用 PAE/NX和启用嵌套 VT-x/AMD-V。后者在做 Vagrant 或者 Docker 虚拟机嵌套实验时是前提条件。2.4 Linux 系统安装的细节与分区思路这一步大多数人会卡在是否全默认安装。我建议至少做两处调整。第一语言不要选中文。不是中文不能用而是开发环境下中文容易出现终端乱码、编码问题尤其是做嵌入式串口调试时乱码排查非常折腾。系统语言保持英文后续按需安装中文字体即可。第二分区方案建议用 LVM。理由很实际你永远不知道自己的/home会不会被编译产物塞满。LVM 可以在不重装系统的前提下扩展逻辑卷而传统分区方案扩容要再用 gparted 调整相邻分区流程繁琐还容易出问题。我常用的分区方案以 40 GB 虚拟磁盘为例/boot1 GBext4/30 GBext4挂在 LVM 逻辑卷上/home剩余空间ext4挂在另一个 LVM 逻辑卷swap如果你内存大于 4 GBswap 给 2-4 GB 就够甚至可以不用安装过程中网络镜像源可以先用默认源装完系统后再更换为国内镜像163、阿里云、清华 tuna 都可以。这一步能大幅提升后续apt install的速度属于性价比最高的优化。2.5 安装增强功能虚拟机和宿主机互通的关键步骤系统装完的第一件事不是装开发工具而是装 VirtualBox Guest Additions。它提供三样东西共享剪贴板、共享文件夹、动态分辨率调节。没有它虚拟机窗口拉伸不动、文件互传全靠网络开发体验是残废的。步骤很简单但在 Ubuntu/Debian 上有个前置条件sudo apt update sudo apt install -y build-essential linux-headers-$(uname -r)然后点击 VirtualBox 菜单栏的设备 - 安装增强功能虚拟机内会自动挂载一个 ISO 镜像执行cd /media/$USER/VBox_GAs_* sudo ./VBoxLinuxAdditions.run重启后生效。如果这一步报Building the main Guest Additions module ... Failed九成是内核头文件没装对回到上面那一条安装命令排查。3. 网络、共享与 SSH让虚拟机在日常使用中真正好用的三件事3.1 四种网络模式到底有什么区别这也是我在新手期绕了最久的一段弯路。VirtualBox 的网络模式看起来很多核心理解透四种就够了模式虚拟机能不能上网宿主机能否访问虚拟机虚拟机之间能否互通典型用途NAT能不能需端口转发不能临时代码测试桥接Bridge能能但依赖路由器分配 IP能同网段模拟局域网服务器Host-Only不能能能宿主机与虚拟机组私网NAT Network能不能需端口转发能多虚拟机集群开发我做开发机的时候最常用的组合是一张 NAT 网卡负责上网一张 Host-Only 或桥接网卡负责宿主机与虚拟机互联。这样既能保证虚拟机随时访问外网安装依赖又不会因为路由器 DHCP 变化导致 SSH 地址漂移。3.2 端口转发最省事的宿主机访问方案如果不方便用桥接NAT 下的端口转发其实是好帮手。例如我想从宿主机用 SSH 连进虚拟机只需要在 VBox 设置里配置一条规则名称ssh-host协议TCP主机 IP127.0.0.1主机端口2222子系统 IP10.0.2.15虚拟机内网卡 IP子系统端口22之后我在宿主机执行ssh -p 2222 user127.0.0.1就能直接进虚拟机。这个方法对只在本地使用的场景极其干净不需要关心路由器、防火墙、DHCP。3.3 SSH 免密登录配置开发环境里来回输密码很影响效率直接配好密钥登录。在宿主机Windows 也可以执行ssh-keygen -t ed25519 -C dev-vm ssh-copy-id -p 2222 user127.0.0.1虚拟机内确保/etc/ssh/sshd_config里有这一行PubkeyAuthentication yes然后重启sshdsudo systemctl restart sshd以后登录就是秒进而且 VSCode Remote-SSH 配置也顺手解决了。3.4 共享文件夹与权限问题的根治共享文件夹在开发环境里主要是用来做代码双向同步比如我想在宿主机用 IDE 编辑代码在虚拟机里直接编译。先在 VirtualBox 设置中添加共享文件夹比如把 Windows 的D:\code共享为code然后在虚拟机内执行sudo mkdir -p /mnt/code sudo mount -t vboxsf code /mnt/code但这样重启就失效了所以还要写入/etc/fstabecho code /mnt/code vboxsf defaults,uid1000,gid1000,umask022 0 0 | sudo tee -a /etc/fstab这里最容易踩的坑是权限。默认挂载的共享目录属主是 root普通用户只能读不能写编译时各种奇怪错误。上面的uid1000,gid1000就是让我自己的用户直接成为所有者省去sudo chmod的麻烦。如果你发现挂载时报mount: unknown filesystem type vboxsf说明 Guest Additions 没装成功回到第 2.5 节排查。4. 开发工具链与编译环境把虚拟机变成真正能跑项目的开发机4.1 装机后第一波的常规软件包系统装完、增强功能装完、网络互通之后就该正儿八经装开发工具链了。我给自己固定一套基本盘sudo apt update sudo apt upgrade -y sudo apt install -y build-essential git curl wget vim htop tree net-tools \ openssh-server ca-certificates pkg-configbuild-essential里包含了 gcc/g/make 等核心编译组件后面不管编译什么 C/C 项目都绕不开。net-tools提供ifconfig和netstat虽然在现代系统里已经被ip命令替代但很多老教程还用它装一个不亏。4.2 按动态语言补全运行时PythonUbuntu 自带 Python3但记得再装python3-pip python3-venv避免裸奔状态。Node.js不要直接用 apt 装的旧版 Node建议用 nvm 管理版本。Go下载官方 tar 包解压到/usr/local然后配置GOPATH和GOROOT。Rust一行命令就装好curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh如果你的方向是 vue3 前端开发那虚拟机里还要装好 VSCode Remote-SSH 的客户端侧插件或者直接用命令行工具链。我个人的做法是宿主机只做编辑虚拟机内跑npm run dev和编译中间通过端口转发访问调试端口比在 Windows 上直接跑前端依赖链顺畅很多。4.3 嵌入式交叉编译环境的专门补充如果你搜索stm32 开发环境或px4 开发环境搭建多半是嵌入式方向。虚拟机里做嵌入式开发有几个辅助项非常值得装sudo apt install -y gcc-arm-none-eabi openocd stlink-tools minicomgcc-arm-none-eabiARM 交叉编译链编译 STM32 固件必需。openocd用来连接调试器如 ST-Link下载和调试程序。stlink-toolsST-Link 的烧录工具。minicom串口调试配合 USB 转串口适配器使用。这里有个关键操作要让虚拟机访问宿主机上的 USB 调试器必须在 VirtualBox 设置里把 USB 设备直接从宿主机的设备列表转移给虚拟机。Menu - 设备 - USB - 勾选你的 ST-Link 或 USB-TTL 设备。如果这里找不到设备先确认你安装了 Extension Pack并且虚拟机里安装了 USB 3.0 控制器驱动。4.4 命令乱码问题与前 FFmpeg/解压场景很多人在 Linux 下解压 Windows 传过来的 zip 文件时遇到中文文件名乱码这其实是编码问题。Windows 下 zip 默认用 GBK/CP936 编码Linux 下默认用 UTF-8。最省事的解决方式是安装unzip时带上识别编码sudo apt install -y unzip p7zip-full解压时用7z x 文件名.zip7-Zip 会自动尝试检测编码乱码概率大大降低。而 grep/awk/sed 处理日志时如果发现乱码先确认终端 localeexport LANGen_US.UTF-8 export LC_ALLen_US.UTF-8这组环境变量写进~/.bashrc后绝大多数乱码问题都能解决。5. 磁盘扩容、性能调优与快照管理长期使用的必修课5.1 虚拟磁盘空间不够了怎么办动态分配的 VDI 看上去只占实际使用的大小但当你编译大型项目或安装 Docker 镜像时40 GB 的上限说爆就爆。扩容流程如下。先在宿主机上执行虚拟机需关机VBoxManage modifyhd 你的磁盘路径.vdi --resize 81920数字单位是 MB比如 81920 就是 80 GB。这个命令对 vdi 格式没问题但对 vmdk 需要用别的方法所以当初建议你选 VDI。启动虚拟机后在系统内扩展分区。如果是 LVM 方案sudo growpart /dev/sda 3 # 根据你的分区结构调整 sudo pvresize /dev/sda3 sudo lvextend -l 100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv如果是普通分区只能用fdisk删掉原分区再重建有数据风险所以我才强调 LVM 的重要性。5.2 性能调优的几个关键开关VirtualBox 的性能调优核心是减少虚拟化开销而不是盲目调参数。我实测最有效的三招启用品功能或半虚拟化接口在设置 - 系统 - 加速里把半虚拟化接口改成 KVM。这个选项是针对 Linux 虚拟机的能显著降低系统调用开销。磁盘控制器用 NVMe 而非 SATA前提是虚拟机内核支持 NVMe 驱动Ubuntu 18.04 都支持且 VirtualBox 版本高于 6.0。同样的 IO 工作负载NVMe 模式磁盘性能提升 10%-20%。不要在虚拟机里跑两个桌面环境开发和编译用不到图形界面时尽量使用服务器内核和纯终端模式否则内存和 CPU 会被大量抢夺。5.3 快照的正确姿势与常见误区快照是 VirtualBox 最实用的功能之一也是新手最容易误用的功能。它的原理是保存当前磁盘状态和内存状态此后你可以随时回滚。但要注意快照不是备份也不能替代备份。我的建议在下面几个时间点创建快照刚装完系统、配置好网络和增强功能的时候安装大型开发工具链之前做内核实验或危险操作之前不要每改一个文件就创建一个快照。快照链太多会让虚拟磁盘文件膨胀到巨大回滚时还会出现当前状态和快照之间的差异混乱。每隔一段时间要把不需要的快照删掉或者干脆在最干净的基础状态上新建一个基础模板。5.4 克隆与导出一条命令复制一套环境开发中经常遇到要不要再开一台一样环境的需求。VirtualBox 提供了两种做法。完整克隆把整个虚拟磁盘完整复制一份独立运行适合做长期并行环境。链接克隆只保存差异部分共用基础磁盘适合临时开多个实验节点省空间但基础状态被修改会影响所有克隆。导出则适合跨机器迁移或分享给同事。在 VBox 管理界面选择导出虚拟电脑生成.ova文件对方直接导入虚拟电脑就能用。打包前的正确姿势是把 Guest Additions 卸载或重装到通用状态避免机器特定驱动残留。6. 这套环境里我踩过的坑三条完整排查链路6.1 VirtualBox 启动虚拟机时报 rc-1908 的完整排查这个问题长期排在各种 VirtualBox 踩坑列表的第一名。典型报错长这样Kernel driver not installed (rc-1908) The VirtualBox Linux kernel driver is either not loaded or not set up.在 Windows 宿主机上出现原因是 VirtualBox 的驱动模块无法加载最直接的罪魁祸首是Hyper-V 或基于虚拟化的安全性VBS占用了 VT-x 资源。我的排查顺序以管理员身份运行 VirtualBox看是否只是权限问题。检查 Windows 功能里是否开启了 Hyper-V、虚拟机监控程序、Windows 沙盒全部关掉并重启。在管理员终端运行bcdedit /set hypervisorlaunchtype off重启后再试。如果 Windows 安全中心开启了内核隔离下的内存完整性也可能导致冲突关掉后重启。注意这个坑不是只在 Windows 上Linux 宿主机升级内核后VirtualBox 驱动也需要重新编译加载。重新执行一次sudo /sbin/vboxconfig如果这个命令报头文件错误就安装和当前内核版本完全对应的linux-headers-$(uname -r)。6.2 虚拟机的系统时间漂移导致编译和 Git 提交出错开发过程中我遇到过多次诡异情况make报文件时间在未来、Git 提交显示的时间不对、证书验证失败。排查到底是虚拟机默认没开启时间同步在宿主机休眠后虚拟机时钟会明显漂移。解决方式分两步。第一步在 VBox 设置里打开硬件时钟采用 UTC 时间并确保 Guest Additions 在跑。第二步在虚拟机内启用 NTPsudo timedatectl set-ntp true sudo systemctl restart systemd-timesyncd如果你还遇到时间始终偏快的问题可能是逻辑 CPU 数设得过多导致时钟中断丢失稍微降低 CPU 数量比换任何软件都有效。6.3 共享文件夹挂载成功却无法执行程序或读不到文件第三个高频坑是共享目录下文件能读、能看但一旦执行就报Permission denied或Text file busy。本质上还是挂载参数 用户组的问题。最彻底的解决方式是把当前用户加入vboxsf组sudo usermod -aG vboxsf $USER然后重新登录。这个组在 Guest Additions 安装后会自动创建共享文件夹挂载时默认属于它。加入该组后所有共享目录下的文件读写都正常了沙盒安装到共享目录编译也不再报奇怪的权限错误。6.4 顺带提一句 ensp 与 VirtualBox 的兼容性问题搜索记录里出现ensp 与 virtualbox 不兼容这主要是华为网络模拟器 ensp 自带了一个老版本 VirtualBox安装时会覆盖掉你的新版环境导致 VirtualBox 打不开、虚拟机丢失。我的建议是如果你需要同时使用 ensp 和自建虚拟化环境最好把它们分开部署或者使用独立的 Portable 版 VirtualBox。不要在同一台机器上混装多个 VirtualBox 主程序版本驱动层会互相覆盖非常难清理。7. 从虚拟机到开发基础设施Vagrant、Docker 镜像与自动化初始化7.1 Vagrant 和 VirtualBox 组合后环境搭建变成文件操作当你需要反复创建多个相同环境时纯手工用 VirtualBox 界面点鼠标已经不够高效了。Vagrant 的作用是把你创建虚拟机所需的内存大小、CPU、网络端口、初始化脚本全部写进一个Vagrantfile一条命令拉起整套环境。一个最小可用的 Vagrantfile 长这样Vagrant.configure(2) do |config| config.vm.box ubuntu/jammy64 config.vm.hostname devbox config.vm.network private_network, type: dhcp config.vm.network forwarded_port, guest: 22, host: 2222 config.vm.provider virtualbox do |vb| vb.memory 4096 vb.cpus 2 end config.vm.provision shell, inline: -SHELL sudo apt update sudo apt install -y build-essential git SHELL end然后vagrant up等着环境自动创建并初始化。团队协作时把 Vagrantfile 和初始化脚本放进 Git 仓库每个人本机执行同样的命令就能得到一致的开发环境。7.2 基于 cloud-init 或 shell 脚本的系统初始自动安装Vagrant 里的 provision 脚本只是初级的自动化。如果你希望装完系统就能用更重型一点的方案是 cloud-init。Ubuntu 和 Debian 的安装器都支持直接注入 cloud-init 配置安装过程中自动完成用户创建、密钥注入、软件列表安装、系统参数调整。实际使用中我通常会维护一个bootstrap.sh脚本内容涵盖更换软件源安装基础工具链配置 SSH 密钥配置 vim / git 全局参数拉取个人 dotfiles 仓库只要把这段脚本放在方便拉取的位置新虚拟机从创建到可用只需要十几分钟而且整个过程是可审计、可重复的。7.3 在虚拟机里再跑 Docker为什么多此一举却值得有人问既然虚拟机已经隔离了为什么还要在虚拟机里装 Docker我的经验是虚拟机提供的隔离是整机快照级别Docker 提供的是应用进程级别。两者叠加时你既能用快照保护整个开发环境又能用镜像干净地管理不同项目的依赖冲突。比如在 Ubuntu 虚拟机里跑一个 Docker 容器跑 Redis、另一个容器跑 PostgreSQL测试完直接删容器宿主机的文件系统仍然是干净的。这套玩法对学习 Hadoop 分布式、Kubernetes 集群尤其有效。在一台 8 核 16G 的物理机上VirtualBox 开一个 4 核 8G 的 Linux 虚拟机虚拟机里再跑 minikube 或 k3s就能模拟一个轻量集群。资源开销虽然不小但胜在环境可控和复现性高。7.4 用黄金镜像思路沉淀一套自己的开发环境模板实操积累下来我个人最推崇的做法是把一套完整好用的开发环境做成黄金镜像存储为一个可导出的 ova 模板而不是每次手动搭。流程是第一次手工搭建好完整环境包括系统配置、开发工具、SSH、共享目录等。清理系统删除 apt 缓存和临时文件。拍摄一个干净快照。导出为 ova 文件存到自己的备份盘或对象存储。以后无论换电脑还是重装系统直接导入这个 ova再按需微调整个过程不进半小时。如果你有更多定制化需求可以在这个黄金镜像基础上再套一层第 7.1 的 Vagrant 自动化那就是团队级的基础设施了。最后再分享一个我自己的小习惯给虚拟机取名时带上用途和日期比如dev-ubuntu2204-arm-2025-07。虚拟机一多靠名字能迅速定位避免每次都要逐个打开去看 IP 地址。这套基于 VirtualBox 的 Linux 开发环境方案我从最初的单机折腾到后来给整个小团队做统一环境模板已经稳定跑了三年多。希望你按这篇文章搭完第一台虚拟机之后再去尝试 Vagrant 和镜像导出会明显感受到环境问题不再是开发路上的绊脚石。
返回列表