{"id":51060954,"url":"https://github.com/Ylarod/ddk","last_synced_at":"2026-07-11T05:00:29.068Z","repository":{"id":307916445,"uuid":"744338344","full_name":"Ylarod/ddk","owner":"Ylarod","description":"内核驱动开发工具包 (Kernel Driver Development Kit)","archived":false,"fork":false,"pushed_at":"2026-03-13T00:06:12.000Z","size":318,"stargazers_count":114,"open_issues_count":0,"forks_count":43,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-13T06:36:34.263Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://cnb.cool/Ylarod/ddk","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ylarod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-17T05:00:12.000Z","updated_at":"2026-03-13T00:06:15.000Z","dependencies_parsed_at":"2025-08-03T02:30:36.686Z","dependency_job_id":"adfe7f31-ec19-460e-872f-b4fc9d86f1da","html_url":"https://github.com/Ylarod/ddk","commit_stats":null,"previous_names":["ylarod/ddk"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/Ylarod/ddk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ylarod%2Fddk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ylarod%2Fddk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ylarod%2Fddk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ylarod%2Fddk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ylarod","download_url":"https://codeload.github.com/Ylarod/ddk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ylarod%2Fddk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35351426,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-23T02:00:24.413Z","updated_at":"2026-07-11T05:00:29.012Z","avatar_url":"https://github.com/Ylarod.png","language":"Shell","funding_links":[],"categories":["What is KernelSU?"],"sub_categories":[],"readme":"# 内核驱动开发工具包 (Kernel Driver Development Kit)\n\n[English](README_en.md) | 简体中文\n\n该工具包旨在快速开发内核模块，但**不保证**内核模块能够完全兼容对应版本的内核。\n\n如果需要完全兼容性，请下载完整内核代码并自行编译，具体方法请参考相关文档。\n\n如果不想下载 Clang，可以使用 NDK Clang 进行编译，但**可能**会导致编译产物的结构体偏移有所不同。\n\nsubmodule 下的 prebuilts tarball 文件很大，非必要不要 clone submodules\n\n内核模块开发模板：\n\n[Github](https://github.com/Ylarod/ddk-module-template)\n\n[CNB](https://cnb.cool/Ylarod/ddk-module-template)\n\n## 选择开发模式\n\n| 场景 | 推荐模式 |\n|---|---|\n| Linux 本机开发 | **Host 模式**（推荐） |\n| macOS / Windows 开发 | **DevContainer 模式**（推荐） |\n| CI / 自动化构建 | **Docker 模式** |\n\n---\n\n## Host 模式（推荐 Linux 用户）\n\n\u003e [!NOTE]\n\u003e Host 模式将内核源码和 Clang 工具链直接解压到 `/opt/ddk` 目录，无需 Docker 或容器环境，是 Linux 用户的首选开发方式。\n\n### 前置依赖\n\n- `git-lfs`（用于拉取 submodule 中的大文件，**必须在克隆前安装并初始化**）\n- `zstd`（用于解压 `.tar.zst` 归档文件）\n- `jq`（用于 VSCode 配置脚本）\n\n安装并启用 Git LFS：\n\n```bash\n# Debian/Ubuntu\nsudo apt install git-lfs\n# Arch\nsudo pacman -S git-lfs\n\ngit lfs install\n```\n\n### 安装步骤\n\n#### 1. 克隆仓库（含 submodules）\n\n\u003e [!WARNING]\n\u003e `prebuilts` submodule 中包含大量通过 Git LFS 存储的预编译归档文件，体积较大，请确保已安装 `git-lfs` 并有足够的磁盘空间和网络带宽。\n\n```bash\ngit clone --recurse-submodules https://github.com/Ylarod/ddk.git\ncd ddk\n```\n\n如果已经克隆但未初始化 submodule：\n\n```bash\ngit submodule update --init --recursive\n```\n\n#### 2. 运行安装脚本\n\n```bash\nbash host/install.sh\n```\n\n安装脚本会将 `prebuilts/` 中的内核源码（`src`）、编译头文件（`kdir`）和 Clang 工具链（`clang`）解压到 `/opt/ddk`：\n\n```\n/opt/ddk/\n├── src/          # 各 Android 版本内核源码\n│   ├── android12-5.10/\n│   ├── android13-5.10/\n│   └── ...\n├── kdir/         # 各 Android 版本编译头文件\n└── clang/        # Clang 工具链\n```\n\n#### 3. 配置 VSCode clangd 代码索引\n\n首先确保 `~/.ddk/mapping.json` 存在（从仓库根目录的 `mapping.json` 复制）：\n\n```bash\nmkdir -p ~/.ddk\ncp mapping.json ~/.ddk/mapping.json\n```\n\n然后运行配置脚本：\n\n```bash\nbash host/vscode_clangd_configure.sh\n```\n\n该脚本会：\n- 读取 `~/.ddk/mapping.json` 获取 Android 版本与 Clang 版本的对应关系\n- 将 `host/.vscode` 模板（含文件过滤规则、编辑器设置、`compile_commands.json` 生成脚本等）复制到每个 `/opt/ddk/src/\u003candroid-version\u003e/` 目录\n- 配置各目录下 `.vscode/settings.json` 中的 `clangd.path`，指向对应版本的 Clang\n\n支持 `--dry-run` 参数预览操作：\n\n```bash\nbash host/vscode_clangd_configure.sh --dry-run\n```\n\n#### 4. 在 VSCode 中打开内核源码\n\n用 VSCode 打开对应的内核源码目录，安装 [clangd 扩展](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd) 后即可获得代码补全、跳转、引用查找等功能：\n\n```bash\ncode /opt/ddk/src/android16-6.12\n```\n\n---\n\n## DevContainer 模式（推荐 macOS / Windows 用户）\n\n\u003e [!TIP]\n\u003e 对于中国大陆用户，可以使用 `docker.cnb.cool/ylarod/ddk/ddk` 来代替 `ghcr.io/ylarod/ddk`\n\nDevContainer 通过容器提供与平台无关的一致开发环境，适合无法直接使用 Host 模式的 macOS 或 Windows 用户。\n\n### 本地 DevContainer\n\n\u003e [!WARNING]\n\u003e 当你使用这个方法的时候，你必须手动 `source envsetup.sh`\n\n把下面内容放置到 `.devcontainer/devcontainer.json`。\n\n可以修改 features 的内容来自由组装想要的镜像，可以选择的版本参考 [ddk image versions](https://github.com/Ylarod/ddk/pkgs/container/ddk/versions)\n\n参考：\n\n- [ddk-toolchain](https://github.com/Ylarod/ddk/blob/main/features/src/ddk-toolchain/devcontainer-feature.json)\n- [ddk-src](https://github.com/Ylarod/ddk/blob/main/features/src/ddk-src/devcontainer-feature.json)\n\n对于 M1 Mac + OrbStack 用户，参考 [ddk-module-template](https://github.com/Ylarod/ddk-module-template) 中的 `.devcontainer` 配置可以开发，还需要提前拉取镜像：\n\n```bash\ndocker run --platform linux/amd64 --rm -it docker.cnb.cool/ylarod/ddk/ddk-builder:latest\n```\n\n对于 x86_64 用户：\n\n```yml\n{\n  \"name\": \"ddk-module-dev\",\n  \"image\": \"docker.cnb.cool/ylarod/ddk/ddk-builder:latest\",\n  \"features\": {\n    \"ghcr.io/ylarod/ddk/features/ddk-toolchain:latest\": {\n      \"androidVer\": \"android12-5.10\",\n      \"setDefault\": true\n    },\n    \"ghcr.io/ylarod/ddk/features/ddk-src:latest\": {\n      \"androidVer\": \"android12-5.10\",\n      \"withKdir\": true,\n      \"setDefault\": true\n    }\n  },\n  \"remoteUser\": \"root\",\n  \"postCreateCommand\": \"echo Devcontainer ready\",\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\n        \"github.copilot\",\n        \"github.copilot-chat\",\n        \"github.vscode-github-actions\",\n        \"llvm-vs-code-extensions.vscode-clangd\",\n        \"ms-azuretools.vscode-containers\",\n        \"ms-azuretools.vscode-docker\",\n        \"ms-ceintl.vscode-language-pack-zh-hans\"\n      ]\n    }\n  }\n}\n```\n\n### Github Codespaces 云开发\n\n把下面内容放置到 `.devcontainer/devcontainer.json`。\n\n可以修改 image 的内容来选择对应的版本开发，可以选择的版本参考 [ddk image versions](https://github.com/Ylarod/ddk/pkgs/container/ddk/versions)\n\n```yaml\n{\n  \"name\": \"ddk-module-dev\",\n  \"image\": \"ghcr.io/ylarod/ddk:android16-6.12\",\n  \"remoteUser\": \"root\",\n  \"postCreateCommand\": \"echo Devcontainer ready\",\n  \"customizations\": {\n    \"vscode\": {\n      \"extensions\": [\n        \"github.copilot\",\n        \"github.copilot-chat\",\n        \"github.vscode-github-actions\",\n        \"llvm-vs-code-extensions.vscode-clangd\",\n        \"ms-azuretools.vscode-containers\",\n        \"ms-azuretools.vscode-docker\",\n        \"ms-ceintl.vscode-language-pack-zh-hans\"\n      ]\n    }\n  }\n}\n```\n\n---\n\n## Docker 模式（适合 CI / 自动化构建）\n\n\u003e [!NOTE]\n\u003e Docker 模式通过封装好的镜像直接构建，适合 CI 流水线和自动化场景，不推荐作为日常交互式开发环境。\n\n### 本地使用 Docker 镜像\n\n推荐先安装便捷脚本 `ddk`（封装常用 docker 命令，强制 `--platform linux/amd64` 并将当前目录挂载为容器内的 `/build`）。\n\n安装（macOS/Linux）：\n\n```bash\n# 将 ddk 安装到 /usr/local/bin 并赋予可执行权限\nsudo curl -fsSL https://raw.githubusercontent.com/Ylarod/ddk/main/scripts/ddk -o /usr/local/bin/ddk\nsudo chmod +x /usr/local/bin/ddk\n```\n\n用法示例：\n\n```bash\n# 拉取镜像\nddk pull android12-5.10\n\n# 进入项目目录\ncd /path/to/source\n\n# 构建\nddk build --target android12-5.10\n\n# 传递 make 参数\nddk build --target android12-5.10 -- CFLAGS=-O2\n\n# 清理\nddk clean --target android12-5.10\n\n# 交互式 shell\nddk shell --target android12-5.10\n```\n\n如果你不想在每次命令中传入 target，可以设置环境变量 `DDK_TARGET`：\n\n```bash\nexport DDK_TARGET=android12-5.10\nddk build   # 会使用 DDK_TARGET\n```\n\n### Github CI\n\n参考下面的文件构建：\n\n- 通用 Matrix 构建模板：[ddk-lkm.yml](https://github.com/Ylarod/ddk/blob/main/.github/workflows/ddk-lkm.yml)\n- Module Template 构建：[module.yml](https://github.com/Ylarod/ddk/blob/main/.github/workflows/module.yml)\n\n---\n\n## 致谢\n\n- 感谢 [cnb.cool](https://cnb.cool) 提供的 [计算资源](https://mp.weixin.qq.com/s/4VqdKrvsoidAokKArMZfQA)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYlarod%2Fddk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FYlarod%2Fddk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FYlarod%2Fddk/lists"}