apoage/nokia-e7-linux

GitHub: apoage/nokia-e7-linux

将Linux移植到2011年Nokia E7-00智能手机的开源项目,包含自定义QEMU机器模拟器、690行设备树、完整的硬件逆向文档和知识图谱。

Stars: 0 | Forks: 0

# Nokia E7-00 Linux 项目 将 Linux 移植到 Nokia E7-00 (RM-626) —— 一款 2011 年的 Symbian 智能手机,配备全尺寸滑盖 QWERTY 键盘、4 英寸 AMOLED 显示屏,以及比大多数人意识到的更多的硅片。两台不可替代的设备。零文档。最大的固执。 这款被 Nokia 过早扼杀的手机值得拥有一个合适的操作系统。我们正在给它一个。 **状态:开发中** —— QEMU 在 1.4 秒内启动到 shell, 真机正在进行激烈的反抗(TrustZone、平台安全、加密 bootloader —— 这是 Nokia 一贯的“好客”之道)。 ## 这里的内容 ### QEMU 机型 (`emulation/`) 定制的 QEMU 机型 `nokia-e7`,模拟 OMAP3630 SoC 和 E7 外设。 目前可在约 1.4 秒内将 Linux 6.12 引导至交互式 shell。 **模拟的硬件:** - OMAP3630 (Cortex-A8 1GHz),带有 INTC、GPIO(6 个组)、sDMA(32 个通道) - TWL5031 PMIC(I2C、4 从设备寄存器模型、RTC、USB PHY、看门狗、音频编解码器) - LM8323 键盘控制器(完整的 按键→FIFO→IRQ→input 流水线) - I2C 传感器:LIS302DL 加速度计、AK8974 磁力计、APDS990x 距离/环境光传感器 - Atmel mXT 触摸屏、BQ2415x 充电器、LP5521 LED 控制器 - GPMC 与 OneNAND 模型(Samsung 8Gbit MLC,完整命令状态机) - HSMMC2 eMMC 模型,CM/PRM 时钟/电源域跟踪 - DSS 显示模型,I2C1/2/3 控制器 ### 内核 (`kernel/`) - `configs/nokia_e7_defconfig` — 最小化的 98 行 defconfig - `dts/omap3630-nokia-e7.dts` — 约 690 行设备树,所有 I2C 设备探测成功 ### 文档 (`docs/`) - `hardware-lore.md` — 主芯片清单(49 个 IC) - `qemu-machine-design.md` — SoC 模拟规范 - `emulation-strategy.md` — 优先模拟的方法 - `undocumented-*.md` — 对未公开 ASIC 的深度探索 - `knowledge-graph/` — 结构化的 JSON 硬件知识库 - 49 个组件,22 条总线,226 个信号,17 个电源轨,32 个闪存分区 - Mermaid 图表:系统框图、电源树、I2C 拓扑、启动序列 ### 会议记录 (`lore/`) 按时间顺序记录了从首次启动尝试到成功模拟的开发历程,包括死胡同、调试技巧和各种发现。 ## 手机概览 Nokia E7-00 是一款 2011 年发布的 Symbian^3 智能手机,其核心配置如下: | 组件 | 详情 | |-----------|---------| | SoC | OMAP3630 (ARM Cortex-A8 @ 1GHz),RAPUYAMA D1800 封装 | | RAM | 256MB LPDDR (Samsung K5W8G1GACK) | | PMIC | TWL5031 (TI) | | GPU | PowerVR SGX530 | | ISP | BCM2727 (Broadcom VideoCore) | | 显示屏 | 640x360 nHD AMOLED | | 键盘 | 全尺寸滑盖 QWERTY (LM8323 控制器) | | 闪存 | 1GB OneNAND + 16GB eMMC | | 传感器 | 加速度计、磁力计、距离、环境光、触摸 | | 连接性 | WiFi (SPI)、BT、GPS、NFC (PN544)、3G modem | 现有两台设备 —— 设备 A(开发目标)和设备 B(原厂参考/救援机)。 ## 快速开始 ``` # 构建 kernel cd kernel/linux # (not included — use a shallow clone of Linux 6.12) make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- nokia_e7_defconfig make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j$(nproc) zImage dtbs # 构建 QEMU (应用 omap3630.c 到 qemu source) cd qemu && ninja -C build # 启动 (initramfs) qemu-system-arm -M nokia-e7 -m 256M -kernel zImage \ -dtb omap3630-nokia-e7.dtb -initrd initramfs.cpio.gz \ -append "earlycon clk_ignore_unused rdinit=/init" -nographic # 启动 (ext4 root) qemu-system-arm -M nokia-e7 -m 256M -kernel zImage \ -dtb omap3630-nokia-e7.dtb \ -drive file=rootfs.ext4,if=none,format=raw,id=hd0,cache.no-flush=on \ -device virtio-blk-device,drive=hd0 \ -append "earlycon clk_ignore_unused root=/dev/vda rw init=/init" -nographic ``` ## 项目目标 1. 在 E7 的硬件上启动一个敏捷的 Linux 终端 2. 完整的网络功能(WiFi、蜂窝数据) 3. 充分利用每一个 ASIC(camera ISP、GPU、音频、传感器) 4. 模拟优先开发 —— 未经 QEMU 验证,绝不触碰真机 ## 近期进展 为了从运行中的手机读取 584 字节的 pad mux 寄存器,我们经历了一段相当艰难的旅程: - 从零开始构建了一个可用的 Symbian 工具链(GCC + Docker + CRT 启动代码探索) - 逆向工程了 Nokia 的 MemSpy 内核驱动(191 个导入、168 个调试字符串 —— 无物理内存访问权限) - 映射了 250 个 MemSpy 操作码(在此过程中导致手机崩溃了 6 次) - 枚举了真机上运行的 200 个线程和 25 个内核驱动 - 安装了 FShell 并发现 `memoryAccess` LDD 已加载,但需要 TCB 能力 - 得知 TCB 在 Symbian 上是仅限 ROM 的 —— 无论怎么破解证书都无法获得 - 搜索了来自三个 Symbian 社区的 160,000 条 Telegram 消息 - 分析了一个 30MB 的 ROM 转储,试图找到并 NOP 掉 PlatSec 检查 - 现在正在逆向工程 Nokia 的 USB 服务协议,因为这似乎是读取寄存器所必须的 那 584 字节仍未读取。手机依然顽强抵抗。我们依然坚持不懈。 ## 参与贡献 这是一个基于不可替代硬件的个人研究项目。如果您拥有 Nokia E7 硬件知识、OMAP3630 经验、Symbian 内核 internals, 或者您知道 CapsSwitch 到底是做什么的 —— 请提交 issue 或直接联系。 特别希望能联系到任何在 FShell 上成功运行过 `readmem`, 或了解用于原始内存访问的 Phonet/FBUS 协议的人。 ## 许可证 文档和原创代码:MIT。 内核补丁遵循 Linux 内核许可 (GPL-2.0)。 QEMU 机型代码遵循 QEMU 许可 (GPL-2.0)。
标签:Arm架构, HTTP工具, Linux移植, OMAP3630, QEMU仿真, Symbian, TrustZone绕过, 云资产清单, 内核开发, 单板机, 固件分析, 安全渗透, 客户端加密, 嵌入式系统, 开源硬件, 手机破解, 数字取证, 旧机复活, 硬件安全, 硬件文档, 系统模拟, 网络安全审计, 自动化脚本, 设备树, 诺基亚E7, 身份验证强制, 逆向工程