Skip to content

Run Linux Shell on HarmonyOS, Phone/Pad/2in1/PC,TV are supported, like iSH on iOS/iPadOS.(在鸿蒙上运行Linux Shell,支持手机、平板、2in1/PC、TV,类似iOS/iPadOS上的iSH)

License

Notifications You must be signed in to change notification settings

harmoninux/HiSH

Repository files navigation

HiSH

Gitee | English

在HarmonyOS设备上运行Linux Shell。基于harmony-qemu,支持2in1(PC)、平板和手机。

多设备运行

如何获取

可以选择下面任一方法获取HiSH:

  • Releases下载hap文件,自行签名后安装到设备或模拟器(支持JIT,运行效率更高)
  • 通过内测邀请链接安装。
  • 使用DevEco Studio编译源码,参考 构建HAP

核心功能

  • 完整的arm64 Linux内核
  • 网络支持,并支持端口转发
  • Alpine Linux根文件系统
  • 虚拟按键(Tab/Ctrl/Esc/方向键)
  • 共享文件夹
  • JIT(仅开发者可用)

构建指南

  • HAP包
  • libqemu-system库(可选)
  • Linux内核(可选)
  • 根文件系统(可选)

构建HAP

构建libqemu-system(可选)

在Ubuntu或Windows的WSL2环境下构建自定义的libqemu-system-aarch64.so

  • 安装依赖:
sudo apt install -y build-essential cmake curl wget unzip python3 libncurses-dev \
    git flex bison bash make autoconf libcurl4-openssl-dev tcl \
    gettext zip pigz meson 
  • 华为开发者官网下载Linux版"Command Line Tools"
  • 解压后将TOOL_HOME环境变量设置为解压目录
  • 进入deps目录运行构建脚本build.sh(默认针对x86_64模拟器):
    • 针对真机的构建(arm64-v8a),需要将build.sh脚本中的OHOS_ARCH改为aarch64OHOS_ABI改为arm64-v8a
cd deps 
./build.sh 
  • 构建产物位于deps/output目录

构建Linux内核(可选)

  • 安装依赖:
sudo apt install build-essential gcc bc bison flex libssl-dev libncurses5-dev libelf-dev gcc-aarch64-linux-gnu 
  • 克隆Linux内核源码:
git clone --depth=1 -b v6.16 https://github.com/torvalds/linux 
  • 下载内核配置:
cd linux 
curl https://raw.githubusercontent.com/harmoninux/linux-config/refs/heads/master/arm64_tinydocker > .config 
  • 编译内核:
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)
  • 内核镜像位于arch/arm64/boot/Image,复制到项目对应目录

构建Linux根文件系统(可选)

以下是构建自定义根文件系统的完整流程

  • 准备Alpine根文件系统
# 创建目录并解压Alpine最小根文件系统 
mkdir alpine 
wget https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/aarch64/alpine-minirootfs-3.22.1-aarch64.tar.gz 
tar xvf alpine-minirootfs-3.22.1-aarch64.tar.gz -C alpine 
  • 创建磁盘镜像文件
# 创建8GB大小的原始镜像文件(可根据需要调整大小)
qemu-img create -f raw rootfs.img 8G 
 
# 格式化为ext4文件系统 
mkfs.ext4 rootfs.img 
  • 挂载并填充文件系统
# 创建挂载点并挂载镜像 
sudo mkdir -p /mnt/rootfs 
sudo mount -o loop rootfs.img /mnt/rootfs 
 
# 复制Alpine文件系统内容 
sudo cp -a alpine/* /mnt/rootfs/
 
# 卸载镜像 
sudo umount /mnt/rootfs 
  • 转换为qcow2格式
# 转换格式(qcow2支持动态分配空间)
qemu-img convert -p -f raw -O qcow2 rootfs.img rootfs.qcow2 
  • 部署到项目
# 将生成的文件放入项目目录 
mkdir -p entry/src/main/resources/rawfile/vm/
mv rootfs.qcow2 entry/src/main/resources/rawfile/vm/rootfs_aarch64.qcow2 

Star history

星标历史图表

About

Run Linux Shell on HarmonyOS, Phone/Pad/2in1/PC,TV are supported, like iSH on iOS/iPadOS.(在鸿蒙上运行Linux Shell,支持手机、平板、2in1/PC、TV,类似iOS/iPadOS上的iSH)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages