OpenBMC开发环境搭建:从VirtualBox到QEMU的完整流程(Romulus平台实测)
OpenBMC开发环境搭建从VirtualBox到QEMU的完整流程Romulus平台实测在服务器管理和数据中心运维领域OpenBMC作为开源基板管理控制器解决方案正逐渐成为企业级硬件管理的首选。本文将手把手带你完成从零开始搭建OpenBMC开发环境的全过程特别针对Windows/Mac用户通过VirtualBox虚拟机实现跨平台开发的特殊需求。1. 开发环境规划与准备1.1 硬件资源评估在开始之前我们需要明确开发环境的硬件需求。根据Romulus平台的特性建议配置如下资源类型最低配置推荐配置用途说明CPU核心4线程8线程并行编译加速内存8GB16GBYocto构建内存消耗大存储100GB200GB源码和构建产物占用空间网络稳定连接千兆带宽软件包下载和更新提示如果仅进行QEMU模拟测试而不做完整镜像构建可将配置降低至CPU 2核/内存4GB/存储50GB1.2 虚拟机平台选择对于非Linux主机用户我们推荐使用VirtualBox作为虚拟化方案主要基于以下考虑跨平台支持完美兼容Windows/macOS/Linux主机开源免费无商业授权限制社区支持OpenBMC官方文档中大量案例基于VirtualBox功能完备支持共享文件夹、剪贴板共享等开发刚需功能安装VirtualBox后建议立即安装Extension Pack以启用USB 2.0/3.0支持# 下载对应版本的Extension Pack wget https://download.virtualbox.org/virtualbox/6.1.34/Oracle_VM_VirtualBox_Extension_Pack-6.1.34.vbox-extpack # 通过命令行安装需sudo权限 sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.34.vbox-extpack2. Ubuntu系统配置优化2.1 系统安装与基础设置推荐使用Ubuntu 20.04 LTS作为开发系统安装时需注意选择英文界面避免编码问题磁盘分区采用LVM便于后期扩容安装时勾选OpenSSH server选项创建具有sudo权限的普通用户非root安装完成后首先执行系统更新sudo apt update sudo apt upgrade -y sudo apt install -y build-essential git2.2 开发环境调优为提高后续编译效率需要对系统进行针对性优化内核参数调整# 增加文件监视数限制 echo fs.inotify.max_user_watches524288 | sudo tee -a /etc/sysctl.conf # 提高进程数上限 echo * soft nofile 65536 | sudo tee -a /etc/security/limits.conf echo * hard nofile 65536 | sudo tee -a /etc/security/limits.conf # 立即生效 sudo sysctl -p交换空间配置内存不足时备用# 创建8GB交换文件 sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 永久生效 echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstab3. OpenBMC开发栈部署3.1 依赖包安装Romulus平台需要以下基础软件包支持sudo apt install -y \ git build-essential libsdl1.2-dev \ texinfo gawk chrpath diffstat \ device-tree-compiler python3-distutils \ cpio unzip rsync wget对于国内用户建议配置APT镜像源加速下载# 备份原有源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 替换为阿里云源以Ubuntu 20.04为例 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list3.2 源码获取与环境初始化获取OpenBMC主仓库并初始化Romulus平台环境git clone --recursive https://github.com/openbmc/openbmc.git cd openbmc # 初始化开发环境 . setup romulus常见问题处理若遇到子模块更新失败可尝试git submodule foreach git clean -xdf git submodule update --init --recursive网络问题导致下载失败时可设置git代理git config --global http.proxy http://proxy.example.com:80804. QEMU仿真环境搭建4.1 预构建镜像获取为节省时间可直接下载官方预构建的Romulus镜像mkdir -p ~/qemu_images cd ~/qemu_images wget https://jenkins.openbmc.org/job/latest-master/labeldocker-builder,targetromulus/lastSuccessfulBuild/artifact/openbmc/build/tmp/deploy/images/romulus/obmc-phosphor-image-romulus.static.mtd4.2 QEMU定制版本安装OpenBMC社区维护了专门的QEMU分支cd ~/qemu_images wget https://jenkins.openbmc.org/job/latest-qemu-x86/lastSuccessfulBuild/artifact/qemu/build/qemu-system-arm chmod x qemu-system-arm4.3 启动配置与端口映射创建启动脚本start_romulus.sh#!/bin/bash ~/qemu_images/qemu-system-arm \ -m 256 -M romulus-bmc -nographic \ -drive file~/qemu_images/obmc-phosphor-image-romulus.static.mtd,formatraw,ifmtd \ -net nic -net user \ -hostfwd tcp::2222-:22 \ -hostfwd tcp::2443-:443 \ -hostfwd udp::2623-:623赋予执行权限并启动chmod x start_romulus.sh ./start_romulus.sh启动成功后可通过以下方式访问SSHssh rootlocalhost -p 2222(密码: 0penBmc)Web界面https://localhost:2443IPMI使用ipmitool连接UDP端口26235. 开发工作流实践5.1 代码修改与测试典型开发迭代流程使用devtool修改组件devtool modify bmcweb cd workspace/sources/bmcweb # 进行代码修改...增量构建devtool build bmcweb部署到QEMUdevtool deploy-target bmcweb rootlocalhost:2222重启服务验证ssh rootlocalhost -p 2222 systemctl restart bmcweb5.2 调试技巧GDB远程调试配置# 目标板执行 gdbserver :12345 /usr/bin/bmcweb # 开发机执行 arm-openbmc-linux-gnueabi-gdb (gdb) target remote localhost:12345日志实时监控ssh rootlocalhost -p 2222 journalctl -f -u bmcweb内存检测工具bitbake obmc-phosphor-image -c populate_sdk ./tmp/deploy/sdk/oecore-x86_64-arm1176jzs-toolchain-nodistro.0.sh source ~/sdk/environment-setup-arm1176jzs-openbmc-linux-gnueabi arm-openbmc-linux-gnueabi-gdb --args /usr/bin/bmcweb6. 高级配置与优化6.1 构建加速方案共享状态缓存# 在local.conf中添加 SSTATE_DIR ? /home/${USER}/sstate-cache DL_DIR ? /home/${USER}/downloads # 首次构建后可重复使用缓存 bitbake obmc-phosphor-image --setscene-only并行编译配置# 根据CPU核心数设置建议核心数×1.5 echo BB_NUMBER_THREADS \12\ conf/local.conf echo PARALLEL_MAKE \-j 12\ conf/local.conf6.2 网络拓扑模拟复杂网络环境下的端口转发配置示例./qemu-system-arm -m 256 -M romulus-bmc -nographic \ -drive fileobmc-phosphor-image-romulus.static.mtd,formatraw,ifmtd \ -netdev user,idnet0,\ hostfwdtcp::2222-:22,\ hostfwdtcp::2443-:443,\ hostfwdudp::2623-:623,\ hostfwdtcp::5900-:5900 \ -device virtio-net-device,netdevnet06.3 性能监控与调优QEMU启动参数优化# 启用KVM加速需主机支持 -enable-kvm -cpu host # 内存大页支持 -mem-path /dev/hugepages # 多核CPU模拟 -smp 4系统资源监控命令# BMC系统内执行 obmcutil poweron obmcutil state obmcutil chassisstatus在实际项目部署中我们发现Romulus平台对SD卡模拟特别敏感建议在QEMU启动时添加以下参数确保稳定性-drive ifsd,driverraw,filesd.img,formatraw
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2449202.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!