# ish **Repository Path**: Yyaqq/ish ## Basic Information - **Project Name**: ish - **Description**: Linux shell for iOS - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-07 - **Last Updated**: 2021-05-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # [iSH](https://ish.app) [](https://travis-ci.org/tbodt/ish) [](https://github.com/tbodt/ish/search?q=goto) [](https://github.com/tbodt/ish/search?q=fuck)
iSH 是一个运行在 iOS 上的 Linux shell。本项目使用了 x86 用户模式仿真和系统调用翻译转换。 请查看 issue 和提交记录以了解本项目当前的状态。 - [App Store 页面](https://apps.apple.com/us/app/ish-shell/id1436902243) - [Testflight 测试](https://testflight.apple.com/join/97i7KM8O) - [Discord 服务器](https://discord.gg/HFAXj44) - [维基帮助与教程](https://github.com/ish-app/ish/wiki) # 上手 本项目下包含了其他 git 项目作为子模块,请确保在克隆时使用参数`--recurse-submodules`,即 `git clone --recurse-submodules https://github.com/ish-app/ish.git`。或是在克隆好了之后执行 `git submodule update --init`。 编译此项目需要以下依赖: - Python 3 + Meson (`pip3 install meson`) - Ninja 请查看[此处](https://ninja-build.org/) - Clang and LLD (在安装了 `brew` 的 macOS 系统上运行 `brew install llvm`。在 Linux 系统上请根据你的包管理器,选择运行相应的安装命令 `sudo apt install clang lld` 或者 `sudo pacman -S clang lld`) - sqlite3 (通常 sqlite3 在 macOS 上是预安装的,但它或许没有安装在你的 Linux 上,运行 `which sqlite3` 以查看它是否存在。如果没有,你可以根据你的包管理器运行 `sudo apt install libsqlite3-dev` 之类的安装命令) - libarchive (在安装了 `brew` 的 macOS 系统上运行 `brew install libarchive`。在 Linux 系统上请根据你的包管理器,选择运行相应的安装命令 `sudo apt install libarchive-dev` 或者 `sudo port install libarchive`) ## 创建iOS应用 使用 Xcode 打开项目,选择 iSH.xcconfig,并且修改 `ROOT_BUNDLE_IDENTIFIER` 为你的[唯一值](https://help.apple.com/xcode/mac/current/#/dev91fe7130a)。然后点击 `运行`,之后应该有脚本帮你自动执行相关操作。如果遇到了任何问题,请提交 issue,我们会帮你解决。 ## 为测试构建命令行工具 在项目目录中运行命令 `meson build`,之后 `build` 目录会被创建。进入到 `build` 目录并运行命令 `ninja`。 为了建立一个自有的 Alpine linux 文件系统,请从 [Alpine 网站](https://alpinelinux.org/downloads/) 下载 `Alpine minirotfs tarball for i386` 并运行 `tools/fakefsify` 。将 minirotfs tarball 指定为第一个参数,将输出目录的名称(如`alpine`)指定为第二个参数,即 `tools/fakefsify $MinirotfsTarballFilename alpine` 然后在 Alpine 文件系统中运行 `/ish -f alpine/bin/login -f root`。如果 `build` 目录下找不到 `tools/fakefsify`,可能是系统上找不到 `libarchive` 的依赖(请参照前面的章节进行安装)。 除了可以使用 `ish`,你也可以使用 `tools/ptraceomatic` 替代它,以便在某个真实进程中单步比较寄存器。我通常使用它来进行调试(需要64位 Linux 4.11 或更高版本)。 ## 日志 在编译过程中,iSH 提供数种日志类型,默认情况下它们都被禁用,想要启用它们需要: - 在 Xcode 中将 iSH.xcconfig 中 `ISH_LOG` 设置为以空格分隔的日志类型列表。 - 在 Meson (测试使用的命令行工具) 中执行命令 `meson configure -Dlog="