Hi3093开发板上手教学环境搭建
前言
当前openUBMC已支持Qemu仿真调试能力,但针对硬件相关调试,仍缺乏高效的调试手段。笔者在尝试多种开发板后,总结了一套基于米尔电子MYC-LHi3093开发板的openUBMC启动心得,供社区开发者学习和参考。
物料准备
- Hi3093核心板
- 核心板电源适配器
- 网线
- typeC-USB线
- 8GB以上的SD卡(用于必要时恢复openeuler环境)
环境准备
鉴于 Hi3093 核心板出厂默认搭载 openEuler 操作系统,须将其替换为 openUBMC RTOS。为此,需依次完成以下前置工作:
- 定制并构建 openUBMC RTOS 镜像;
- 规划并格式化核心板存储分区,确保与 openUBMC 分区表兼容。
openUBMC RTOS 镜像制作
openUBMC 开发环境搭建请严格遵循官方文档 Ubuntu 开发环境搭建 | openUBMC。
为便于后续与核心板进行网络通信,建议采用虚拟机方式部署 Ubuntu 环境,并在虚拟机内完成全部初始化步骤。本章节将采用VirtualBox进行openUBMC开发环境搭建。
在VirtualBox,你需要遵守以下的步骤,完成环境搭建和openUBMC镜像制作:
1、Ubuntu24.04 iso下载,并在VirtualBox中安装,建议预留50GB的存储空间。
⭐ 如果不想自己出包的话,可以直接下载Hi3093预制镜像,下载后可直接跳过构建过程,将对应文件放置在下述的位置中。2506_gx.zip里面存放了烧录时所需的所有文件,*.hpm为配套的固化开发板环境的hpm包。
❗ 如果是自己出包,且采用的是openUBMC 25.03版本,请确保在build/subsys/rc/security.yml中iam的版本>=1.0.1

2、根据 **Ubuntu 开发环境搭建 | openUBMC**进行openUBMC环境搭建。
3、安装openUBMC调试工具-- busybox, 并集成到manifest中。
4、在manifest目录下,执行bingo build完成openUBMC镜像制作。
最终在temp/build_openUBMC_debug_dev/output可以找到对应的镜像文件rootfs_BMC.img。

同时还需要在temp目录下取出initrd_boot.cpio.gz还有uImage文件。其中initrd_boot.cpio.gz是Linux系统的初始RAM磁盘镜像,uImage为Linux kernel内核镜像。

镜像烧录和分区表配置
核心板连接
现在我们需要通过串口等方式连接Hi3093核心板。核心板连接方式如下图所示:

❗ 连接过程中,需要严格按照图中的端口进行连接,否则后续的操作必定会失败。
核心板启动
核心板的启动采用EMMC启动模式,将SW2的开关如此设置。

⭐如果看不清晰,可以参考核心板提供的手册,里面详细介绍了如何通过EMMC启动。
核心板串口连接
通过typeC-USB线连接核心板后,可以通过串口连接软件进入核心板的串口界面。这里使用Xshell来建立连接:

选择SERIAL连接方式,并进入到串口页面。然后进行端口号配置。这里需要自己测试一下,看一下是使用COM多少。一般能用的话,会显示Connected的情况。

核心板启动与登录
Xshell连接到串口后,打开核心板的开关。可以在Xshell的串口中看到打印显示:

串口刷屏结束后,会提示登录,如果登录串口是黑屏的话,尝试敲几次回车,看看能不能出现登录界面。首次登录的话,账号是root,密码需要手动设置(会有提示)

SD卡准备
后续的操作会导致开发板的启动镜像发生改变,但同时SPI又不具备ssh连接的情况。所以需要提前准备一张sd卡进行镜像备份。步骤如下:
fdisk -l查看可用分区,找到sd卡分区,然后进行初始化(初始化命令可在网上查询,例如mkfs.vfat都可以,只要开发板能识别就行)- 使用
mount将sd卡分区挂在到某个目录 - 通过ssh上传米尔提供的SPI烧录文件,并拷贝到sd卡的分区中。
- 后续spi恢复openeuler环境时,只需重新挂载sd卡即可。
分区表配置
为确保 openUBMC 启动后能够正确访问 eMMC 的 user 区域,需预先完成手动分区并固化分区表。最终的分区配置如下所示:

执行动作如下所示:
fdisk /dev/mmcblk0
/dev/mmcblk0p1 : 先执行n,然后选择p创建主分区,StartLBA输入16,EndLBA输入2097167
/dev/mmcblk0p2 : 先执行n,然后选择p创建主分区,StartLBA输入2097168,EndLBA输入9269839 , 然后执行t,输入c
/dev/mmcblk0p3 : 先执行n,然后选择e创建扩展分区,StartLBA输入9269840,EndLBA输入12648447
/dev/mmcblk0p5 : 先执行n,然后选择l创建逻辑分区,StartLBA输入9269856,EndLBA输入9899001, 然后执行t,输入c
/dev/mmcblk0p6 : 先执行n,然后选择l创建逻辑分区,StartLBA输入9899018,EndLBA输入11367023
/dev/mmcblk0p7 : 先执行n,然后选择l创建逻辑分区,StartLBA输入11367040,EndLBA输入11891327
/dev/mmcblk0p8 : 先执行n,然后选择l创建逻辑分区,StartLBA输入12615680,EndLBA输入12648447
/dev/mmcblk0p9 : 先执行n,然后选择l创建逻辑分区,StartLBA输入11891344,EndLBA输入12615663
然后执行w保存所有的配置。
分区完成之后,需要进行各个分区的格式化。
对于Win95 FAT32的分区需要使用mkfs.vfat来格式化,例如mkfs.vfat /dev/mmcblk0p2
其他分区需要使用mkfs.ext4来格式化,例如mkfs.ext4 /dev/mmcblk0p1
镜像烧录
核心板网络配置
为了能够将相关的镜像文件烧录到核心板中,需要使用sftp等文件传输方式上传镜像文件到核心板中。首先在核心板中配置网络,执行ifconfig eth2 up 192.168.1.123

Windows网络配置与镜像包上传
打开windows的网络连接界面。选择以太网(这里需要自己确定是哪一个以太网,可以通过插拔网线的方式确定)

配置以太网的ip地址,使其与核心板在同一个网段。


配置之后,在windows侧测试网络连接:

出现如上的连接则表示成功。之后就能够通过sftp的方式将镜像文件上传到核心板的/tmp目录中。这里可以用Xshell的sftp,也可以用winscp的传输。这里以winscp工具为例:

连接成功之后,上传MYD-LHI3093-V2\SoftwareFiles\02-Images中的这四个文件。⭐这些文件来自于米尔电子提供的核心板资料。同时上传制作的openUBMC镜像包rootfs_BMC.img到/tmp目录中,并且重命名为Hi3093_ext4fs.img。


镜像包烧录
Hi3093提供了升级脚本,只需要在核心板串口按照如下的步骤执行升级即可完成升级。
qemu-aarch64 ~ # cd /tmp/
qemu-aarch64 /tmp # ls
Hi3093_ext4fs.img hi3093_upgrade.sh l1fw_rsa_4096.bin
Hi3093_ext4fs_cms.bin l0fw_rsa_4096.bin u-boot_rsa_4096.bin
qemu-aarch64 /tmp # /hi3093_upgrade.sh 4096
/dev/mmcblk0gp0
/dev/mmcblk0gp2
/dev/mmcblk0gp1
update temp L0FW...
70+1 records in
70+1 records out
72088 bytes (72 kB, 70 KiB) copied, 0.0156561 s, 4.6 MB/s
update temp L1FW...
178+1 records in
178+1 records out
182876 bytes (183 kB, 179 KiB) copied, 0.0365372 s, 5.0 MB/s
update temp u-boot...
504+1 records in
504+1 records out
516616 bytes (517 kB, 505 KiB) copied, 0.111703 s, 4.6 MB/s
update temp rootfs_hdr...
36+0 records in
36+0 records out
36864 bytes (37 kB, 36 KiB) copied, 0.00683788 s, 5.4 MB/s
update temp rootfs...
376+1 records in
376+1 records out
394268672 bytes (394 MB, 376 MiB) copied, 2.40696 s, 164 MB/s
emmc update success, please reboot your board...
出现上述的emmc update success, please reboot your board... 表示烧录成功,但在执行重启之前,通过ssh把当前核心板上的/boot/hi1711_asci.dtb文件下载到windows中作为备份。
执行reboot命令,进行重启。注意重启并不代表完全升级openUBMC镜像成功,我们还需要修改Uboot配置,来加载openUBMC的initrd_boot.cpio.gz还有uImage。
Uboot配置修改
因为我们在只修改了img文件,还没有修改Linux kernel的uImage文件,所以需要通过tftp的方式进行替换。重启后,一直敲回车键,进入Uboot配置界面:

配置之前,需要配置一下核心板的Uboot能够访问到Ubuntu开发服务器的tftp。首先在Ubuntu中安装tftpd
sudo apt install tftpd-hpa
安装之后把manifest准备阶段的initrd_boot.cpio.gz和uImage还有从核心板上下载下来的dtb文件(重命名为hi3093.dtb)放置到/var/lib/tftproot中。
然后Virtual Box Ubuntu中还需要进行网络配置。更多细节可参考:virtualbox网络配置实现PC、虚拟机、开发板互ping
打开virtualbox的网络管理器,按照如下的指示进行配置。



完成上述配置之后,在windows ping一下,测试是否能够访问Ubuntu24.04所在的网络。

但此时还无法通过Uboot去ping Ubuntu,所以需要建立网桥。 在windows网络连接配置页面,选中虚拟网卡和与核心板连接的以太网,右键打开选中桥接。

⭐ 完成上述配置后,在Uboot中配置核心板的ip和网关
setenv ipaddr 192.168.1.123
setenv netmask 255.255.255.0
setenv gateway 192.168.1.1
setenv serverip 192.168.1.111
上述设置之后,需要ping 192.168.1.111确定一下,如果没法ping通,需要确定网络连接状态。排查方法可以看virtualbox网络配置实现PC、虚拟机、开发板互ping

确认通信已建立后,在Uboot中通过tftp协议下载uImage和initrd_boot.cpio.gz。
setenv tftp_dtb "tftp ${dtb_load_addr} hi3093.dtb"
run tftp_dtb # 下载dtb文件
run tftp_network_boot # 执行之后,需要确定已下载
run run_linux # 执行此步后,会自动启动系统

等待openUBMC RTOS系统启动,即可看到openUBMC的串口打印。

openUBMC环境配置
因为openUBMC的默认IP为 192.168.2.100,网关也是192.168.2.100。和我们之前的配置不在同一个网段,所以需要重新修改以太网的配置才能够登录openUBMC。在之前配置的网桥中取消核心板以太网的配置。

然后右键以太网,手动配置器ip地址。

配置之后能够通过telnet连接:

执行source /etc/profile可开启busctl等命令。
openUBMC密码生成
初始的BMC是没有密码的,可以通过cat /etc/shadow来查看是否有很长的一段加密信息,没有的话就需要手动去添加密码:
# 激活busctl
source /etc/profile
# 修改密码
busctl --user call bmc.kepler.account /bmc/kepler/AccountService/Accounts/2 bmc.kepler.AccountService.ManagerAccount ChangePwd a{ss}
ay 3 Interface Web UserName Administrator ClientAddr 127.0.0.1 10 65 100 109 105 110 64 57 48 48 48
修改之后的密码就是 Admin@9000,当然也可以修改为自定义的密码,65 100 109 105 110 64 57 48 48 48对应Admin@9000的ASCII码,用户也能够根据此种方式自定义密码。 但此时还无法通过ssh登录。这是因为openssh缺少文件。但可以通过ipmi工具来测试密码是否正确:
> .\ipmitool.exe -H 192.168.2.100 -I lanplus -p 623 -U Administrator -P Admin@9000 -C 17 mc info
Device ID : 1
Device Revision : 1
Firmware Revision : 25.00
IPMI Version : 2.0
Manufacturer ID : 2011
Manufacturer Name : Unknown (0x7DB)
Product ID : 0 (0x0000)
Product Name : Unknown (0x0)
Device Available : yes
Provides Device SDRs : yes
Additional Device Support :
Sensor Device
SDR Repository Device
SEL Device
FRU Inventory Device
IPMB Event Generator
Chassis Device
Aux Firmware Rev Info :
0x00
0x00
0x00
0x01
显示mc info正常返回,表示账号和密码成功配置了
openUBMC ssh登录
在使用ssh连接过程中,出现了输入正确密码一直报错的问题。该问题是由于openssh中pam认证失败导致。
# 检查pam.d中ssh的依赖情况
ls -l /data/trust/pam_faillock \
/lib*/security/pam_bmc_login.so \
/lib*/security/pam_selinux.so
# 检查是否存在common-auth common-account common-passwd
# 一般都是存在的,不存在的是/data/trust/pam_faillock,需要手动创建一下, 如果存在就不用去创建了
touch /data/trust/pam_faillock
chmod 644 /data/trust/pam_faillock
BMC 网页登录
初始环境中,没有BMC的证书,可以通过openSSL进行证书的生成。有了此证书后,才能够完成Nginx的启动。
证书准备文件有:
- SSL.p12
通过sftp等方式,将SSL.p12上传到openUBMC的/tmp目录下,然后导入证书:
date -s "2025-06-09" && busctl --user call bmc.kepler.certificate /bmc/kepler/CertificateService bmc.kepler.CertificateService ImportCertWithKey a{ss}isss 3 Interface Busctl UserName Adminitrator ClientAddr 127.0.0.1 1 URI /tmp/SSL.p12 ""
💥 上述命令描述的2025-06-09需要设置为生成证书时间之后。否则会有导入错误。导入成功或Nginx和Web都能够正常使用了。即可通过网页登录openUBMC了。
openUBMC系统固化 (最后一步)
在Uboot中,我们配置了tftp下载内核文件等,但此过程无法固化,为此可以通过在网页中升级一次hpm包,升级过程中,会把内核文件等烧录到emmc中,之后重启核心板就会依旧是openUBMC系统。同时也会具备主备分区等能力。
QA
如何回滚到openEuler系统?
1、进入SPI界面,进行环境烧录。参考HI3093提供的软件开发手册

2、下载提供的Hi3093的原始启动文件压缩包 -> https://gitcode.com/fxx551/Hi3093/releases/v1.2

注意这里的hi1711_asic.dtb文件名要变更为hi3093.dtb

4、进入emmc的Uboot界面,并配置网络 设置网络,使其能ping通虚拟机 并配置tftp_network_boot
setenv tftp_network_boot 'tftp ${dtb_load_addr} hi3093.dtb;
${kernel_load_addr} uImage;
tftp
tftp ${initrd_load_addr} initrd_boot.cpio.gz;
bootm ${kernel_load_addr} ${initrd_load_addr} : ${initrd_size} ${dtb_load_addr}'
=> ping ${serverip}
Using hi309x_gmac device
## Warning: gatewayip needed but not set
host 192.168.1.111 is alive
=> run tftp_network_boot
=> run run_linux


EMMC 分区概念说明

烧录openUBMC之后,串口卡住
通常openUBMC启动后串口会打印到os侧,如果需要串口打印到串口界面,需要执行ipmcset -d serialdir -v 1。该命令可在ssh输入,或在telnet 执行source /etc/profile之后执行。
【版权声明】Copyright © 2026 openUBMC Community。本文由openUBMC社区首发,欢迎遵照CC-BY-SA 4.0协议规定转载。转载时敬请在正文注明并保留原文链接和作者信息。
【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文仅供读者参考,由此产生的所有法律责任均由读者本人承担。
