Carregar bateria de iPhone e iPad em Linux hardened (PaX)

De Wiki Hackstore

Em ambiente hardened, não é permitido ao usuário acesso ao /sys/subsystem, ao /sys/bus e ao /sys/class, logo alguns produtos Apple não conseguem carregar a bateria utilizando este tipo de kernel restritivo. Como workaround iremos criar uma regra no UDEV/EUDEV para que seja possível executar binários específicos como usuário root.

Requisitos

Instale os seguintes ebuilds:

app-pda/ipadcharge

Adicione o seguinte ebuild ao seu overlay:

https://github.com/coffnix/coffnix-ebuilds/tree/master/local/app-pda/ipadcharge


app-pda/ipheth-pair

Adicione o seguinte ebuild ao seu overlay:

https://github.com/coffnix/coffnix-ebuilds/tree/master/local/app-pda/ipheth-pair


app-pda/usbmuxd

emerge app-pda/usbmuxd app-pda/libusbmuxd


app-pda/libimobiledevice

emerge app-pda/libimobiledevice


app-pda/ifuse

emerge app-pda/ifuse


app-pda/ideviceinstaller

emerge app-pda/ideviceinstaller



Configuração do UDEV/EUDEV

Crie um script para execução dos comandos necessários

vi /usr/bin/fix-ipad-charge.sh
#!/bin/bash

/usr/sbin/usbmuxd -u
/usr/bin/ipeth-pair
/usr/bin/ipad_charge


Dê permissão de execução:

chmod +x /usr/bin/fix-ipad-charge.sh


Crie uma regra no diretório de rules do udev/eudev

vi /etc/udev/rules.d/95-ipad_charge.rules
ATTR{idVendor}!="05ac", GOTO="ipad_charge_end"
#
# Execute pairing program when appropriate
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/bin/fix-ipad-charge.sh"
#
LABEL="ipad_charge_end"


Reinicie o udev e voilá! Conecte seu iPhone ao Linux e veja que o carregamento ocorre normalmente. :D