国内信息图制作网站,国家工商注册网,如何申请网址域名,做翻译小说网站赚钱吗ohos-busybox 是为 OpenHarmony 平台编译的 BusyBox 工具集。本文档详细介绍如何在鸿蒙PC上安装和使用官方适配完成的 BusyBox 工具#xff0c;包括 HNP 包的打包、安装和使用方法。 #x1f4cb; 目录
一、项目概述二、为什么需要 HNP 包三、HNP 包打包方法四、安装与使用五…ohos-busybox是为 OpenHarmony 平台编译的 BusyBox 工具集。本文档详细介绍如何在鸿蒙PC上安装和使用官方适配完成的 BusyBox 工具包括 HNP 包的打包、安装和使用方法。 目录一、项目概述二、为什么需要 HNP 包三、HNP 包打包方法四、安装与使用五、使用示例六、常见问题七、总结与最佳实践八、参考资料一、项目概述1.1 BusyBox 工具简介BusyBox是一个集成了大量 Unix 工具的精简工具箱它将许多常用的 Unix 工具打包成一个可执行文件。BusyBox 被设计为在资源受限的环境中运行是嵌入式 Linux 系统的标准组件。核心特性工具集成将数百个 Unix 工具集成到单个可执行文件中体积小巧相比完整工具集体积大幅减小⚡高效运行针对嵌入式环境优化启动速度快功能完整提供 ls、grep、tar、sed、awk 等常用工具符号链接通过符号链接提供不同的命令接口跨平台支持多种架构和操作系统主要应用场景嵌入式系统和 IoT 设备系统恢复和救援环境容器和轻量级虚拟化环境资源受限的开发环境系统管理和维护工具作为完整 Unix 工具集的替代方案1.2 项目信息项目信息详情项目名称ohos-busybox版本1.37.0BusyBox 官方版本许可证GPL-2.0目标平台鸿蒙PC (aarch64-linux-ohos)源码仓库https://busybox.net/downloads/适配仓库https://github.com/Harmonybrew/ohos-busybox预构建包https://github.com/Harmonybrew/ohos-busybox/releases编译方式交叉编译Cross Compilation1.3 BusyBox 包含的工具BusyBox 集成了数百个 Unix 工具主要包括文件操作类ls,cp,mv,rm,mkdir,rmdir,touch,cat,head,tailfind,grep,sed,awk,sort,uniq,wc压缩归档类tar,gzip,gunzip,bzip2,xz系统信息类ps,top,free,df,du,mount,umount网络工具类wget,ftpget,ftpput,telnet,nc文本处理类vi,less,more,cut,paste,join其他工具sh,ash,bash简化版 shellinit,getty,loginchmod,chown,chgrp1.4 为什么需要 ohos-busybox在鸿蒙PC上进行开发时我们经常需要✅Unix 工具集提供完整的 Unix 命令行工具✅系统管理进行文件操作、系统监控等任务✅脚本执行运行各种 shell 脚本✅开发调试在开发环境中使用常用工具✅资源优化在资源受限环境中提供轻量级工具集二、为什么需要 HNP 包2.1 系统安全限制重要说明在鸿蒙PC上由于系统安全规格限制等原因暂不支持通过解压 配 PATH的方式直接使用 tar.gz 包。这意味着❌ 不能直接解压 tar.gz 包到任意目录❌ 不能通过设置 PATH 环境变量来使用✅ 必须打包成 HNPHarmonyOS Native Package格式才能正常使用2.2 HNP 包的优势HNP 包是鸿蒙PC的官方包管理格式具有以下优势✅系统集成与鸿蒙PC的包管理系统集成✅安全可靠通过官方工具安装符合系统安全规范✅易于管理支持安装、卸载、更新等操作✅路径规范统一安装在/data/service/hnp/目录下2.3 其他平台的使用方式在鸿蒙开发板上可以使用传统的解压 配 PATH方式# 使用 hdc 推送文件到设备hdcfilesend busybox-1.37.0-ohos-arm64.tar.gz /data# 进入设备 shellhdc shell# 解压并配置cd/datatar-zxf busybox-1.37.0-ohos-arm64.tar.gzexportPATH$PATH:/data/busybox-1.37.0-ohos-arm64/bin# 现在可以使用 busybox 命令了busyboxls在鸿蒙容器中# 启动容器docker run -itd --nameohos ghcr.io/hqzing/docker-mini-openharmony:latest dockerexec-it ohossh# 下载并安装cd/rootcurl-L -O https://github.com/Harmonybrew/ohos-busybox/releases/download/1.37.0/busybox-1.37.0-ohos-arm64.tar.gztar-zxf busybox-1.37.0-ohos-arm64.tar.gz -C /optexportPATH$PATH:/opt/busybox-1.37.0-ohos-arm64/bin# 使用 busyboxbusybox --help三、HNP 包打包方法3.1 准备工作在开始打包之前需要准备以下内容预构建的 tar.gz 包从 release 页面 下载hnpcli 工具鸿蒙PC的包管理工具打包脚本用于自动化打包过程3.2 下载预构建包# 下载 busybox 预构建包wgethttps://github.com/Harmonybrew/ohos-busybox/releases/download/1.37.0/busybox-1.37.0-ohos-arm64.tar.gz3.3 创建打包脚本创建一个pack_hnp.sh脚本来自动化打包过程#!/bin/bashset-e# 配置变量BUSYBOX_VERSION1.37.0TAR_FILEbusybox-${BUSYBOX_VERSION}-ohos-arm64.tar.gzEXTRACT_DIRbusybox-${BUSYBOX_VERSION}-ohos-arm64HNP_PUBLIC_PATH/data/service/hnpBUSYBOX_INSTALL_PATH${HNP_PUBLIC_PATH}/busybox.org/busybox_${BUSYBOX_VERSION}OUTPUT_DIRoutputWORKDIR$(pwd)# 创建输出目录mkdir-p${OUTPUT_DIR}# 解压 tar.gz 包if[!-d${EXTRACT_DIR}];thenecho解压${TAR_FILE}...tar-zxf${TAR_FILE}fi# 创建安装目录echo创建安装目录...mkdir-p${BUSYBOX_INSTALL_PATH}/bin# 复制文件echo复制文件...cp-r${EXTRACT_DIR}/bin/*${BUSYBOX_INSTALL_PATH}/bin/if[-f${EXTRACT_DIR}/LICENSE];thencp${EXTRACT_DIR}/LICENSE${BUSYBOX_INSTALL_PATH}/fiif[-f${EXTRACT_DIR}/AUTHORS];thencp${EXTRACT_DIR}/AUTHORS${BUSYBOX_INSTALL_PATH}/fi# 创建 hnp.jsonecho创建 hnp.json...cat${BUSYBOX_INSTALL_PATH}/hnp.jsonEOF { type: hnp-config, name: busybox, version: 1.37.0, install: { links: [ { source: bin/busybox, target: busybox }, { source: bin/busybox, target: ls }, { source: bin/busybox, target: cp }, { source: bin/busybox, target: mv }, { source: bin/busybox, target: rm }, { source: bin/busybox, target: mkdir }, { source: bin/busybox, target: rmdir }, { source: bin/busybox, target: cat }, { source: bin/busybox, target: grep }, { source: bin/busybox, target: tar }, { source: bin/busybox, target: gzip }, { source: bin/busybox, target: sed }, { source: bin/busybox, target: awk }, { source: bin/busybox, target: find }, { source: bin/busybox, target: wget } ] } } EOF# 设置执行权限chmodx${BUSYBOX_INSTALL_PATH}/bin/busybox# 使用 hnpcli 打包如果可用ifcommand-v hnpcli/dev/null;thenecho使用 hnpcli 打包...hnpcli pack -i${BUSYBOX_INSTALL_PATH}-o${OUTPUT_DIR}/echoHNP 包已生成:${OUTPUT_DIR}/busybox.hnpelseecho警告: 未找到 hnpcli 工具跳过 HNP 包生成echo请手动使用 hnpcli 打包:echo hnpcli pack -i${BUSYBOX_INSTALL_PATH}-o${OUTPUT_DIR}/fi# 生成 tar.gz 包备用echo生成 tar.gz 包...cd${HNP_PUBLIC_PATH}/busybox.orgtar-zcf${WORKDIR}/${OUTPUT_DIR}/ohos_busybox_${BUSYBOX_VERSION}.tar.gz busybox_${BUSYBOX_VERSION}/cd-/dev/nullecho打包完成echo输出文件echo -${OUTPUT_DIR}/busybox.hnp (如果 hnpcli 可用)echo -${OUTPUT_DIR}/ohos_busybox_${BUSYBOX_VERSION}.tar.gz3.4 执行打包# 赋予脚本执行权限chmodx pack_hnp.sh# 执行打包./pack_hnp.sh3.5 验证打包结果打包完成后验证生成的文件# 检查 HNP 包ls-lh output/busybox.hnp# 检查 tar.gz 包ls-lh output/ohos_busybox_1.37.0.tar.gz# 验证安装目录结构tree${BUSYBOX_INSTALL_PATH}/预期的安装目录结构/data/service/hnp/busybox.org/busybox_1.37.0/ ├── bin/ │ └── busybox # busybox 可执行文件 ├── LICENSE # 许可证文件 ├── AUTHORS # 作者信息 └── hnp.json # HNP 配置文件四、安装与使用4.1 安装 HNP 包使用 hnpcli 安装# 在鸿蒙PC上执行hnpcliinstalloutput/busybox.hnp手动安装使用 tar.gz# 在鸿蒙PC上执行# 1. 解压 tar.gz 包tar-xzf ohos_busybox_1.37.0.tar.gz# 2. 复制到安装目录sudocp-r busybox_1.37.0/* /data/service/hnp/busybox.org/busybox_1.37.0/# 3. 设置执行权限sudochmodx /data/service/hnp/busybox.org/busybox_1.37.0/bin/*# 4. 创建符号链接根据 hnp.json 配置# hnp 系统会自动处理 links 配置但也可以手动创建sudoln-sf /data/service/hnp/busybox.org/busybox_1.37.0/bin/busybox /usr/local/bin/busybox4.2 验证安装# 检查 busybox 是否可用busybox --help# 查看 busybox 版本busybox|head-1# 查看支持的所有命令busybox --list4.3 使用 BusyBox安装完成后可以通过两种方式使用 BusyBox方式一直接调用 busybox# 使用 busybox 执行命令busyboxls-la busyboxgreppatternfile.txt busyboxtar-czf archive.tar.gz directory/方式二使用符号链接如果已配置# 直接使用命令名如果 hnp.json 中配置了符号链接ls-lagreppatternfile.txttar-czf archive.tar.gz directory/五、使用示例5.1 文件操作示例# 列出文件busyboxls-lah# 复制文件busyboxcpsource.txt dest.txt# 移动文件busyboxmvold.txt new.txt# 删除文件busyboxrmfile.txt# 创建目录busyboxmkdir-p /path/to/directory# 查看文件内容busyboxcatfile.txt# 查看文件前几行busyboxhead-n10file.txt# 查看文件后几行busyboxtail-n20file.txt5.2 文本处理示例# 搜索文本busyboxgreppatternfile.txt# 递归搜索busyboxgrep-rpattern/path/to/directory# 文本替换busyboxseds/old/new/gfile.txt# 文本过滤busyboxawk{print$1}file.txt# 排序busyboxsortfile.txt# 去重busyboxuniqfile.txt# 统计行数、字数busyboxwc-l file.txt5.3 压缩归档示例# 创建 tar 归档busyboxtar-cf archive.tar files/# 创建 gzip 压缩的 tar 归档busyboxtar-czf archive.tar.gz files/# 解压 tar 归档busyboxtar-xf archive.tar# 解压 gzip 压缩的 tar 归档busyboxtar-xzf archive.tar.gz# 压缩文件busyboxgzipfile.txt# 解压文件busybox gunzip file.txt.gz5.4 系统信息示例# 查看进程busyboxpsaux# 查看磁盘使用busyboxdf-h# 查看目录大小busyboxdu-sh /path/to/directory# 查找文件busyboxfind/path -name*.txt# 网络下载busyboxwgethttp://example.com/file.txt5.5 Shell 脚本示例#!/bin/sh# 使用 busybox 的 ash shell# 变量赋值NAMEBusyBoxVERSION$(busybox|head-1)# 条件判断if[-ffile.txt];thenecho文件存在busyboxcatfile.txtelseecho文件不存在fi# 循环foriin$(busyboxseq110);doecho数字:$idone# 函数hello(){echoHello from BusyBox!}hello六、常见问题6.1 为什么某些功能被禁用了在构建过程中某些难以适配的功能被直接禁用了CONFIG_SHA1_HWACCELSHA1 硬件加速CONFIG_FEATURE_UTMPUTMP 功能CONFIG_FEATURE_SU_CHECKS_SHELLSsu 检查 shellsCONFIG_HOSTIDhostid 命令CONFIG_HUSHhush shell这些功能在 OpenHarmony 平台上可能不完全兼容因此被禁用以确保稳定性。6.2 如何查看 BusyBox 支持的所有命令# 列出所有支持的命令busybox --list# 查看特定命令的帮助busyboxcommand--help6.3 如何从源码构建 BusyBox参考项目中的build.sh脚本# 1. 准备构建环境Ubuntu 24.04 x64sudoaptupdatesudoaptinstall-y build-essentialunzip# 2. 下载并执行构建脚本gitclone https://github.com/Harmonybrew/ohos-busybox.gitcdohos-busybox ./build.sh构建脚本会下载 OpenHarmony SDK下载 BusyBox 源码应用适配补丁配置和编译打包生成 tar.gz 文件6.4 符号链接不工作怎么办如果通过符号链接使用命令时出现问题可以检查符号链接是否存在ls-l /usr/local/bin/busybox手动创建符号链接sudoln-sf /data/service/hnp/busybox.org/busybox_1.37.0/bin/busybox /usr/local/bin/busybox直接使用 busybox 命令busyboxcommand[args]6.5 如何在脚本中使用 BusyBox在脚本中可以这样使用#!/bin/sh# 使用 busybox 的绝对路径BUSYBOX/data/service/hnp/busybox.org/busybox_1.37.0/bin/busybox# 或者确保 busybox 在 PATH 中exportPATH$PATH:/data/service/hnp/busybox.org/busybox_1.37.0/bin# 使用命令$BUSYBOXls-la$BUSYBOXgreppatternfile.txt6.6 性能问题BusyBox 是单可执行文件通过符号链接调用时会有轻微的性能开销。如果对性能有要求可以考虑直接使用busybox command而不是符号链接在脚本中缓存 busybox 路径对于频繁使用的命令创建独立的符号链接七、总结与最佳实践7.1 总结BusyBox 是一个强大的工具集为鸿蒙PC提供了完整的 Unix 命令行工具✅功能丰富集成了数百个常用 Unix 工具✅体积小巧相比完整工具集体积大幅减小✅易于部署通过 HNP 包可以方便地安装和管理✅跨平台支持多种使用场景PC、开发板、容器7.2 最佳实践使用 HNP 包安装在鸿蒙PC上优先使用 HNP 包进行安装遵循系统的包管理规范合理使用符号链接根据需要配置符号链接避免创建过多不必要的符号链接脚本中使用绝对路径在脚本中使用 busybox 时使用绝对路径更可靠或者确保 PATH 环境变量正确设置了解功能限制某些功能在 OpenHarmony 上可能不可用查看busybox --list了解支持的命令性能优化对于频繁使用的命令考虑直接调用在脚本中缓存 busybox 路径7.3 适用场景BusyBox 特别适合以下场景✅嵌入式开发资源受限的开发环境✅系统维护系统恢复和救援操作✅容器环境轻量级容器中的工具集✅脚本开发需要完整 Unix 工具的脚本环境✅开发调试开发过程中的常用工具需求