八亿电脑网
游戏盒子
当前位置: 首页 > 手机之家 > 苹果学院 >

ios8苹果越狱后cydia无法安装插件解决方法

时间:2015-05-04 16:15来源:网络 作者:win8e 点击:
游戏盒子

  ios8苹果越狱后cydia无法安装插件解决方法:

  设备处理的关键点:

  有afc2服务,能看到root根目录

  问题处理的难点: 首先,设备没有安装OPENSSH服务导致无法修改直接放入文件的权限导致直接将缺失的文件放入后无法运行,使用Cydia的Autoinstall的方式安装同样和在Cydia内直接安装deb因为apt的环境问题导致无法安装的情况,想通过iFile来修改文件的权限却也没有安装iFile,那只能查找新的办法。

八亿电脑网

  问题的原因及部分系统原理1,文件权限:

  在AFC2服务启动时,第三方资源管理器是可以看到设备的root根目录,但是如果是将电脑里地文件“添加”进设备的,此文件默认的权限为:wheel:root-0644,也就是root用户的wheel组,运行的权限是当前用户可读写,组权限只读,但是都没有“执行(运行)”的权限,所以直接丢进去的可执行文件(包括权限需求高的文件)是无法执行和打开的

  但是,afc2add 有一个特性就是可以“继承”权限,也就是说,如果原来设备里面的文件时什么权限,那么你从电脑里面放入相同的文件去覆盖它时,原有的权限不变!不一定会是新加的默认 wheel:root-0644 权限

  2,ZIP,TAR 压缩文件的特性

  zip 文件是一种压缩文件的格式,我们在安装iFile的时候会附带安装处理 zip 的依赖(有些有深度洁癖的人会很不高兴认为是垃圾,其实不是开机调用常驻内存的依赖只是以文件的形式放置于系统内,在需要它是直接调用才会打开的);而 tar 压缩文件的支持在越狱时就已经预置了的,而且deb的安装包实际上用7-zip打开会发现其实就是tar文件+包安装信息,它们有个共同点就是在iOS系统内解压时不会改变压缩时的原始权限!

  3,iOS的启动调用

  iOS系统在开机时通常会调用 /Library/LaunchDaemons (不常用的 /Library/LaunchAgents);/System/Library/LaunchDaemons (这里一般是放的系统服务);如果安装了 Cydia Substrate ,那么启动时也会通过plist定义和调用调用加载 /Library/MobileSubstrate/DynamicLibrarIEs 里面的 dylib 程序

  以上可以看出影响设备启动的主要是这3个目录,前2(3)者属于系统级的开机调用,而Cydia Substrate 的只有在安装 Cydia Substrate 的环境后才能生效,且在开机时按住“音量+”键可以全部跳过基于它的插件调用,但是系统级的调用是无法跳过的!所以开机白苹果如果是基于CS环境的插件问题可以按住“音量+”跳过,但是如果是系统级开机调用的程序出现问题卡死的就麻烦了!

  4,Cydia 开机自动安装插件以及DEB安装的常识

  Cydia安装后,在 /Library/LaunchDaemons 内防止了一个开机调用脚本的plist文件:com.saurik.Cydia.Startup.plist,控制了系统在启动时会运行/bin下的 bash 执行程序和 /usr/libexec/cydia 下的 startup (这个startup实际上是一个赋予了可执行权限的 shell 脚本文件)

  内容如下:

  #!/bin/bash

  export PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin

  if [[ ! -e /var/lib/cydia/firmware.ver ]]; then

  cache=

  fi

  /usr/libexec/cydia/firmware.sh

  debs=(/var/root/Media/Cydia/AutoInstall/*.deb)

  if [[ ${#debs[@]} -ne 0 && -f ${debs[0]} ]]; then

  dpkg -i "${debs[@]}" 2>/tmp/dpkg.log 1>&2

  rm -f "${debs[@]}"

  cache=

  killall -9 Lowtide AppleTV

  fi

  if [[ ${cache+@} ]]; then

  sbdidlaunch

  su -c uicache mobile

  fi

  iOS8越狱

  debs=(/var/root/Media/Cydia/AutoInstall/*.deb)

  if [[ ${#debs[@]} -ne 0 && -f ${debs[0]} ]]; then

  dpkg -i "${debs[@]}" 2>/tmp/dpkg.log 1>&2

  rm -f "${debs[@]}"

  这段就是指定了在开机时检查 /var/root/Media/Cydia/AutoInstall 目录下是否有的包文件,如果有救执行 dpkg -i 的安装命令,而deb的安装则依赖于dpkg的环境

  5,还原抹除

  iOS的还原并抹除 主要是删除 /var 目录下的不是在iOS原生系统白名单以外的全部文件(包括文件夹),

  为什么说越狱后的机器不要还原抹除的主要原因就是越狱后在第一次运行Cydia 时,Cydia为了扩大系统区的可用空间,会将一部分的系统文件搬移到

  /var/stash (其实在Cydia新版,这个目录也是一个硬链接,stash 真正的目录其实是在 /private/var/db/stash )那么在抹除时会将 /private/var/db/stash 文件夹删除导致系统文件缺失而白苹果

发表评论