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

Από Hellug Wiki
Αναθεώρηση ως προς 17:45, 20 Ιουνίου 2009 από τον Rizitis (συζήτηση | συνεισφορές) (Νέα σελίδα: === Iphone & Linux === Η μόνη λύση σε λίνουξ για να μπορέσουμε να εκμεταλλευτούμε τις δυνατότητες του iphone ...)
(διαφορά) ← Παλαιότερη αναθεώρηση | Τελευταία αναθεώρηση (διαφορά) | Νεότερη αναθεώρηση → (διαφορά)

Iphone & Linux

Η μόνη λύση σε λίνουξ για να μπορέσουμε να εκμεταλλευτούμε τις δυνατότητες του iphone είναι το 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

αυτα.