[Advcomparch] Προσπάθεια εγκατάστασης σε υπολογιστή των 32-bit με έκδοση Ubuntu Linux 11.04
Dimitrios Siakavaras
jimsiak at cslab.ece.ntua.gr
Mon Mar 21 23:42:12 EET 2016
Καλησπέρα Γιάννη,
> Καλησπέρα σας,
>
> Κατ' αρχήν να επισημάνω πως έχω σχετικά παλιό υπολογιστή (διπύρηνο αλλά
> των *32
> bit*).
>
> Επίσης για λόγους που έχουν να κάνουν με δουλειά έχω μείνει εσκεμμένα
> στην
> έκδοση *11.04 (natty)* του Ubuntu με έκδοση πυρήνα *2.6.38-16-generic*
> και
> δεν έχω μεταβεί σε κάποια νεότερη.
>
> Αυτά τα χαρακτηριστικά είναι λογικά η πηγή των δεινών μου...
>
Ναι, αυτή είναι η πηγή των δεινών σου αλλά ας τα πάρουμε με τη σειρά :)
> Κατ' αρχήν η εγκατάσταση του PIN ολοκληρώθηκε κανονικά (για να το
> επιβεβαιώσω χρειάστηκε να εκτελέσω το pin με το παράδειγμα
> παραλλαγμένο ως "*./pin.sh
> -injection child -t ./source/tools/ManualExamples/obj-ia32/inscount0.so
> -o
> ls.inscount0.output -- /bin/ls -aF*").
>
Μιά χαρά ως εδώ, το PIN εκτελείται χωρίς πρόβλημα και σε 32-bit
αρχιτεκτονικές.
Το μόνο που αλλάζει όπως φαίνεται και από το παράδειγμά που δίνεις είναι
το όνομα του
φακέλου στον οποίο μεταγλωττίζονται τα pintools. Σε 32-bit cpu είναι
obj-ia32 αντί
για obj-intel64 που είναι σε 64-bit cpu.
> Κατόπιν, με την εκτέλεση της εντολής "*sudo apt-get update*" έλαβα κάποια
> αποτελέσματα του στιλ:
>
>
>
>
>
>
>
> *Err http://gr.archive.ubuntu.com <http://gr.archive.ubuntu.com>
> natty/main
> Sources 404 Not FoundErr http://security.ubuntu.com
> <http://security.ubuntu.com> natty-security/restricted Sources 404 Not
> Found [IP: 2001:67c:1560:8001::11 80]W: Failed to fetch
> http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease
> <http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease>*
> κλπ.
>
>
> Προχωρώντας στην επόμενη εντολή "
> *sudo apt-get install make g++ libx11-dev libxext-dev libxaw7
> \x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev*"
>
> μετά από κάποιες σωστές εγκαταστάσεις έλαβα τις παρακάτω επισημάνσεις:
>
>
>
>
>
>
>
>
>
>
>
> *You might want to run 'apt-get -f install' to correct these:The
> following
> packages have unmet dependencies: libglu1-mesa-dev : Depends:
> libgl1-mesa-dev but it is not going to be installed
> or libgl-dev libxi-dev : Depends:
> xorg-sgml-doctools (>= 1:1.5) but it is not going to be
> installed virtualbox-4.1 : Depends: libqt4-network (>= 4:4.5.3) but it is
> not going to be installed Depends: libqt4-opengl (>=
> 4:4.7.0~rc1) but it is not going to be installed
> Depends:
> libqtcore4 (>= 4:4.7.0~beta1) but it is not going to be
> installed Depends: libqtgui4 (>= 4:4.7.0~beta1) but it
> is
> not going to be installed Recommends: libsdl-ttf2.0-0
> but
> it is not going to be installedE: Unmet dependencies. Try 'apt-get -f
> install' with no packages (or specify a solution).*
>
>
> Να σημειώσω ότι παρόμοιες απαντήσεις είχα λάβει και με την εντολή της
> αρχικής εκφώνησης της άσκησης όπου κάποιες βιβλιοθήκες ήταν διαφορετικές.
>
> Μετά την σχετική προτροπή εκτέλεσα την εντολή "*apt-get -f install*"
> οπότε
> έλαβα:
>
>
> *E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission
> denied)E: Unable to lock the administration directory (/var/lib/dpkg/),
> are
> you root?*
>
>
> Εκτελώντας την ξανά σαν root (μετά από *sudo su*) έλαβα παρόμοιες
> απαντήσεις με νωρίτερα:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *WARNING: The following packages cannot be authenticated! libqtcore4
> libqt4-xml libqt4-dbus libqt4-network libqtgui4 libqt4-opengl
> libdbusmenu-qt2 appmenu-qtInstall these packages without verification
> [y/N]? yErr http://gr.archive.ubuntu.com/ubuntu/
> <http://gr.archive.ubuntu.com/ubuntu/> natty-updates/main libqtcore4 i386
> 4:4.7.2-0ubuntu6.4 404 Not FoundErr
> http://gr.archive.ubuntu.com/ubuntu/
> <http://gr.archive.ubuntu.com/ubuntu/> natty/main libdbusmenu-qt2 i386
> 0.8.2-0ubuntu2 404 Not FoundFailed to fetch
> http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubuntu6.4_i386.deb
> <http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqtcore4_4.7.2-0ubuntu6.4_i386.deb>
> 404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch
> http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubuntu6.4_i386.deb
> <http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-xml_4.7.2-0ubuntu6.4_i386.deb>
> 404 Not Found [IP: 2001:67c:1562::15 80]Failed to fetch
> http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubuntu6.4_i386.deb
> <http://security.ubuntu.com/ubuntu/pool/main/q/qt4-x11/libqt4-dbus_4.7.2-0ubuntu6.4_i386.deb>
> 404 Not Found [IP: 2001:67c:1562::15 80]*
> κλπ (δεν αντιγράφω όλο το κατεβατό).
>
>
Εδώ το πρόβλημα έχει να κάνει με το ότι το natty ubuntu είναι τόσο παλιό
που έχουν μεταφερθεί όλα
τα repositories του. Δες και το παρακάτω thread από τα ubuntu forums:
http://ubuntuforums.org/showthread.php?t=2150989
Σε 32-bit VM με natty ubuntu κατάφερα να εγκαταστήσω όλα τα απαιτούμενα
πακέτα αλλάζοντας
στο αρχείο /etc/apt/sources.list όλα τα entries
'http://gr.archive.ubuntu.com/ubuntu/' σε
'http://old-releases.ubuntu.com/ubuntu/'
> Ευχόμενος να μπορώ να προχωρήσω παρ' όλα αυτά, εκτέλεσα την
> "*./bin/parsecmgmt
> -a build -c gcc-serial -p blackscholes bodytrack canneal facesim ferret
> fluidanimate freqmine raytrace swaptions streamcluster*" όπου το αρχικό
> build των packages φαινόταν να ολοκληρώνεται κανονικά αλλά στο τέλος
> έλαβα
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *checking pkg-config files for X11 are available... yeschecking for
> XLIBGL... yeschecking for GLW... yeschecking for GLUT... configure:
> error:
> Package requirements (x11 xmu xi) were not met:No package 'xi'
> foundConsider adjusting the PKG_CONFIG_PATH environment variable if
> youinstalled software in a non-standard prefix.Alternatively, you may set
> the environment variables GLUT_CFLAGSand GLUT_LIBS to avoid the need to
> call pkg-config.See the pkg-config man page for more details.[PARSEC]
> Error: 'env ./configure --with-driver=xlib --enable-glut --enable-static
> --disable-shared
> --prefix=/home/giannis/parsec-3.0/pkgs/libs/mesa/inst/i686-linux.gcc-serial'
> failed.*
>
Αυτό σημαίνει πως λείπουν κάποια πακέτα, προφανώς κάποια που δεν βρέθηκαν
κατά
το 'apt-get install ...'. Για ξαναδοκίμασε να κάνεις build έχοντας επιτυχώς
εγκαταστήσει όλα τα απαιτούμενα πακέτα.
>
> Τα επόμενα βήματα σχετικά με το "*cslab_create_parsec_workspace.sh*"
> κύλισαν κανονικά (δημιουργήθηκε ο φάκελος parsec_workspace με τα
> εκτελέσιμα
> και με την εκτέλεση της εντολής "*cat cmds_simlarge.txt*" έλαβα τα
> αποτελέσματα που αναγράφονται και στην εκφώνηση).
>
> Κατόπιν όρισα την μεταβλητή περιβάλλοντος LD_LIBRARY_PATH με την
> τροποποίηση "*i686-linux.gcc-serial*" καθώς είδα ότι υπήρχε αυτός ο
> φάκελος
> αντί του "*amd64-linux.gcc*" όπου και φαίνεται πως έγινε κανονικά.
>
Εδώ χρειάζεται να κάνεις μία αλλαγή στο script
cslab_create_parsec_workspace.sh.
Συγκεκριμένα, μέσα στο script θα πρέπει να αλλάξεις τη γραμμή 14:
από
cp pkgs/{apps,kernels}/*/inst/amd64-linux.gcc-serial/bin/*
${WORKSPACE_DIR}/executables/
σε
cp pkgs/{apps,kernels}/*/inst/i686-linux.gcc-serial/bin/*
${WORKSPACE_DIR}/executables/
ώστε να πάει στους σωστούς φακέλους και να πάρει τα εκτελέσιμα.
Επίσης, όπως σωστά αναφέρεις η εντολή:
export
LD_LIBRARY_PATH=~/parsec-3.0/pkgs/libs/hooks/inst/amd64-linux.gcc-serial/lib
σε 32-bit μηχάνημα πρέπει να γίνει:
export
LD_LIBRARY_PATH=~/parsec-3.0/pkgs/libs/hooks/inst/i686-linux.gcc-serial/lib
Θυμήσου να κάνεις την ίδια αλλαγή και στο run_l1.sh που δίνεται στον
βοηθητικό κώδικα.
> Όσον αφορά την μεταγλώττιση του cslab_cache.cpp, δίνοντας
> "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux
> make obj-intel64/cslab_cache.so*" έλαβα
>
> *make: *** No rule to make target `obj-intel64/cslab_cache.so'. Stop.*
>
>
> Αντιλαμβανόμενος (νομίζω...) τι συνέβαινε δημιούργησα φάκελο με την
> ονομασία "obj-ia32" μέσα στον φάκελο "pintool" και εκτέλεσα ξανά την
> εντολή
> παραλλαγμένη ως "*PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux
> make obj-ia32/cslab_cache.so*"
>
> Η μεταγλώττιση φαίνεται πως πέτυχε και στον φάκελο "*obj-ia32*"
> δημιουργήθηκαν τα αρχεία *cslab_cache.o* και *cslab_cache.so*. Στο
> terminal
> έλαβα
>
>
Πολύ σωστά έπραξες εδώ. Για να μεταγλωττιστεί το cslab_cache.so για 32-bit
αρχιτεκτονική θα πρέπει να φτιάξετε έναν φάκελο obj-ia32 και να δώσετε
PIN_ROOT=/path/to/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so
>
>
> *g++ -DBIGARRAY_MULTIPLIER=1 -Wall -Werror -Wno-unknown-pragmas
> -fno-stack-protector -DTARGET_IA32 -DHOST_IA32 -DTARGET_LINUX
> -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin
> -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen
> -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include
> -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/include
> -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -O3
> -fomit-frame-pointer -fno-strict-aliasing -c -o obj-ia32/cslab_cache.o
> cslab_cache.cppg++ -shared -Wl,--hash-style=sysv -Wl,-Bsymbolic
> -Wl,--version-script=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/pintool.ver
> -o obj-ia32/cslab_cache.so obj-ia32/cslab_cache.o
> -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib
> -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib-ext
> -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/runtime/glibc
> -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/lib -lpin
> -lxed -lpindwarf -ldl*
>
> Προσπαθώντας πλέον να χρησιμοποιήσω το cslab_cache pintool με την
> εντολή "*/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/pin.sh
> -t
> /home/giannis/advcomparch-2015-16-ex1-helpcode/pintool/obj-ia32/cslab_cache.so
> -o my_output.out -L1c 64 -L1a 8 -L1b 64 -L2c 256 -L2a 8 -L2b 64 --
> /home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes 1
> /home/giannis/parsec-3.0/parsec_workspace/inputs/in_64K.txt prices.txt*"
>
> έλαβα
>
>
>
>
>
>
>
>
> *E: Attach to pid 4209 failed. E: The Operating System configuration
> prevents Pin from using the default (parent) injection mode.E: To
> resolve
> this, either execute the following (as root):E: $ echo 0 >
> /proc/sys/kernel/yama/ptrace_scopeE: Or use the "-injection child"
> option.E: For more information, regarding child injection, see
> Injection
> section in the Pin User Manual.E: Killed*
>
>
> Προσθέτοντας την παράμετρο "*-injection child*" και εκτελώντας ξανά την
> προηγούμενη εντολή έλαβα:
>
> */home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes : No
> such file or directory*
>
> Γενικώς ο φάκελος executables είναι άδειος οπότε φαντάζομαι πως δεν έχουν
> δημιουργηθεί τα απαιτούμενα εκτελέσιμα.
>
Νομίζω πως έχοντας ακολουθήσει τα βήματα που σου προτείνω παραπάνω πλέον δεν
πρέπει να έχεις αυτά τα προβήματα(;)
>
> Τι έχει συμβεί και πως το ξεπερνάω; Έχει σχέση με τις βιβλιοθήκες που δεν
> εγκαταστάθηκαν ή με την δημιουργία των packages; Μήπως αφού έχω
> παλαιότερο
> σύστημα έπρεπε να χρησιμοποιήσω κάποια παλαιότερη έκδοση του PIN και όχι
> την 71313;
>
> Γενικώς οποιαδήποτε βοήθεια προς εμάς που έχουμε 32-bit μηχανήματα ή/και
> παλαιότερη έκδοση Linux θα ήταν ιδιαίτερα ευπρόσδεκτη!
>
>
> Σας ευχαριστώ - με εκτίμηση,
>
> Γιάννης Χορτομάνης
> _______________________________________________
> Advcomparch mailing list
> Advcomparch at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>
Καλή συνέχεια,
Δημήτρης
More information about the Advcomparch
mailing list