# 鸿蒙 Termony 终端 **Repository Path**: nmrs/Termony ## Basic Information - **Project Name**: 鸿蒙 Termony 终端 - **Description**: 鸿蒙系统电脑版 Termux。开发中…… - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: https://github.com/TermonyHQ/Termony - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-08-19 - **Last Updated**: 2025-12-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Termony GitHub Gitee HarmonyOS电脑版的Termux。正在开发中。 目前可以在华为MateBook Pro上运行一些基本命令: 也可以在HarmonyOS电脑上编译和运行C/C++程序: ## 概述 预装软件包: - aria2 - bash - binutils - busybox - c-ares - coremark - curl - elf-loader (可以运行没有可执行权限的程序!例如:`cp /data/app/bin/bash ~/ && loader ~/bash`) - expat - fastfetch - fish - gcc - gdb - gettext - git - glib - gmp - hdc - htop - kbd - libarchive - libevent - libffi - libidn2 - libunistring - lz4 - make - mpc - mpfr - ncnn - ncurses - openssh - openssl - pcre2 - proot - python - qemu (可以运行没有可执行权限的程序!例如:`cp /data/app/bin/bash ~/ && qemu-aarch64 ~/bash`) - qemu-vroot (修改版QEMU,模拟proot行为) - readline - sl - strace - stream - talloc - tar - tmux - tree - vim - vkpeak - xxhash - xz - yyjson - zstd 高级技巧:可以在内置终端应用中的`/data/service/hnp`路径下使用这些工具: 由于前缀设置为`/data/app/base.org/base_1.0`(感谢@duskmoon314),某些路径可能出错。可以通过以下方式覆盖: ```shell LD_LIBRARY_PATH=/data/service/hnp/base.org/base_1.0/lib TERMINFO=/data/service/hnp/base.org/base_1.0/share/terminfo fish ``` 可以将这些设置持久化到`~/.bashrc`中,并在执行Termony命令前先运行bash: ```shell if [ -d "/data/service/hnp/base.org/base_1.0" ]; then export LD_LIBRARY_PATH=/data/service/hnp/base.org/base_1.0/lib export TERMINFO=/data/service/hnp/base.org/base_1.0/share/terminfo export VIM=/data/service/hnp/base.org/base_1.0/share/vim export TMUX_TMPDIR=/data/storage/el2/base/cache fi ``` 注意:内置终端应用没有映射R+X页面的权限,因此无法使用elf加载器,但可以在Termony中使用。另外,升级Termony时公共文件夹不会更新,需要重新安装才能获取最新版本。 终端功能: - 基本转义序列支持 - 通过右键菜单粘贴 - 使用OSC52转义序列通过pbcopy/pbpaste实现命令行复制/粘贴 ### 在新根文件系统中运行(早期实验性功能) `qemu-vroot-aarch64`是修改版的用户模式QEMU,模拟proot行为。允许用户运行Linux二进制文件(包括不同CPU架构),并切换到新的根文件系统。 例如,按以下步骤进入Alpine根文件系统: - 从 https://alpinelinux.org/downloads/ 下载Alpine最小根文件系统(aarch64或x64) - 解压到推荐路径:`/data/storage/el2/base/files/alpine_rootfs` ```shell mkdir -p /data/storage/el2/base/files/alpine_rootfs tar xvf alpine-minirootfs-3.22.0-aarch64.tar.gz -C /data/storage/el2/base/files/alpine_rootfs ``` - 运行`qemu-vroot-aarch64`加载busybox shell(x86_64系统使用`qemu-vroot-x86_64`) ```shell cd /data/storage/el2/base/files/alpine_rootfs qemu-vroot-aarch64 -E PATH=/bin:/usr/bin:/sbin -E HOME=/root -L ./ ./bin/busybox sh -c 'cd && sh' ``` - 运行`ls /`可见根目录已改变: ```shell ls / bin dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var ``` - 运行`apk update`,Alpine包管理器可正常工作 ## Mac用户使用方法: 1. 将MateBook Pro连接至Mac 2. 递归克隆本仓库并进入目录 3. 在DevEco-Studio中设置代码签名(忽略警告) 4. 通过Homebrew或Nix安装:`wget`, `coreutils`, `make`, `gsed`, `gettext`, `automake`, `cmake`, `pkg-config`, `ncurses` 5. (M系列芯片) `export PATH="/opt/homebrew/opt/coreutils/libexec/gnubin:/opt/homebrew/opt/gnu-sed/libexec/gnubin:/opt/homebrew/opt/make/libexec/gnubin:$PATH"` 6. 运行`./create-hnp.sh`创建hnp包 7. 运行`./build-macos.sh` 8. 运行`./push.sh ./entry/build/default/outputs/default/entry-default-signed.hap` 9. 在HarmonyOS电脑上使用Termony ## Linux用户使用方法: 1. 将设备连接至Linux电脑 2. 递归克隆本仓库并进入目录 3. 在DevEco-Studio中设置代码签名 4. 设置DevEco命令行工具,确保`$TOOL_HOME`指向正确SDK目录 5. 运行`./build-linux.sh -b`创建hnp包 6. 运行`./build-linux.sh -s`签名hap文件 7. 运行`./build-linux.sh -p`推送安装到设备 8. 在设备上使用Termony ## Windows用户使用方法: 1. 将设备连接至Windows电脑 2. 安装WSL(推荐Ubuntu) 3. 在WSL中递归克隆本仓库并进入目录 4. 在DevEco-Studio中设置代码签名 5. 在WSL中设置DevEco命令行工具,确保`$TOOL_HOME`正确 6. 在WSL运行`./build-linux.sh -b`创建hnp包 7. 在WSL运行`./build-linux.sh -s`签名hap文件 8. 在Windows终端使用`hdc`推送安装(参考`build-linux.sh`的`hdc_push`) 9. 在设备上使用Termony ## 工作原理 通过分析CodeArts IDE,发现其使用HNP包运行原生程序。需将.hnp文件打包到.hap中,并在module.json5添加: ```json5 { "module": { "hnpPackages": [ { "package": "busybox.hnp", "type": "private" } ] } } ``` 手动添加.hnp文件到.hap并签名(参考sign.py)。.hnp包会自动解压到`/data/app`并在`/data/app/bin`创建符号链接。 由小艺AI生成