1712烧片后软件包提示报错。

image
1712烧片,烧片完成后busybox reboot启动,提示报错:
unknown_service NOTICE: main.lua(31): start maca failed, err: ./opt/bmc/libmc/lualib/mc/class.lua:132: ./opt/bmc/libmc/lualib/database/utils.lua:162: open sqlite3 db failed: 14, unable to open database file

但是手动升级BMC无此问题。升级后相关的组件版本显示如下:
~ ~ $ cat /etc/package_info
webui/1.90.184@openubmc/stable#6a5c52a4a48ea343f41cf075802a8cf2%1773064999.625
web_backend/1.100.8@openubmc/stable#73d7d87dcd8cbb3ed5382da335f2f016%1772087470.135
vpp/v300r025c20spc002b200_002@openubmc/stable#11c0210cde21880e7438bebd5cb61737%1772087469.315
vpd/1.90.29@openubmc/stable#8f54b2bb684239f7440adea81ee30909%1773064856.949
vnc_proxy/0.0.2@openubmc/stable#a36ad85b24ac1626d667ee155e476740%1768459193.636
usb_entry/1.100.4@openubmc/stable#1633905145e0fe6cb59c1939cb607639%1772087468.504
ums/1.100.5@openubmc/stable#84364280178cc213b7e21a0467affce6%1772087467.539
trust/1.100.7@openubmc/stable#54ab64fd3a5b2bf3a3bbbc6052a2bed5%1772087731.896
tpcm/1.100.21@openubmc/stable#5cc48602eb2155394e82931921eb9087%1772087730.849
thermal_mgmt/1.80.1@openubmc/stable#acf4b215e1bb525c61e54622658d7888%1773064900.768
taishanserver2.9.0_csr/0.0.394@openubmc/stable#aea21442ed345c5053510d5436cc82d1%1772089908.812
storelibit/07.0700.0200.0600.b003@openubmc/stable#e852a0612f4d68da46dad28dabcaf461%1772087730.466
storelibir3/16.02.b002@openubmc/stable#75cdf010fcc56ed05bbe4cffd4e8b2d0%1772087730.066
storelib/07.1002.0100.0000.b006_03@openubmc/stable#59bbca108127842b52db6c0ffa94c92c%1772087729.702
storagecore/5.25.11.0.b003@openubmc/stable#8521f41cbceb5e13234a05e90d56fbda%1772087729.335
storage/1.90.28@openubmc/stable#6a11c4bffc929fe92f0c572a57697f97%1773064889.235
ssdp/1.80.5@openubmc/stable#b4176c26f5aae7e20eb9b4a6c4f614e8%1772087467.107
sqlite3/3.42.0-3.oe2403sp1-h2.b002@openubmc/stable#cc10134d71595485e3753462b9154ee2%1772087466.688
spdm/1.0.15@openubmc/stable#2771fe00cedf88c21a0a5c68e80ce74b%1768459169.721
soctrl/1.100.14@openubmc/stable#e2180e6dd8f3975a3c58af8b6702b175%1772087465.704
snmp/1.100.5@openubmc/stable#0cb5f09b004d1ec24b51dd158c6476d9%1772087464.744
skynet/1.8.0.b001_014@openubmc/stable#07b7fee4acd86184a3273caa79e346bc%1772087464.133
sitedata/v100r025c20spc001b100_001@openubmc/stable#6bcbc010c14b25febd8a3b67ee41c371%1772087728.953
siteai/v100r025c20spc001b100_001@openubmc/stable#e5c3171003ecec54f6a4a26b0f054d3d%1772087728.538
signature_verify_cbb_library/25.1.0.b003_001@openubmc/stable#67351e3ec250b016b2db8074e27f66bf%1772087463.763
sensor/1.70.110@openubmc/stable#2dbadb1215e4991fb80a2f3488ebb3f5%1773064410.015
security_aop/25.3.0@openubmc/stable#705d777f221b0296294299491a528b3e%1772087463.373
secbox/25.1.3+b001_00004@openubmc/stable#b281c6f2a943350cf585f6e769b25bc5%1772087462.939
runtime_accessor/1.101.2@openubmc/stable#9a647b772eadac8f1cbc1ee13a56776d%1772087462.147
rootfs_user/1.80.10@openubmc/stable#b1b703817dde4f051e58494053f2ac8a%1773064457.015
rmcpd/1.100.21@openubmc/stable#4cf89f146c847297bdb202b6c50f7ae3%1772087461.268
remote_console/1.100.30@openubmc/stable#56666bad4988ae82ba94b155c528bdc2%1772087459.49
redfish/1.100.19@openubmc/stable#466041838e0ee9c47f9f5684d281ad69%1772087458.379
rackmount/1.100.112@openubmc/stable#504ad09e06e7c11d937a8888f9f06bb3%1773064446.446
profile_schema/1.70.61@openubmc/stable#1a58cf57d44003b1e027b355fb2b1208%1773065004.532
product_mgmt/1.100.6@openubmc/stable#182df7e69d9fe03f4a657fe35e3b7925%1772087457.478
power_strategy/1.81.1@openubmc/stable#07a7bf866c480175b110b3f5e0ffc9d0%1772087727.675
power_mgmt/1.70.162@openubmc/stable#a4751b3108aec49b85bf4491c6922617%1773064879.736
persistence/1.100.3@openubmc/stable#1382d23c59e4b29390acb0f954acc538%1772087456.644
pcie_device/1.80.8@openubmc/stable#da39ecff656632a7a6f8a35b793d5296%1773064895.547
openssl/3.5.1@openubmc/stable#0b2bec259da3e69a9f9c7a720fd607e2%1768874459.126
openssh/9.6p1-3.oe2403sp1-htrunk10_003@openubmc/stable#74b6a2296f2c4999898afbcf9e34d670%1772087456.199
openldap/2.6.10+htrunk2_002@openubmc/stable#b9142fd99b7a510a62a6cb2963a1a6e8%1772087455.767
oms/1.100.15@openubmc/stable#42d9ba407cc82d48ad23ab8929d2942f%1772087454.887
ntp/4.2.8+htrunk3_002@openubmc/stable#381568dfae69e88befe8b6891d3f7e1c%1772087454.496
nsm/1.100.23@openubmc/stable#cd1b71e2df9f14dea3b1bf37b386b0a8%1772087447.769
nginx/1.29.2-htrunk3@openubmc/stable#6e725fd2a1e2bd8aae01489efa23fcae%1772087447.361
network_adapter/1.90.7@openubmc/stable#f6075d7ed9b70989f6d74054b7ad8b72%1773064868.957
net-snmp/5.9.3-4.oe2403sp1-htrunk6.b009@openubmc/stable#813b640c4057b6d67464b2ce2763ab7f%1772087446.9
muparser/2.3.5@openubmc/stable#84e2234079c3369253067443ccc83ac0%1772087446.535
metric_analyzer/1.101.1@openubmc/stable#dac11316192f77fc6f6fe538d86d91b7%1772087726.813
mdbctl/1.100.5@openubmc/stable#536482584770d4990532d94c6ced80e7%1772087445.658
mdb_interface/1.90.232@openubmc/stable#7e91532c7556f5fd87b9a7bf2c9ed4fa%1773064400.391
mctpd/1.100.9@openubmc/stable#701eb0558729a73311c14d3d56a0e36d%1772087444.708
manufacture/1.80.1@openubmc/stable#b1eb8092fec8ca91a651f0a72d329a59%1773064905.638
maca/1.100.18@openubmc/stable#82f833d24bdf5696056d088644007f9b%1772087443.918
luajit/2.1.0.b022@openubmc/stable#51c2d31c0263daaba6c3e0522753bcc8%1772087443.478
lsw/1.70.15@openubmc/stable#b9479af42c327f013650501676524ada%1773064863.457
lsnmp/1.30.11@openubmc/stable#838ea6b30b9234b0c79f5a5636aa622f%1772087442.48
lldpd/1.0.19+h1@openubmc/stable#bd276d251cb29fce7e4ef1feb88fcf58%1772087442.102
linux_kernel/5.10.0-60.18.0.50.oe2203-h5058@openubmc/stable#0951ca994351154446d7aba60943cc33%1772087726.415
license/1.100.5@openubmc/stable#3e5099a160773c200560e2288ce110fd%1772087725.447
libssh2/1.11.0-4.oe2403sp1@openubmc/stable#8f0c9b01503f314cdaa8872c82d595c0%1772087441.714
libspdm/3.8.1@openubmc/stable#3ec92eccdb9b6f02b305a16b9085ee5b%1768874448.569
libsomp/2.0.7@openubmc/stable#b5d805e19bc2caf8728256afb8af8957%1772087440.829
libsoc_adapter/1.100.26@openubmc/stable#344352ceafab8e9641ac6dd85a80f9e0%1772087437.367
libroute_mapper/1.100.18@openubmc/stable#ae6c781172ecd8f3712c602b611c9492%1772087436.534
libproto-mc4c/1.90.6@openubmc/stable#bbedb8303513e499d9551a66259685f3%1772087435.772
libmgmt_protocol/1.80.65@openubmc/stable#ccf20442a6dc7c875e7478dd2657cd37%1772087433.903
libmdbc/1.80.3@openubmc/stable#afaa04794644f888a37d103455c186cb%1772087433.456
libmcpp/1.2.42@kl.ibmc.master_dev/stable#2eb624f2c01e2d5e30181b9dcdc6c7ad%1773131634.617
libmcc/1.100.1@openubmc/stable#b4879a2f9317d9d337fcedb9734ad5c6%1772087433.008
libmc4lua/1.100.82@openubmc/stable#a0b6c52aa3dc50f58622d1f93591b2fe%1772087430.868
liblogger/1.90.6@openubmc/stable#568d421602c5db189fa3e9c08c63531f%1772087430.015
libjpeg/9f.b001@openubmc/stable#8e9387f2fd48955f4a6e723e93781ae4%1772087429.65
libenergy/1.0.18@openubmc/stable#13ad587f8fffd4870c7b1a9d403a28a8%1772087428.866
lcurl/1.20.14@openubmc/stable#7bcc041b7f9bb8ddf175bbc7e3123c36%1772087427.993
kunpeng_products/1.31.22.004@openubmc/stable#3f3850baa685304f725fca0dca2b2571%1773370763.7771287
kmc/25.0.5+b001_002@openubmc/stable#0495222d2ca58018987c189064b6b48a%1772087427.559
key_mgmt/1.100.9@openubmc/stable#7967527de8de5c95924c611f132eaa6f%1772087426.789
json/b003_00004@openubmc/stable#d4cfc42df5879e88ef2df22b86a6d6cd%1772087426.429
ipmi_core/1.102.3@openubmc/stable#c86c4bb8c1ee9525cd41f039e63cb008%1772087424.635
iam/1.100.13@openubmc/stable#ba7c9ce4b3a2dd05845b427f0ab0bade%1772087724.477
hwproxy/1.110.0@openubmc/stable#eacdf0c7950e3a3af3bf25a249beb756%1772087422.516
hwdiscovery/1.100.11@openubmc/stable#b5d8c822cd96d23d589cc5f6f18f3a26%1772087421.376
huawei_secure_c/1.0.2@openubmc/stable#ad5c55d13a8eb0a86cf895705d393b7f%1772087420.912
host_agent/1.101.0@openubmc/stable#b28f16e1e61d90ef1ae5f789f60768c3%1772087419.835
hisec_tls/25.1.2.b001@openubmc/stable#6aacde010d872110a7aef31d16f372f3%1772087419.531
hisec_ict_ne/25.1.5.b001@openubmc/stable#d734f3b58d859a86de5cb609613a3a5d%1772087724.09
hica/1.70.14@openubmc/stable#2895a8f32706a7011a0d5b4081737338%1764818279.533
help/1.71.60@openubmc/stable#8b5c5a35e5394ad1f5a41eb8732a35c4%1773064978.861
general_hardware/1.100.3@openubmc/stable#2e7d604c0e53809650324a7b39ab14bf%1773064916.825
frudata/1.70.54@openubmc/stable#5fc9a332c1a0df40e7feba9329212b3d%1773064415.314
fructrl/1.70.79@openubmc/stable#543883e78813cbb0ac056cd0757b8395%1773064405.171
firmware_mgmt/1.101.1@openubmc/stable#52669f69271434a7c5d6d139606b6b86%1772087417.269
file_transfer/1.70.23@openubmc/stable#6482a20e5e54512509651dae4d188d44%1772087416.327
fault_diagnosis/1.101.3@openubmc/stable#178d538cb1bbcf58119930600d8e44a8%1772087723.139
event_policy/1.100.11@openubmc/stable#cdf3cd12f03fdfaef67937306d0406d4%1772087415.091
event/1.81.2@openubmc/stable#0b7cb4c59193ad3a905954eddc0ebad0%1772087414.106
editline_library_-_libedit/3.1-20250104-h2.5@openubmc/stable#801baa1c311f48f3247025b2fa319f44%1772087413.64
devmon/1.2.15@openubmc/stable#3e1887452e687b690ddbef310a223f3e%1773150316.335
ddns/1.100.6@openubmc/stable#584b2d38c0559116851c72ad7470e020%1772087411.663
dcmid/1.0.3@openubmc/stable#aab4efb23a9b99bf145f19ab037c079e%1768459126.339
cyrus_sasl/2.1.28-h1.computing.ibmc.r1_001@openubmc/stable#579b161b98909a5efa6eb8cdc2b302f7%1772087411.191
curl/8.4.0-14.oe2403sp1-htrunk7@openubmc/stable#d51ab54eb9d23e41043a6659d71447ae%1772087410.712
cooling/1.80.11@openubmc/stable#daecce531869e48b2af6bcd7d40e1e8e%1772087722.133
computing_component_raid/v100r001c00spc512b020_4@openubmc/stable#6f70443f7919ee45d594fc42ef9e1d22%1772087410.247
compute/1.92.3@openubmc/stable#c9776f428add607d316e5b7bea7d144f%1772087408.132
component_drivers/1.2.32@openubmc/stable#e82f6f1a75dd2f53fbe66c33355c2787%1773150490.497
cli/1.100.9@openubmc/stable#92a016f797a6db99761f762d59991ea0%1772087405.877
chassis/1.80.24@openubmc/stable#970fbe1daf86f23ff4500146de1e3747%1773064874.184
certificate/1.20.32@openubmc/stable#02e37b9baa8ed6372a1a4ef5b7e8a74c%1772087404.796
capability_proxy/1.80.13@openubmc/stable#6d767a534286bae8e48a512e37854808%1772087403.728
bytedance/1.70.143.058@kl.ibmc.master_dev/stable#6eb073f369cad23673a004de40d9f5e2%1765983041.377
busybox/1.34.1@openubmc/stable#17424003e0ee94f2ced05ef7b91c370b%1764817959.112
boost/1.87.0.b003@openubmc/stable#59369971980a2bd69fe38add2d9dea60%1772087402.793
bmc_upgrade/1.70.64@openubmc/stable#3333b13e2a8a5272fc37a15e69611cfe%1772087401.706
bmc_time/1.75.0@openubmc/stable#93f1e5e7d113ed59f5423cd2ed01d200%1772087400.457
bmc_soc/1.100.12@openubmc/stable#e8b4ef066bec42855b20f5bda102d15b%1772087399.354
bmc_network/1.82.2@openubmc/stable#e91cdd382256c1933470bde54dd61c3a%1772087396.92
bmc_health/1.70.14@openubmc/stable#c662ae8aade467745d4fc7b87c99d83c%1772087395.608
bios/1.90.2@openubmc/stable#440e09d8d4913f29b8f5fd444f978f39%1773064911.349
ai_engine/1.100.5@openubmc/stable#940b138817e53b066f9e30e31e5dc72a%1772087720.963
adaptive_lm/v100r009c10spc101b200@openubmc/stable#3f805358da46d409d87c6616b6ebf090%1772087720.446
account/1.110.4@openubmc/stable#1ecbc356f850ebdb050edf03c51d009b%1773065077.668

烧片过程的记录文件如下:
maca启动失败-自动回退.txt (87.1 KB)
另外通过mount rootfs_iBMC.img,使用sqlite3分析,发现数据库都打不开,应该是和烧片文件没有持久化数据有关。data/persistence没有这个目录,应该是还没创建。


场外分析目前只能到这里,因为sqlite3打开数据库,成功与失败的烧片包现象是一致的。需要帮忙分析一下为什么会导致Maca失败。

答案内容由AI生成,仅供参考:

总结

项目 内容
问题现象 烧片后首次启动 maca 失败,提示无法打开数据库
根本原因 /data/persistence 目录未创建,数据库软链接指向空路径
触发条件 仅发生在烧片后首次启动;升级场景因保留 /data 而正常
技术本质 持久化机制依赖运行时目录初始化,烧片流程缺失此步骤
推荐解决 在烧片镜像或首次启动脚本中补全 /data/persistence/xxx 目录创建

:white_check_mark: 最终建议:

在构建流程中增加对 /data/persistence 各子目录的预创建处理,确保所有依赖持久化数据库的组件(如 maca)能在启动时顺利访问数据库文件。

如有条件,建议配合添加首次启动初始化日志跟踪,便于后续问题定位。

点击此处查看详细分析解答

1712烧片后maca启动失败问题分析报告

问题概述

在1712烧片完成后执行busybox reboot启动时,系统报错:

unknown_service NOTICE: main.lua(31): start maca failed, err: ./opt/bmc/libmc/lualib/database/utils.lua:162: open sqlite3 db failed: 14, unable to open database file

该问题仅在烧片后首次启动时出现,手动升级BMC固件则无此问题。

从提供的日志和分析可知:

  • 系统无法打开SQLite数据库文件
  • /data/persistence 目录不存在或未创建
  • 各组件的.db文件为指向/data/persistence/xxx/per.db的符号链接
  • 降级升级后可正常运行

问题根本原因分析

1. 持久化机制缺失导致目录未初始化

根据/opt/bmc/apps/ssdp/per.db等文件是软链接指向/data/persistence/ssdp/per.db的情况,说明系统的持久化数据存储机制依赖于运行时挂载和初始化 /data 分区。

然而在烧片后首次启动阶段:

  • 烧片镜像中可能未包含预先创建好的 /data/persistence 目录结构
  • 或者文件系统镜像中 /data 分区为空,导致系统启动时未能自动创建必要目录
  • 因此当 maca 组件尝试通过链接访问数据库时,实际路径不存在,导致 unable to open database file 错误(SQLite错误码14)

:white_check_mark: 核心结论: 烧片镜像缺少对 /data/persistence 的预置或初始化脚本未能及时创建该目录,导致数据库无法访问,maca 启动失败。


2. 为何升级BMC不触发该问题?

升级场景特点:

  • 升级操作通常发生在已部署的环境中
  • /data 分区作为非易失性存储保留原有数据
  • /data/persistence 目录早已存在
  • 即使组件数据库被更新,目录结构依然完整

因此,升级过程中不会破坏持久化目录结构,能正常加载数据库。


3. 为何SQLite能打开失败的烧片包却仍报错?

您提到:

“场外分析目前只能到这里,因为sqlite3打开数据库,成功与失败的烧片包现象是一致的。”

这是因为:

  • 使用 mount rootfs_iBMC.img 查看的是 只读的根文件系统镜像
  • 此镜像中确实存在软链接(如 per.db -> /data/persistence/xxx/per.db
  • /data 是一个独立的可写分区,不在 rootfs_iBMC.img
  • 实际运行时 /data/persistence 需要在启动过程中由 init 脚本或服务动态创建

:pushpin: 关键点:
即使镜像中有正确的软链接,只要运行时 /data/persistence 目录未创建或未挂载,数据库仍无法访问。


技术证据支持

  1. 错误堆栈定位:

    start maca failed, err: .../database/utils.lua:162: open sqlite3 db failed: 14
    
    • 明确指向数据库初始化失败
    • 错误码 14 是 SQLite 的 SQLITE_CANTOPEN,通常由以下原因引起:
      • 文件不存在
      • 路径不可访问(如父目录不存在)
      • 权限不足
      • 软链接指向无效路径
  2. 日志与知识库一致性验证:

    • maca 是负责组件监控和启动检查的核心服务 → 符合知识库描述
    • init.lua 执行 StartupCheck 并依赖 D-Bus 和数据库 → 匹配已知架构
    • 数据库使用 SQLite 并存于 /data/persistence与文档中心一致
  3. 文件系统结构分析:

    ll ./opt/bmc/apps/ssdp/per.db 
    → /data/persistence/ssdp/per.db
    
    • 表明这是标准的“远程持久化模式”
    • 依赖运行时环境提供 /data/persistence/xxx 子目录

解决方案建议

:white_check_mark: 方案一:完善烧片镜像的目录初始化机制

在构建烧片镜像时,确保以下内容:

  1. 在烧片镜像中预置 /data/persistence 目录骨架

    mkdir -p ${DATA_PART_DIR}/persistence/{ssdp,file_transfer,tcpm,...}
    
  2. 或在首次启动脚本中添加保护性创建逻辑

    # 在系统启动早期(例如 run_init_scripts 阶段)
    mkdir -p /data/persistence/ssdp
    mkdir -p /data/persistence/file_transfer
    mkdir -p /data/persistence/tcpm
    # ... 其他组件所需目录
    chown -R secbox:secbox /data/persistence
    

:white_check_mark: 方案二:增强数据库打开逻辑的健壮性

修改 database/utils.lua 或相关组件启动流程,在数据库打开失败时进行自动修复:

-- 示例逻辑
local function safe_open_db(path)
    local dir = get_parent_dir(path)
    if not fs.exists(dir) then
        log.warn("Creating missing persistence dir: ", dir)
        fs.mkdir_r(dir)  -- 递归创建
    end
    return sqlite3.open(path)
end

参考知识库中的 ORM 操作说明,应处理文件系统异常场景。


:white_check_mark: 方案三:引入首次启动标记机制

/data/.first_boot 标记首次启动,在此阶段强制执行初始化:

if [ ! -f /data/.first_boot ]; then
    echo "First boot detected, initializing persistence directories..."
    /usr/bin/init_persistence_dirs.sh
    touch /data/.first_boot
fi

排查建议

1. 对比成功与失败烧片包的 /data 分区内容

  • 挂载两个版本的完整镜像(含 data 分区)
  • 检查 /data/persistence 是否存在及其子目录结构

2. 检查启动脚本中是否有创建目录的逻辑

  • 查找 framework_init.sh, persistence_init.sh 等脚本
  • 确认是否在 maca 启动前执行了目录创建

3. 查看完整启动日志中 /data 挂载时间点

  • 确保 /data 分区挂载早于任何组件尝试访问数据库
  • 建议添加日志:
    mount | grep '/data'
    echo "[$(date)] /data mounted, creating persistence dirs..." >> /var/log/boot.log
    

总结

项目 内容
问题现象 烧片后首次启动 maca 失败,提示无法打开数据库
根本原因 /data/persistence 目录未创建,数据库软链接指向空路径
触发条件 仅发生在烧片后首次启动;升级场景因保留 /data 而正常
技术本质 持久化机制依赖运行时目录初始化,烧片流程缺失此步骤
推荐解决 在烧片镜像或首次启动脚本中补全 /data/persistence/xxx 目录创建

:white_check_mark: 最终建议:

在构建流程中增加对 /data/persistence 各子目录的预创建处理,确保所有依赖持久化数据库的组件(如 maca)能在启动时顺利访问数据库文件。

如有条件,建议配合添加首次启动初始化日志跟踪,便于后续问题定位。

您好,可以发下回退后的一键收集日志到 huangzhiyu12@h-partners.com 这个邮箱

dump_info.tar.gz (1.1 MB)
已邮件传递and附件传递,请帮忙看一下。目前来看版本好像是对的,但是确实是经历过一次启动失败然后重新从L0开始引导的,不知道有没有什么负面影响。
烧片打印在第一次发帖时有附上

好的,收到。顺便能问下,你们烧片的操作步骤具体是什么?

烧片的打印里有。大概流程也写在这里了1712烧片指导

好的,我先看下