iPhone2G(一代)安装Android双系统安装教程
作者: 来源: 2021-05-31 07:59:59
早上本站报道了:终于实现 iPhone首次成功运行Android系统的新闻,经过一番努力后,及时为大家放松了教程!话不多说,赶紧看吧! android及Open iBoot安装镜像下载地址 安装方法: 此系统取名为iDroid 由说明讲述了怎样在iPhone 2G上由源代码编译安装Android系统,目前尚有非常多的BUG,请反馈到#iphonelinux频道,IRC服务器irc.osx86.hu. 压缩包内包括的安装双系统的必须文件: 1. Linux kernel (Linux内核) 2. Wi-Fi and touchscreen firmware (无线和触摸固件) 3. Boot initrd (启动引导) 4. Android ramdisk.img 5. Android system.img 6. Android userdata.img 7. Android cache.img 8. openiboot (实现双系统的重要部分) 准备工作(下面引用了另一个版本,着急的请先查看该版本。) 即使有了android.img.gz, ramdisk.img, system.img, userdata.img 和cache.img预置文件,你也需要遵循"Firmware"部分的说明并将所有固件文件都添加到android.img.gz文件中的 /lib/firmware 文件夹下, (压缩格式为ext2镜像) /etc/firmware system.img (未压缩的ext2镜像) 完成后,可直接进行最后的安装 Linux kernel (Linux内核) 1. 校检android-2.6.32分枝 e27f17b5318851395a66cbaf1524ea89ff8f0cb9 git://android.git.kernel.org/kernel/common 2. 修补内核android/kernel 3. 修复系统的Makefile功能 (需要在Google的repo(源)上下载Android toolchain). 4. 使用一些基于android/kernel/.config的配置文件 5. Build Firmware 多点触摸的固件需要从 ioreg tree中解压分享,方法是在Cydia中安装iokittools并使用 ioreg -l -w 0 输入结果到文件。 读取此文件并查找出用于固件的AppleMultitouchSPI和 A-Speed Firmware(不知道是何物) These contain a simple hexadecimal encoding for the bytes of the firmware files. 转换"Firmware" 为zephyr_main.bin、"A-Speed Firmware" 为 zephyr_aspeed.bin.并保存。 wi-fi固件可以在Marvell的网站找到 ,地址 http://www.marvell.com/support.html 在"Choose a platform"里选择 "Linux 2.6 - Fedora" 后点击Search(搜索)按钮 SD-8686-* 文件中包括此文件。 重命名helper_sd.bin为 sd8686_helper.bin后保存此文件和sd8686.bin. 最终,生成的文件有zephyr_main.bin, zephyr_aspeed.bin, sd8686_helper.bin, sd8686.bin. 可以使用iPhone kernel来生成Marvell的固件,此处不确定。貌似写文章的人也在求此固件。 Boot initrd Android的引导程序需要在一个iPhone Linux下的Debian环境中来制作,(貌似目前不可行) ,需要使用create-initrd-android.sh脚本,需要拷贝所有 *.bins 到此ramdisk的 /lib/firmware文件夹中。最后得到android.img.gz Android images (安装镜像) 首先使用Google源安装的软件工具来检验1.6 (Donut) ,复制vendor/apple 到Google vendor/apple目录. 重命名data/sounds/AudioPackage2.mk为 data/sounds/Android.mk (如果想要弄出点声音的话). 同样,复制所有固件文件*.bins到vendor/apple/firmware然后运行android/android.patch接下来,创建一个"generic" image:. build/envsetup.sh choosecombo [Select device, debug, generic, engineering] export TARGET_USERIMAGES_USE_EXT2=true make -j4 PRODUCT-generic-eng 接下来,等Android自制,我们会得到ramdisk.img 和system.img ,他们将在out/debug/target/product/generic/文件夹中,去接热乎儿的吧。其它的.img文件可以忽略,在这里我们用不到。 Android ramdisk.img 创建一个大小为1 MB 的空文件,制成ext2文件系统,挂载为loopback设备,重命名ramdisk.img为ramdisk.img.gz,使用 gunzip 来解压ramdisk.img.gz,以root用户身份在当前目录(./)运行 cpio -i -F ramdisk.img 并将ramdisk 文件解压到新的ext2文件系统 使用android/init.rc.patch修补init.rc 建立一个/cache文件夹 Unmount之后得到ramdisk.img Android system.img 可直接使用由Android系统中生成的system.img Android userdata.img 创建一个新的userdata.img (选择恰当格式). However, without the Dalvik caches, the boot will hang the first couple of times until those can be generated. This is some strange timeout issue. After the initial boot, you have to do INSERT INTO secure (name, value) VALUES ('device_provisioned', 1); Using sqlite3 in the database /data/data/com.android.providers.settings/databases/settings.db If the device is not "provisioned", it will automatically reject all incoming calls. Very stupid. Can someone please show me how this can be made less aggravating? Android cache.img 创建一个空白50 MB ext2格式的 openiboot 查看iphonelinux repo(源)中openiboot文件夹下的说明文件 Installation (安装) 0. Jailbreak your iPhone. 先越狱 1. Under the jailbroken environment(在越狱环境下),将 ramdisk.img, system.img, ramdisk.img, userdata.img, cache.img, android.img.gz, 和zImage上传到/private/var. 2. Follow the instructions for installing openiboot. - Essentially: 1. sudo ./loadibec openiboot.img3 2. Use Hold button to select Console 3. Push Home button 4. sudo ./oibc 5. 输入install - loadibec 和 oibc 在x86 Linux下构建 - 需要 librickrb, pthreads, readline Running (运行) 在openiboot bootloader中,按住HOme两秒钟以上进入Android, it should be enough to select Console with Hold and hold the Home button for more than two seconds to trigger the boot of Android. 点击进入论坛教程