IPhone, iPad, iPod, Apple TV, (iOS) σε Linux

Από Hellug Wiki
(Ανακατεύθυνση από IPhone, iPad (iOS) σε Linux)

Για όλες τις διανομές

Το project libimobiledevice υποστηρίζει αρκετές δυνατότητες σύνδεσης με συσκευές iOS. Ίσως σας αρκεί το ifuse. Για προχωρημένες λειτουργίες υπάρχει και το ideviceinstaller από το ίδιο project.

Ένα άλλο project είναι το gtkpod project αλλά μπορεί να μην είναι συμβατό με την iOS συσκευή σας.

Επιπλέον οδηγίες

Επιπλέον οδηγίες για προχωρημένους βρίσκετε στην τεκμηρίωση του debian (στα Αγγλικά)

Ubuntu-13.04

Σε ubuntu-13.04 (ίσως και σε άλλες εκδόσεις) συνδέουμε το καλώδιο usb και θα δούμε πως ανοίγουν δύο νέες εικονικές συσκευές αποθήκευσης. Στην μία μπορούμε να δούμε τα αρχεία της φωτογραφικής μηχανής και άλλα αρχεία που αγοράσαμε (όπως ταινίες - έχουν DRM) και μουσική σε m4a (mpeg4audio - χωρίς DRM). Δεν υπάρχει δυνατότητα προσθήκης αρχείων αλλά μόνο αντιγραφής από την συσκευή προς τον υπολογιστή.

Στην άλλη εικονική συσκευή που γράφει Έγγραφα σε ΧΧΧΧ βλέπουμε τα εικονίδια των εφαρμογών όπου μπορούμε να αντιγράψουμε αρχεία από τον υπολογιστή προς τις εφαρμογές. Αν μπείτε σε πάνω από 5 εφαρμογές θα πρέπει να επανασυνδέσετε την iOS συσκευή.

VirtualBox

Αυτή η ενότητα έχει παλιές οδηγίες και μόνο για .deb διανομές

Μία άλλη λύση σε Linux για να μπορέσουμε να εκμεταλλευτούμε όλες τις δυνατότητες σύνδεσης με το iOS είναι το itunes που είναι διαθέσιμο για windows και mac.

  • Εγκαθιστούμε το VirtualBox 2 full edition προσθέτοντας στo αρχείο /etc/apt/sources.list το παρακάτω (για debian lenny ή sid):
deb http://download.virtualbox.org/virtualbox/debian lenny non-free
  • Επειτα ενημερώνουμε την apt για τα νέα repositories και εγκαθιστούμε το virtualbox:
apt-get update
apt-get install virtualbox 

Σ'αυτο το σημείο αν η εγκατάσταση του πακέτου αποτύχει λόγω αδυναμίας μεταγλώττισης του module, δεν πειράζει.

  • Προετοιμάζουμε το σύστημά μας για να μπορεί το virtualbox να μεταφέρει τα usb devices στα guest λειτουργικά. Στο αρχείο /etc/init.d/mountkernfs.sh Ψάνχουμε τις γραμμές:
if [ -d /proc/bus/usb ]
        then
                domount usbfs usbdevfs /proc/bus/usb usbfs -onodev,noexec,nosuid
        fi
  • Και τις αλλάζουμε ώστε να δείχνουν:
if [ -d /proc/bus/usb ]
        then
                domount usbfs usbdevfs /proc/bus/usb usbfs -onodev,noexec,nosuid,devgid=46,devmode=664
        fi

(Οπου gid 46 το group του plugdev.)

  • Ανοίγουμε με το αγαπημένο μας editor (το vim φυσικά) το αρχείο permissions.rules μέσα στο /etc/udev/rules.d:
vim /etc/udev/rules.d/*permissions.rules

Στην παρακάτω γραμμή:

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
                MODE="0664"
  • Προσθέτουμε το group usbusers:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
                GROUP="usbusers",MODE="0664"
  • Δημιουργούμε το group usbusers και προσθέτουμε τον χρήστη που θα τρέχει το virtualbox (πχ user) μέσα εκει:
groupadd usbusers
usermod -G usbusers user
  • Δυστυχώς θα χρειαστούμε να μεταγλωτίσουμε εναν kernel απ'την αρχή. Εγω προτίμησα να δοκιμάσω τον 2.6.27. Κατεβάζουμε απο εδω τα sources και τα κάνουμε extract:
cd /usr/src
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.tar.bz2
bunzip2 < linux-2.6.27.tar.bz2 | tar xvf -
ln -sf /usr/src/linux-2.6.27 /usr/src/linux
cd linux-2.6.27
  • Ανοίγουμε με εναν editor το αρχείο ./drivers/usb/core/devio.c και τροποποιούμε την παρακάτω γραμμή:
#define MAX_USBFS_BUFFER_SIZE 16384,/pre>

σε:
<pre>
#define MAX_USBFS_BUFFER_SIZE 131072
  • Αν είμαστε εξοικοιομένοι κάνουμε τη μεταγλώτηση του πυρήνα μας με τον τρόπο της αρεσκείας μας. Διαφορετικά κάτι απλό είναι το εξής:
cp /boot/config-`uname -r` .config
make 
make modules_install
  • Αν όλα πήγαν καλά μεταφέρουμε τον πυρήνα μας και δημιουργούμε τα links για τον boot manager:
cp arch/`uname -m | sed -e s/686/386/`/boot/bzImage  /boot/vmlinuz-2.6.27
cp .config /boot/config-2.6.27
cp System.map /boot/System.map-2.6.67
mv /vmlinuz /vmlinuz.old
mv /initrd.img /initrd.img.old
ln -sf /boot/vmlinuz-2.6.27 /vmlinuz
  • Φτιάχνουμε το initrd:
update-initramfs -c -k 2.6.27 /boot/initrd-2.6.27
ln -sf /boot/initrd-2.6.27 /initrd.img
  • Σε περίπτωση που ο boot manager που χρησιμοποιουμε είναι ο lilo, τρέχουμε την εντολή:
lilo -v
  • Διαφορέτικα, προχωράμε κατευθείαν σε reboot
  • Αν όλα πήγαν καλά [1] και ξεκινήσαμε με τον νεό μας kernel, κάνουμε login στο γραφικό και τρέχουμε την εντολή:
dpkg-reconfigure virtualbox

Η οποία θα μας φτιάξει τα modules του virtualbox για τον νέο μας κέρνελ.

  • Τέλος, ανοίγουμε το virtualbox .
  • Στις ρυθμίσεις του guest λειτουργικού, στο usb προσθέτουμε ενα empty φίλτρου. (Το φίλτρο επιλέγει ποιές usb συσκευές θέλουμε να είναι ορατές απ'το guest os, εμείς του λέμε όλες.
  • Ξεκινάμε τo guest os, συνδέουμε το iphone και ανοίγουμε το itunes[2] και το απολαμβάνουμε.

[1] Αν το γραφικό δεν ξεκινήσει σωστά, τότε έχουμε κάρτα γραφικών nvidia. Κατεβάζουμε τους drivers και τους τρέχουμε:

wget http://us.download.nvidia.com/XFree86/Linux-x86/177.80/NVIDIA-Linux-x86-177.80-pkg1.run

(Για 32bit λειτουργικο)

wget http://us.download.nvidia.com/XFree86/Linux-x86_64/177.80/NVIDIA-Linux-x86_64-177.80-pkg2.run

(Για 64 bit λειτουργικο)

chmod +x NVIDIA-Linux-x86-177.80-pkg1.run
sh NVIDIA-Linux-x86*

[2] Μή δοκιμάσετε να τρέξετε restore μέσα απ'το itunes ή να χρησιμοποιήσετε οποιοδήποτε πρόγραμμα για jailbrake κτλ. Δεν θα δουλέψει και πιθανόν να κλειδώσετε το τηλέφωνό σας. To δοκίμασα εγώ για σας :-D

αυτα.