Πέμπτη 30 Ιουλίου 2009

Εγκατάσταση VMware Player σε 2.6.31 kernel

Το VMware Workstation και ο VMware Player είναι 2 προϊόντα φιλοξενίας εικονικών μηχανών που αποδεικνύονται χρήσιμα κατά καιρούς. Δυστυχώς χρησιμοποιούν τα δικά τους (κλειστού κώδικα) kernel modules με αποτέλεσμα την ταλαιπωρία του χρήστη όταν χρειάζεται να αναβαθμίσει τον πυρήνα του σε μια πιο σύγχρονη έκδοση.

Τουλάχιστον, τα τελευταία χρόνια, όσοι παράγουν κλειστού κώδικα modules τα φτιάχνουν ως ένα ανοιχτού κώδικα "wrapper" ο οποίος καλεί ένα binary blob. Τις περισσότερες φορές οι αλλαγές στον πυρήνα επηρρεάζουν μόνο τον κώδικα του wrapper οπότε βγαίνει άκρη αλλάζοντας μόνο αυτόν.

Αυτό συνέβει μόλις και στη δική μου περίπτωση, προσπαθώντας να εγκαταστήσω το VMware-Player 2.5.2 σε ένα σύστημα με πυρήνα 2.6.31-rc4. Ευτυχώς χάρη στην υπέροχη κοινότητα δε χρειάστηκε να κάνω σχεδόν τίποτα για τη λύση αφού κάποιος από τα φόρουμ του vmware είχε φτιάξει ήδη το κατάλληλο patch.

Έχοντας το patch η εγκατάσταση είναι απλή και μπορεί να γίνει κάπως έτσι:


  1. Κατεβάζουμε το vmware player (bundle) και το patch σε ένα directory, ανοίγουμε ένα τερματικό και κάνουμε 'cd' στο directory αυτό.


  2. Θέτουμε μια μεταβλητή για λόγους βολικότητας:
    export VMWARE_DIR=`pwd`



  3. Ξεπακετάρουμε το bundle
    sudo sh VMware-Player*bundle --extract=$VMWARE_DIR/tmp



  4. Πάμε στο directory με τον κώδικα των modules:
    cd tmp/vmware-player/lib/modules/source



  5. Ξεπακετάρουμε όλα τα αρχεία με τον κώδικα:
    for i in *.tar; do sudo tar -xf $i; done



  6. Εφαρμόζουμε το patch:
    sudo patch -Np1 -i $VMWARE_DIR/vmware-6.5.2-newkernmods.patch



  7. Τώρα μπορούμε να σβήσουμε τα tarballs:
    sudo rm -f *.tar



  8. Και να φτιάξουμε νέα με βάση τα αλλαγμένα directories:
    for i in *-only; do sudo tar -cf ${i/-only/}.tar $i; done



  9. Τώρα πια τα directories δε μας χρειάζονται:
    sudo rm -rf *-only



  10. Μπορούμε να πάρουμε τα νέα tarballs σε ένα μέρος
    cd .. && sudo tar -cf source{.tar,/} &&
    sudo mv source.tar $VMWARE_DIR



  11. Επιστρέφοντας στο $VMWARE_DIR μπορούμε τώρα να εγκαταστήσουμε τον player:
    cd $VMWARE_DIR &&
    sudo sh VMware-Player*bundle



  12. Και τώρα που εγκαταστάθηκε μπορούμε να αντικαταστήσουμε το δικό του κώδικα για τα modules με το δικό μας:
    sudo rm -rf /usr/lib/vmware/modules/source &&
    sudo tar -xf source.tar -C /usr/lib/vmware/modules



  13. Έτοιμα όλα! Μπορούμε πλέον να τρέξουμε το πρόγραμμα:
    vmplayer




Τώρα κανονικά θα μπορέσει να μεταγλωττίσει σωστά τα modules του και θα οδηγηθούμε σε ένα σύστημα που δουλεύει :)

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου