当前位置: 首页 > news >正文

优化OpenHarmony中lspci命令实现直接获取设备具体型号

OpenHarmony中由于开源协议的原因,默认使用toybox,而不是busybox。但是OpenHarmony使用的toybox还有一些不完善的地方,比如执行lspci命令无法获取到pci.ids数据库文件,从而无法获取到PCI设备的具体型号,如下图。于是将解决办法分析如下:

image.png

/usr/share/misc/pci.ids 是一个数据库文件,它包含了几乎所有已知的PCI设备ID、厂商ID、设备类型和子系统ID的对应名称。

解决办法

1.从https://pci-ids.ucw.cz/%E5%A4%84%E8%8E%B7%E5%8F%96%E5%88%B0pci.ids%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%87%E4%BB%B6%EF%BC%8C%E7%BC%96%E8%AF%91%E6%89%93%E5%8C%85%E5%88%B0%E5%BC%80%E5%8F%91%E6%9D%BF%E4%B8%AD%EF%BC%8C%E5%BC%80%E5%8F%91%E6%9D%BF%E4%B8%ADpci.ids%E7%9A%84%E8%B7%AF%E5%BE%84%E4%B8%BA%60/vendor/etc/pci.ids%60

image.png

2.修改toybox源码,将/usr/share/misc/pci.ids路径改为/vendor/etc/pci.ids

--- a/third_party/toybox/toys/other/lspci.c    2025-06-30 17:12:48.037944884 +0800
+++ a/third_party/toybox/toys/other/lspci.c    2025-06-30 17:13:42.807941470 +0800
@@ -23,7 +23,7 @@usage: lspci [-n] [-i FILE ]-n    Numeric output (repeat for readable and numeric)
-    -i    PCI ID database (default /usr/share/misc/pci.ids)
+    -i    PCI ID database (default /vendor/etc/pci.ids)*/@@ -120,7 +120,7 @@void lspci_main(void){if (CFG_LSPCI_TEXT && TT.n != 1) {
-    if (!TT.i) TT.i = "/usr/share/misc/pci.ids";
+    if (!TT.i) TT.i = "/vendor/etc/pci.ids";if (!(TT.db = fopen(TT.i, "r"))) perror_msg("%s", TT.i);}--- a/third_party/toybox/generated/help.h    2025-06-30 17:13:08.487943580 +0800
+++ a/third_party/toybox/generated/help.h    2025-06-30 17:13:26.137942414 +0800
@@ -230,7 +230,7 @@#define HELP_lsusb "usage: lsusb\n\nList USB hosts/devices."-#define HELP_lspci "usage: lspci [-ekmn] [-i FILE ] \n\nList PCI devices.\n-e    Print all 6 digits in class\n-i    PCI ID database (default /usr/share/misc/pci.ids)\n-k    Print kernel driver\n-m    Machine parseable format\n-n    Numeric output (repeat for readable and numeric)"
+#define HELP_lspci "usage: lspci [-ekmn] [-i FILE ] \n\nList PCI devices.\n-e    Print all 6 digits in class\n-i    PCI ID database (default /vendor/etc/pci.ids)\n-k    Print kernel driver\n-m    Machine parseable format\n-n    Numeric output (repeat for readable and numeric)"#define HELP_lsmod "usage: lsmod\n\nDisplay the currently loaded modules, their sizes and their dependencies."

修改效果

可以获取到pci具体信息,比如笔者板子上有两个rtl8126网卡,一张amd 580显卡

image.png

http://www.dtcms.com/a/348356.html

相关文章:

  • 7.6 残差网络
  • Palantir Foundry 领先其他数据平台5到10年:一位使用者的深入观察
  • vscode配置remote-ssh进行容器内开发
  • BQTLOCK 勒索软件即服务出现,拥有复杂的规避策略
  • MRO and mixin in Python Django
  • GD32VW553-IOT 测评和vscode开发环境搭建
  • Flutter性能优化完全指南:构建流畅应用的实用策略
  • 多奥将梯控系统、无线网桥及工业交换机的核心功能与参数整合为结构化表格,并补充应用价值分析
  • rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(十八) 使用表格
  • 时间复杂度
  • 多核多线程应用程序开发可见性和乱序如何处理
  • ESNP LAB 笔记:配置MPLS(Part2)
  • Java Stream API详解
  • iptables 防火墙核心知识梳理(附实操指南)
  • VS2022的MFC中关联使用控制台并用printf输出调试信息
  • GPT 模型详解:从原理到应用
  • 构建AI智能体:十二、给词语绘制地图:Embedding如何构建机器的认知空间
  • 大白话解析:多证明验证(Merkle Multi-Proof)​
  • 【Python】CSV批量转Excel工具 (Tkinter版)
  • 【Docker基础】Docker-compose多容器协作案例示例:从LNMP到分布式应用集群
  • 复杂姿态误报率↓78%!陌讯多模态算法在跌倒检测的医疗落地
  • 恶劣天气下漏检率↓79%!陌讯多模态时序融合算法在道路事故识别的实战优化
  • 第16届蓝桥杯C++中高级选拔赛(STEMA)2025年1月12日真题
  • 大模型面试题剖析:模型微调和蒸馏核心技术拆解与考点梳理
  • 爆肝三周,我终于上线了自己的第一个小程序
  • 01-鸿蒙系统概览与发展历程
  • 鸿蒙中Frame分析
  • 线段树相关算法题(1)
  • mybatis过渡到mybatis-plus过程中需要注意的地方
  • 自由学习记录(87)