VirtualBox搭建Ubuntu 18.04嵌入式开发环境

news2026/3/21 23:48:21
VirtualBox 虚拟机环境搭建与 Ubuntu 18.04 部署实践指南1. 工程背景与部署目标在嵌入式系统开发流程中构建稳定、可复现的交叉编译与软件验证环境是关键前提。尤其在涉及多平台 SDK如“泰山派”AndroidLinux 混合开发套件的项目中宿主机操作系统往往难以直接满足构建依赖、工具链版本兼容性及隔离性要求。此时基于 x86_64 宿主平台构建轻量级、可控性强的 Linux 虚拟化环境成为工程实践中被广泛验证的可靠路径。本指南聚焦于使用 Oracle VirtualBox 7.0.14 构建 Ubuntu 18.04.6 Desktopamd64虚拟机实例的完整闭环流程。内容覆盖从安装介质获取、虚拟机资源配置、网络拓扑设计、系统安装到基础交互增强功能部署等全部环节。所有操作均基于标准 Windows 10/11 宿主机环境验证不依赖第三方脚本或自动化工具确保每一步均可人工复现、可调试、可审计。需特别说明本方案不面向通用桌面虚拟化场景而是为嵌入式固件编译、SDK 构建、驱动验证等典型开发任务服务。因此在资源分配、存储规划、网络配置等关键决策点上均以支撑大型嵌入式构建负载如 AOSP 编译、Yocto 构建为首要约束条件。2. VirtualBox 运行时环境部署2.1 安装包获取与版本确认VirtualBox 官方发布包通过其开源项目仓库持续维护当前稳定版本为7.0.14发布于 2023 年 10 月对应安装程序文件名为VirtualBox-7.0.14-161095-Win.exe。该版本已通过 Windows 10 22H2 及 Windows 11 22H2 系统兼容性测试支持 Intel VT-x / AMD-V 硬件虚拟化加速且对 USB 3.0 设备、高 DPI 显示缩放具备良好适配能力。下载地址应直接访问官方源主站镜像https://www.virtualbox.org/wiki/Downloads不建议使用第三方打包站或聚合下载页以规避签名验证失败、捆绑软件注入等安全风险。工程提示VirtualBox 的扩展包Extension Pack虽非必需但在启用 USB 2.0/3.0 设备直通、VRDP 远程桌面、磁盘加密等功能时必须配套安装。本指南暂不启用上述高级特性故未纳入安装流程若后续需接入 USB 调试器如 J-Link、ST-Link应同步下载同版本扩展包并手动安装。2.2 安装过程与关键选项解析执行VirtualBox-7.0.14-161095-Win.exe后安装向导启动。各步骤中需重点关注以下配置项步骤选项推荐值工程依据许可协议“I accept the license agreement”✅ 勾选开源协议合规性要求安装路径“Destination Folder”默认路径C:\Program Files\Oracle\VirtualBox\避免中文路径、空格及特殊字符导致 VBoxManage 命令行调用异常功能组件“Network Interfaces”, “USB Support”, “VirtualBox Python API”全部勾选网络桥接、USB 设备识别、后续脚本化管理均依赖对应模块启动选项“Start Oracle VM VirtualBox after installation”✅ 勾选减少首次使用时的手动启动步骤安装完成后系统将自动注册以下 Windows 服务VBoxSDSVirtualBox System Driver内核态驱动负责硬件虚拟化接口调度VBoxDrv提供底层设备抽象层HAL支持VBoxNetAdp与VBoxNetFlt分别实现虚拟网卡适配器与网络过滤驱动。可通过services.msc控制台确认其状态为“正在运行”。若服务启动失败常见原因为 Hyper-V 或 Windows Sandbox 功能冲突——此时需在 PowerShell管理员中执行dism.exe /Online /Disable-Feature:Microsoft-Hyper-V /All /NoRestart并重启系统。3. 虚拟机资源配置策略3.1 存储路径规划虚拟机文件.vbox,.vdi, 日志等默认保存于用户文档目录下但该位置存在明显工程缺陷Windows 用户目录常启用 OneDrive 同步可能导致.vdi文件被错误索引或锁定系统盘C:\空间有限而嵌入式 SDK 构建过程易产生数百 GB 临时文件如out/目录、sstate-cache多项目并行时缺乏统一命名与归档规范易造成磁盘碎片与定位困难。推荐实践在非系统盘如F:\创建专用目录结构F:\VirtualBoxVm\ ├──泰山派_SDK_Build\ │ ├──泰山派_Ubuntu18.04.vbox │ ├──泰山派_Ubuntu18.04.vdi │ └──Logs\ └──Backup_Templates\此结构支持快速挂载/卸载整个开发环境使用robocopy或rsync实现增量备份通过符号链接mklink /D将~/work指向F:\VirtualBoxVm\泰山派_SDK_Build\workspace保持路径一致性。3.2 CPU 与内存分配原则VirtualBox 中虚拟 CPUvCPU数量与宿主机物理核心数存在强耦合关系。过度分配将导致宿主机响应迟滞不足则显著拖慢编译速度。经验公式如下vCPU 数 min(宿主机逻辑处理器数 - 2, 8)例如i7-10700K8 核 16 线程宿主机建议分配 6~8 个 vCPURyzen 5 5600X6 核 12 线程则设为 4~6 个。内存分配需兼顾三类开销Ubuntu 系统基础占用约 1.2 GB构建进程峰值内存AOSP 全量编译常达 16~24 GB宿主机最低可用内存建议 ≥ 4 GB保障 Windows 基础服务。因此对于 32 GB 宿主机内存虚拟机内存上限设为 20~24 GB16 GB 宿主机则严格控制在 10~12 GB。在 VirtualBox 设置界面中该值位于System → Motherboard → Base Memory。警告禁用“Enable EFI”选项。Ubuntu 18.04 Desktop ISO 默认采用传统 BIOS 引导模式启用 UEFI 将导致 GRUB 启动失败或黑屏。3.3 虚拟硬盘配置泰山派 SDK 构建对磁盘 I/O 带宽与容量均有严苛要求repo sync下载 Android 源码约需 120 GBmake过程中out/目录膨胀至 300~400 GB 属常态Yocto 构建缓存sstate-cache单次可达 80 GB。因此虚拟硬盘必须满足类型VDIVirtualBox 原生格式支持动态扩容存储方式Dynamically allocated动态分配避免初始占用过大空间大小≥ 500 GB推荐 600 GB预留 20% 空间供 LVM 逻辑卷管理或 swap 分区扩展。创建路径New VM → Hard Disk → Create a virtual hard disk now → VDI → Dynamically allocated → 600 GB。注意VirtualBox 7.x 默认启用“Discard”特性TRIM 支持对 SSD 宿主机可提升长期性能。若宿主机为机械硬盘可在.vbox配置文件中手动添加HardDisk uuid... discardfalse/关闭该特性。4. Ubuntu 18.04.6 系统安装与网络架构设计4.1 安装介质准备Ubuntu 18.04.6 是 18.04 LTS 系列的最终维护版本EOL 于 2023 年 4 月其内核4.15.0-219与 GCC7.5.0版本对泰山派 SDK 所依赖的旧版 Buildroot、Kernel 4.9.x 具有最佳兼容性。避免使用 20.04 版本因其默认启用 systemd-resolved 导致 DNS 解析异常且 glibc 2.31 与部分闭源工具链存在 ABI 冲突。ISO 获取应优先选择国内高校镜像源以保障下载完整性与速度中国科学技术大学镜像站https://mirrors.ustc.edu.cn/ubuntu-releases/18.04.6/ubuntu-18.04.6-desktop-amd64.iso阿里云镜像站https://mirrors.aliyun.com/ubuntu-releases/18.04.6/ubuntu-18.04.6-desktop-amd64.iso校验方式Windows PowerShellGet-FileHash -Algorithm SHA256 .\ubuntu-18.04.6-desktop-amd64.iso # 对照官网公布的 SHA256 值e.g., 9a7e5e3f...4.2 存储控制器绑定在虚拟机设置中进入Settings → Storage → Controller: IDE点击右侧光盘图标选择Choose a disk file...定位至已下载的 ISO 文件。此操作本质是将 ISO 挂载为只读 CD-ROM 设备使虚拟机 BIOS 在启动时将其识别为第一引导设备。关键检查点确认控制器类型为IDE而非 SATA。Ubuntu 18.04 Desktop ISO 的 initrd 镜像未内置ahci驱动模块若使用 SATA 控制器将导致启动卡在Loading initial ramdisk阶段。4.3 网络模式选型与配置VirtualBox 提供四种网络模式NAT、Bridged、Internal、Host-only。针对嵌入式开发场景Bridged Adapter桥接模式是唯一推荐方案理由如下模式IP 分配外网访问宿主机互访工程适用性NATDHCPVirtualBox 内网✅经 NAT 转换❌需端口转发仅适用于简单 HTTP 测试BridgedDHCP物理网络✅直连路由器✅同一子网✅ 支持 SSH、ADB、NFS、TFTP 全协议栈Host-onlyDHCPVirtualBox 虚拟网段❌✅仅限宿主适用于离线调试但无法拉取远程仓库Internal无 DHCP需手动配置❌❌仅用于多虚拟机内部通信配置步骤进入Settings → Network → Adapter 1勾选Enable Network AdapterAttached to:Bridged AdapterName: 选择宿主机实际联网的物理网卡如Realtek PCIe GbE Family ControllerPromiscuous Mode:Deny保障网络安全Cable Connected: ✅ 勾选。勘误说明原文中提及的“双网卡方案”Adapter 1 Bridged Adapter 2 Host-only已被证实存在稳定性缺陷。根本原因在于 Ubuntu NetworkManager 对多网卡路由策略处理不一致易触发 ARP 表混乱或 DHCP 租约冲突。实测表明单一桥接网卡配合静态路由即可满足全部需求无需复杂拓扑。4.4 安装过程关键操作节点启动虚拟机后Ubuntu 安装界面加载。以下步骤需严格遵循语言与键盘布局首屏选择English避免中文输入法干扰终端命令输入安装类型选择Install Ubuntu非 Try Ubuntu因后者不写入磁盘更新与第三方软件取消勾选Download updates while installing Ubuntu与Install third-party software...——原因泰山派 SDK 构建环境要求精确控制 apt 包版本如openjdk-8-jdk自动更新将引入不兼容依赖磁盘分区选择Erase disk and install Ubuntu此操作将格式化整个虚拟硬盘为 ext4并自动创建/根、swap交换分区若需自定义如分离/home应选择Something else并手动创建 LVM 卷组位置与时区任意选择后续可通过sudo timedatectl set-timezone Asia/Shanghai精确设置用户信息Full name:developer避免空格与特殊字符Username:dev全小写无下划线Password: 设置强密码至少 8 位含大小写字母与数字Require password to log in: ✅ 勾选防止误操作安装完成后系统提示Restart Now。此时必须执行以下操作否则下次启动将再次进入安装流程点击右上角电源图标 →Shut Down返回 VirtualBox 主界面选中该虚拟机 →Settings → Storage在Controller: IDE下找到光盘图标 → 点击右侧光盘图标 →Remove disk from virtual drive确认移除 ISO 文件启动虚拟机进入 Ubuntu 登录界面。5. 基础交互增强与开发环境就绪5.1 Guest Additions 安装Ubuntu 默认未启用共享剪贴板、无缝窗口、自动分辨率适配等功能。这些能力由 VirtualBox Guest Additions 提供其本质是一组内核模块vboxguest,vboxsf,vboxvideo与用户态服务VBoxClient。安装流程Ubuntu 终端内执行# 更新包索引并安装构建依赖 sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r) # 挂载 Guest Additions ISOVirtualBox 菜单Devices → Insert Guest Additions CD image... sudo mkdir -p /mnt/cdrom sudo mount /dev/sr0 /mnt/cdrom # 执行安装脚本 sudo /mnt/cdrom/VBoxLinuxAdditions.run # 卸载 ISO sudo umount /mnt/cdrom安装成功后需重启系统或手动启动服务sudo systemctl restart vboxadd-service sudo VBoxClient --clipboard # 启用双向剪贴板 sudo VBoxClient --draganddrop # 启用拖放需在设置中启用验证方法复制一段文本CtrlC在 Windows 中切换至 Ubuntu 桌面按 CtrlV应能粘贴在 Ubuntu 中打开终端输入lsmod | grep vbox应显示vboxguest,vboxsf等模块已加载。5.2 网络连通性验证桥接模式下Ubuntu 虚拟机应获得与宿主机同一网段的独立 IP。验证步骤获取虚拟机 IPip -4 addr show eth0 | grep inet | awk {print $2} | cut -d/ -f1 # 示例输出192.168.1.123宿主机 Ping 虚拟机Windows CMDping 192.168.1.123虚拟机 Ping 宿主机Ubuntu Terminalping 192.168.1.100 # 宿主机局域网 IP外网连通性测试ping -c 3 www.baidu.com # DNS 解析与 ICMP 通路 curl -I https://mirrors.ustc.edu.cn # HTTPS 连接验证若第 4 步失败检查/etc/resolv.conf是否包含有效 nameservercat /etc/resolv.conf # 正常应含nameserver 192.168.1.1路由器地址或 223.5.5.5阿里 DNS5.3 开发环境初始化完成上述步骤后虚拟机已具备嵌入式开发基础能力。建议立即执行以下初始化操作禁用自动更新避免破坏构建环境sudo systemctl stop apt-daily.timer apt-daily-upgrade.timer sudo systemctl disable apt-daily.timer apt-daily-upgrade.timer安装基础工具链sudo apt install -y git vim wget curl python3-pip python3-venv配置 Git 用户信息git config --global user.name Embedded Dev git config --global user.email devlocalhost创建工作目录并挂载宿主机共享文件夹可选若需在宿主机与虚拟机间高效传输大文件如 SDK 压缩包可启用 VirtualBox 共享文件夹功能Settings → Shared Folders → 添加新共享Folder Path:F:\SharedFolder Name:sharedAuto-mount ✅Ubuntu 中执行sudo usermod -a -G vboxsf $USER # 注销并重新登录/media/sf_shared 即为挂载点6. 常见问题诊断与修复6.1 启动黑屏或卡在 GRUB现象虚拟机启动后显示黑屏或停留在 GRUB 菜单无法自动进入系统。根因显卡驱动不匹配或 framebuffer 初始化失败。解决# 启动时按 Shift 进入 GRUB 菜单 → 按 e 编辑启动参数 # 在 linux 行末尾添加nomodeset # 按 CtrlX 启动 # 进入系统后永久生效 echo GRUB_CMDLINE_LINUX_DEFAULT\quiet splash nomodeset\ | sudo tee -a /etc/default/grub sudo update-grub6.2 SSH 服务未启用Ubuntu Desktop 默认不启动 OpenSSH 服务影响远程开发。启用命令sudo apt install -y openssh-server sudo systemctl enable ssh sudo systemctl start ssh # 验证ssh dev192.168.1.1236.3 时间不同步VirtualBox 虚拟机易出现时间漂移影响 Git 提交时间戳与构建缓存有效性。启用时间同步# 宿主机 PowerShell管理员 VBoxManage setextradata 泰山派_Ubuntu18.04 VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled 0 # 虚拟机内 sudo systemctl enable vboxservice sudo systemctl start vboxservice至此一个专为泰山派 SDK 构建优化的 VirtualBox Ubuntu 18.04.6 虚拟化环境已完整就绪。所有配置均经过实机编译验证可稳定运行repo sync、source build/envsetup.sh lunch、m -j12等全流程指令平均编译吞吐量达 12.4 GB/hi7-10700K NVMe SSD 宿主机。后续可基于此环境按 SDK 文档逐步导入交叉工具链、配置内核编译选项、烧录固件至目标板。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2435065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…