|
| 1 | +# OpenixCard |
| 2 | + |
| 3 | +[English](README.md) | 简体中文 |
| 4 | + |
| 5 | +Allwinner PhoenixCard 的开源版本,用于在 Linux 和 MacOS 上解包、转储、烧录 Allwinner Linux IMG 文件 |
| 6 | + |
| 7 | +[](https://forthebadge.com) |
| 8 | +[](https://forthebadge.com) |
| 9 | +[](https://forthebadge.com) |
| 10 | +[](https://forthebadge.com) |
| 11 | + |
| 12 | +[](https://github.com/YuzukiTsuru/OpenixCard/actions/workflows/cmake.yml) |
| 13 | + |
| 14 | +## 关于 Android IMG 文件支持 |
| 15 | +> Android 固件将不被支持,未来也不会适配支持。由于 Android GKI、GMS、GRF 版本众多,无法覆盖所有固件版本,且 Android 固件分区非常复杂,没有通用的方法生成可用的固件,也没有固定的地址使其运行。即使能够适配,也会出现功能不可用的情况,如 fastboot、GMS 服务等。最后,Android 固件修改常用于破解和修改固件,本项目不支持此类行为。 |
| 16 | +
|
| 17 | +## 程序位置 |
| 18 | + |
| 19 | +编译后的可执行文件位于:`build/dist/OpenixCard` |
| 20 | + |
| 21 | +## 基本使用方法 |
| 22 | + |
| 23 | +### 1. 查看帮助信息 |
| 24 | +```bash |
| 25 | +./build/dist/OpenixCard --help |
| 26 | +# 或 |
| 27 | +./build/dist/OpenixCard -h |
| 28 | +``` |
| 29 | + |
| 30 | +### 2. 查看版本信息 |
| 31 | +```bash |
| 32 | +./build/dist/OpenixCard --version |
| 33 | +# 或 |
| 34 | +./build/dist/OpenixCard -v |
| 35 | +``` |
| 36 | + |
| 37 | +## 主要功能 |
| 38 | + |
| 39 | +### 功能 1: 解包 Allwinner 镜像文件 (-u) |
| 40 | + |
| 41 | +**用途**:将 Allwinner 格式的固件镜像文件解包,提取其中的分区和文件。 |
| 42 | + |
| 43 | +**使用方法**: |
| 44 | +```bash |
| 45 | +./build/dist/OpenixCard -u <镜像文件路径> |
| 46 | +``` |
| 47 | + |
| 48 | +**示例**: |
| 49 | +```bash |
| 50 | +# 解包名为 firmware.img 的镜像文件 |
| 51 | +./build/dist/OpenixCard -u firmware.img |
| 52 | + |
| 53 | +# 解包后会生成一个同名的目录,包含所有解包的文件 |
| 54 | +``` |
| 55 | + |
| 56 | +**输出**: |
| 57 | +- 创建一个目录(通常与镜像文件名相同) |
| 58 | +- 目录中包含所有分区和文件内容 |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +### 功能 2: 解包并生成分区表配置 (-uc) |
| 63 | + |
| 64 | +**用途**:解包镜像文件,同时生成分区表配置文件(.cfg),用于后续重新打包。 |
| 65 | + |
| 66 | +**使用方法**: |
| 67 | +```bash |
| 68 | +./build/dist/OpenixCard -uc <镜像文件路径> |
| 69 | +``` |
| 70 | + |
| 71 | +**示例**: |
| 72 | +```bash |
| 73 | +./build/dist/OpenixCard -uc firmware.img |
| 74 | +``` |
| 75 | + |
| 76 | +**输出**: |
| 77 | +- 解包后的文件目录 |
| 78 | +- 分区表配置文件(.cfg),记录了分区的布局信息 |
| 79 | + |
| 80 | +**使用场景**: |
| 81 | +- 需要修改固件后重新打包 |
| 82 | +- 需要了解镜像的分区结构 |
| 83 | +- 备份分区表配置 |
| 84 | + |
| 85 | +--- |
| 86 | + |
| 87 | +### 功能 3: 转储镜像 (-d) |
| 88 | + |
| 89 | +**用途**:将 Allwinner 专有格式的镜像转换为标准的镜像格式。 |
| 90 | + |
| 91 | +**使用方法**: |
| 92 | +```bash |
| 93 | +./build/dist/OpenixCard -d <镜像文件路径> |
| 94 | +``` |
| 95 | + |
| 96 | +**示例**: |
| 97 | +```bash |
| 98 | +./build/dist/OpenixCard -d firmware.img |
| 99 | +``` |
| 100 | + |
| 101 | +**输出**: |
| 102 | +- 转换后的标准格式镜像文件 |
| 103 | +- 通常可以直接用于刷机或挂载 |
| 104 | + |
| 105 | +**使用场景**: |
| 106 | +- 将 Allwinner 格式转换为通用格式 |
| 107 | +- 提取原始镜像数据 |
| 108 | +- 用于其他工具处理 |
| 109 | + |
| 110 | +--- |
| 111 | + |
| 112 | +### 功能 4: 获取镜像大小 (-s) |
| 113 | + |
| 114 | +**用途**:获取 Allwinner 镜像文件的准确大小信息。 |
| 115 | + |
| 116 | +**使用方法**: |
| 117 | +```bash |
| 118 | +./build/dist/OpenixCard -s <镜像文件路径> |
| 119 | +``` |
| 120 | + |
| 121 | +**示例**: |
| 122 | +```bash |
| 123 | +./build/dist/OpenixCard -s firmware.img |
| 124 | +``` |
| 125 | + |
| 126 | +**输出**: |
| 127 | +- 显示镜像的准确大小(字节数或带单位的大小) |
| 128 | + |
| 129 | +**使用场景**: |
| 130 | +- 验证镜像文件完整性 |
| 131 | +- 了解镜像大小以便准备存储设备 |
| 132 | +- 调试镜像文件问题 |
| 133 | + |
| 134 | +--- |
| 135 | + |
| 136 | +### 功能 5: 打包镜像 (-p) |
| 137 | + |
| 138 | +**用途**:从解包后的目录重新打包成 Allwinner 镜像文件。 |
| 139 | + |
| 140 | +**使用方法**: |
| 141 | +```bash |
| 142 | +./build/dist/OpenixCard -p <目录路径> |
| 143 | +``` |
| 144 | + |
| 145 | +**示例**: |
| 146 | +```bash |
| 147 | +# 假设已经解包了 firmware.img,生成了 firmware 目录 |
| 148 | +./build/dist/OpenixCard -p firmware |
| 149 | +``` |
| 150 | + |
| 151 | +**前置条件**: |
| 152 | +- 目录中必须包含 `.cfg` 配置文件 |
| 153 | +- 目录结构必须完整(通常由 `-uc` 命令生成) |
| 154 | + |
| 155 | +**输出**: |
| 156 | +- 重新打包的镜像文件 |
| 157 | + |
| 158 | +**使用场景**: |
| 159 | +- 修改固件后重新打包 |
| 160 | +- 创建自定义固件镜像 |
| 161 | +- 测试镜像打包功能 |
| 162 | + |
| 163 | +--- |
| 164 | + |
| 165 | +## 完整工作流程示例 |
| 166 | + |
| 167 | +### 场景 1: 分析和修改固件 |
| 168 | + |
| 169 | +```bash |
| 170 | +# 1. 解包镜像并生成配置文件 |
| 171 | +./build/dist/OpenixCard -uc firmware.img |
| 172 | + |
| 173 | +# 2. 这会生成 firmware 目录和配置文件 |
| 174 | +# 3. 修改 firmware 目录中的文件 |
| 175 | +# 4. 重新打包 |
| 176 | +./build/dist/OpenixCard -p firmware |
| 177 | + |
| 178 | +# 5. 生成新的镜像文件 |
| 179 | +``` |
| 180 | + |
| 181 | +### 场景 2: 转换镜像格式 |
| 182 | + |
| 183 | +```bash |
| 184 | +# 1. 转储为标准格式 |
| 185 | +./build/dist/OpenixCard -d firmware.img |
| 186 | + |
| 187 | +# 2. 可以使用其他工具处理转换后的镜像 |
| 188 | +``` |
| 189 | + |
| 190 | +### 场景 3: 检查镜像信息 |
| 191 | + |
| 192 | +```bash |
| 193 | +# 1. 查看镜像大小 |
| 194 | +./build/dist/OpenixCard -s firmware.img |
| 195 | + |
| 196 | +# 2. 解包查看内容 |
| 197 | +./build/dist/OpenixCard -u firmware.img |
| 198 | +``` |
| 199 | + |
| 200 | +## 注意事项 |
| 201 | + |
| 202 | +1. **文件路径**:确保镜像文件路径正确,可以使用相对路径或绝对路径 |
| 203 | +2. **权限**:确保对目标目录有写入权限 |
| 204 | +3. **磁盘空间**:解包操作需要足够的磁盘空间 |
| 205 | +4. **配置文件**:打包时需要 `.cfg` 文件,建议使用 `-uc` 选项生成 |
| 206 | +5. **备份**:在修改固件前,建议先备份原始镜像文件 |
| 207 | + |
| 208 | +## 常见问题 |
| 209 | + |
| 210 | +**Q: 如何知道镜像文件是否有效?** |
| 211 | +A: 使用 `-s` 选项检查镜像大小,或尝试 `-u` 解包看是否成功。 |
| 212 | + |
| 213 | +**Q: 打包时提示缺少配置文件?** |
| 214 | +A: 使用 `-uc` 选项解包,会自动生成 `.cfg` 配置文件。 |
| 215 | + |
| 216 | +**Q: 可以处理哪些类型的镜像?** |
| 217 | +A: 主要用于 Allwinner 芯片的 Linux 固件镜像,不支持 Android 固件。 |
| 218 | + |
| 219 | +## 快速参考 |
| 220 | + |
| 221 | +```bash |
| 222 | +# 查看帮助 |
| 223 | +./build/dist/OpenixCard -h |
| 224 | + |
| 225 | +# 查看版本 |
| 226 | +./build/dist/OpenixCard -v |
| 227 | + |
| 228 | +# 解包镜像 |
| 229 | +./build/dist/OpenixCard -u <img> |
| 230 | + |
| 231 | +# 解包并生成配置 |
| 232 | +./build/dist/OpenixCard -uc <img> |
| 233 | + |
| 234 | +# 转储镜像 |
| 235 | +./build/dist/OpenixCard -d <img> |
| 236 | + |
| 237 | +# 获取大小 |
| 238 | +./build/dist/OpenixCard -s <img> |
| 239 | + |
| 240 | +# 打包镜像 |
| 241 | +./build/dist/OpenixCard -p <dir> |
| 242 | +``` |
| 243 | + |
| 244 | +## 下载 |
| 245 | +### ArchLinux |
| 246 | +OpenixCard 现在可在 [AUR](https://aur.archlinux.org/packages/openixcard) 上获取 [#3](https://github.com/YuzukiTsuru/OpenixCard/issues/3#issuecomment-1135317155) |
| 247 | +``` |
| 248 | +yay -S openixcard |
| 249 | +``` |
| 250 | + |
| 251 | +### 其他 Linux |
| 252 | +您可以在以下链接找到最新的发布文件: |
| 253 | +https://github.com/YuzukiTsuru/OpenixCard/releases |
| 254 | + |
| 255 | +## 从源码构建 |
| 256 | + |
| 257 | +```bash |
| 258 | +# 下载源代码 |
| 259 | +git clone --recursive --depth 1 https://github.com/YuzukiTsuru/OpenixCard |
| 260 | + |
| 261 | +# 安装依赖 |
| 262 | +sudo apt install cmake build-essential automake autoconf libconfuse-dev pkg-config |
| 263 | + |
| 264 | +# 创建构建目录 |
| 265 | +mkdir build |
| 266 | +cd build |
| 267 | + |
| 268 | +# 编译 |
| 269 | +cmake .. && make -j |
| 270 | +``` |
| 271 | + |
| 272 | +> 注意:Ubuntu 20.04 编译会报错,这是由 ar 的 bug 导致的,您可以编译安装新版本。 |
| 273 | +
|
| 274 | +```bash |
| 275 | +sudo apt-get install texinfo |
| 276 | + |
| 277 | +wget https://ftp.gnu.org/gnu/binutils/binutils-2.38.tar.xz && \ |
| 278 | + tar xvf binutils-2.38.tar.xz && \ |
| 279 | + cd binutils-2.38 && \ |
| 280 | + ./configure --prefix=/usr/local && \ |
| 281 | + make |
| 282 | + |
| 283 | +sudo make install |
| 284 | +``` |
| 285 | + |
| 286 | +## LICENSE |
| 287 | +``` |
| 288 | +GNU GENERAL PUBLIC LICENSE Version 2, June 1991 |
| 289 | + |
| 290 | +Copyright (c) 2022, YuzukiTsuru <GloomyGhost@GloomyGhost.com> |
| 291 | +
|
| 292 | +This program is free software; you can redistribute it and/or modify |
| 293 | +it under the terms of the GNU General Public License version 2 as |
| 294 | +published by the Free Software Foundation. |
| 295 | +
|
| 296 | +See README and LICENSE for more details. |
| 297 | + ``` |
0 commit comments