PDA

View Full Version : HOW TO : 32bit εφαρμογες σε 64bit gentoo


Braveheart1980
24-01-2007, 17:31
Οσοι εχουμε 64bit επεξεργαστες και εχουμε βαλει και gentoo native 64bit συνανταμε αρκετες φορες καποια μικροπροβληματα με απαραιτητα 32bit πακετα

Εδω θα εξηγησουμε πως θα δημιοργησουμε ενα 32bit περιβαλλον για να τρεχουμε τις 32bit εφαρμογες μας κανονικα και πως ακριβως εγκαθιστουμε τις εφαρμογες

Σημειωση:Για ολο το guide ως editor εχω προτιμησει τον nano.Εσεις μπορειτε να χρησιμοποιεισετε οποιον editor θελετε

(1) Ανοιγουμε μια κονσολα και κατεβαζουμ το stage3 tarball σε x86 εκδοση
$ cd /home/user/downloads
$ wget -c ftp://distfiles.gentoo.org/releases/x86/2006.1/stages/stage3-i686-2006.1.tar.bz2

(2) Δημιουργουμε τον φακελο που θα περιεχει το νεο 32bit περιβαλλον μας

$ su root (βαζουμε τον κωδικο του root )
# cd /mnt
# mkdir gentoo32

(3)Μεταφερουμε και αποσυμπιεζουμε το stage3 tarball ως εξης:

# cd /mnt/gentoo32
# tar -xvjpf /home/user/downloads/stage3-i686-2006.1.tar.bz2
# cp -L /etc/resolv.conf /mnt/gentoo32/etc/
# cp -L /etc/passwd /mnt/gentoo32/etc/

(4)Aς φτιαξουμε τωρα το make.conf
Μετονομαζουμε το make.conf σε make.conf.old και δημιουργουμε το νεο make.conf ως εξης:

#mv /mnt/gentoo32/etc/make.conf /mnt/gentoo32/etc/make.conf.old
#nano -w /mnt/gentoo32/etc/make.conf

Κανουμε copy-paste ωστε το περιεχομενο του make.conf να ειναι αυτο:

CFLAGS="-O2 -march=athlon-xp -msse2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"


(5) Προσαρτουμε καταλληλα τα file systems:

# mount -o bind /dev /mnt/gentoo32/dev
# mount -o bind /dev/pts /mnt/gentoo32/dev/pts
# mount -o bind /dev/shm /mnt/gentoo32/dev/shm
# mount -o bind /proc /mnt/gentoo32/proc
# mount -o bind /proc/bus/usb /mnt/gentoo32/proc/bus/usb
# mount -o bind /sys /mnt/gentoo32/sys

Τωρα ας συνδεσουμε το portage με το chroot,ωστε οταν κανουμε πχ emerge --sync το 64bit συστημα μας να ενημερωνεται και το 32bit συστημα μας αυτοματα

# mkdir -p /mnt/gentoo32/usr/portage/
# mount -o bind /usr/portage /mnt/gentoo32/usr/portage/

Φροντιζουμε ωστε να τρεχουν οι εφαρμογες με gui

# mount -o bind /tmp /mnt/gentoo32/tmp

(6) Eιμαστε σχεδον ετοιμοι
Ας μπουμε στο 32bit περιβαλλον μας
# linux32 chroot /mnt/gentoo32 /bin/bash
Για να πιστουμε οτι πλεον εχουμε 32bit περιβαλλον εκτελουμε την εντολη
#uname -m που πρεπει να μας επιστρεψει i686 πχ
# uname -m
i686

Τωρα πρεπει να ενημερωσουμε και το 32bit συστημα μας

# source /etc/profile
# env-update
# emerge -au world
(υπομονη καθως το τελευταιο βημα ισως διαρκεσει πολυ)

(7) Τωρα πρεπει να φροντισουμε ωστε να ενεργοποιειται το 32bit συστημα μας κατα το boot.
Kανουμε exit πλεον ωστε να ξαναμπουμε στο 64bit συστημα μας

#exit

Δημιουργουμε ενα αρχειο ονοματι gentoo32 στο init.d ως εξης

# nano -w /etc/init.d/gentoo32
Κανουμε copy-paste το εξης περιεχομενο

#!/sbin/runscript

depend() {
need localmount
need bootmisc
}

start() {
ebegin "Mounting 32bits chroot dirs"
mount -o bind /dev /mnt/gentoo32/dev >/dev/null
mount -o bind /dev/pts /mnt/gentoo32/dev/pts >/dev/null &
mount -o bind /dev/shm /mnt/gentoo32/dev/shm >/dev/null &
mount -o bind /proc /mnt/gentoo32/proc >/dev/null
mount -o bind /proc/bus/usb /mnt/gentoo32/proc/bus/usb >/dev/null &
mount -o bind /sys /mnt/gentoo32/sys >/dev/null &
mount -o bind /tmp /mnt/gentoo32/tmp >/dev/null &
mount -o bind /usr/portage /mnt/gentoo32/usr/portage/ >/dev/null &
eend $? "An error occured while attempting to mount 32bit chroot directories"
ebegin "Copying 32bits chroot files"
cp -pf /etc/resolv.conf /mnt/gentoo32/etc >/dev/null &
cp -pf /etc/passwd /mnt/gentoo32/etc >/dev/null &
cp -pf /etc/shadow /mnt/gentoo32/etc >/dev/null &
cp -pf /etc/group /mnt/gentoo32/etc >/dev/null &
cp -pf /etc/gshadow /mnt/gentoo32/etc >/dev/null &
cp -pf /etc/hosts /mnt/gentoo32/etc > /dev/null &
cp -Ppf /etc/localtime /mnt/gentoo32/etc >/dev/null &
eend $? "An error occured while attempting to copy 32 bits chroot files."
}

stop() {
ebegin "Unmounting 32bits chroot dirs"
umount -f /mnt/gentoo32/dev/pts >/dev/null
umount -f /mnt/gentoo32/dev/shm >/dev/null
umount -f /mnt/gentoo32/dev >/dev/null &
umount -f /mnt/gentoo32/proc/bus/usb >/dev/null
umount -f /mnt/gentoo32/proc >/dev/null &
umount -f /mnt/gentoo32/sys >/dev/null &
umount -f /mnt/gentoo32/tmp >/dev/null &
umount -f /mnt/gentoo32/usr/portage/ >/dev/null &
eend $? "An error occured while attempting to unmount 32bits chroot directories"
}


Kανουμε το αρχειο εκτελεσιμο

#chmod +x /etc/init.d/gentoo32

Και τωρα το προσθετουμε στο startup :

rc-update add gentoo32 default

Aυτο ηταν!

Πλεον εχουμε ενα πληρως λειτουργικο 32bit συστημα!
Πως μπαινουμε ομως σε αυτο;
Απλα,ανοιγουμε μια κονσολα,μπαινουμε σαν root ,δινοντας την εντολη su και επειτα τον κωδικο του root , και επειτα δινουμε την εντολη

linux32 chroot /mnt/gentoo32 /bin/bash

Με αυτη την εντολη μπορουμε να μπαινουμε ανα πασα στιγμη στο 32bit συστημα μας!

Αμεσως μετα θα δουμε πως μπορουμε να προσθεσουμε μια εφαρμογη

Braveheart1980
24-01-2007, 17:37
Εγκατασταση εφαρμογων

(1) Μπαινουμε κατα τα γνωστα στο 32bit συστημα μας

(2) Eστω οτι θελουμε να εγκαταστησουμε την εφαρμογη foo

emerge --buildpkg --oneshot foo

Δεν ξεχναμε πως πριν το emerge μπορουμε να δηλωσουμε οποια flag θελουμε με την μορφη

USE="flag1 flag2 flag3 ...." emerge --buildpkg --oneshot foo

(3) Οταν τελειωσει αυτη η διαδικασια κανουμε exit απο το 32bit συστημα μας
#exit

(4) Aπο το 64bit συστημα μας πλεον δινουμε την εντολη
emerge --usepkg --oneshot foo

Τhats it!
Πλεον χωρις πολλα-πολλα μπορουμε να χρησιμοποιουμε το προγραμμα foo δινωντας την εντολη foo απο το 64bit συστημα μας!

DarthMoul
24-01-2007, 18:55
:023:

Επίσης, το gentoo portage περιλαμβάνει και το virtual branch. Το virtual branch εγκαθιστά precompiled 32 bit βιβλιοθήκες και περιβάλλον ανάπτυξης έτσι ώστε μέσα από το default 64μπιτο περιβάλλον να μπορούμε να εκτελούμε 32 bit precompiled (κυρίως proprietary) binaries όπως η Opera και ο Acrobat Reader.

Για να εγκατασταθεί το virtual branch δεν χρειάζεται κάτι ιδιαίτερο. Όταν αποφασίσουμε να κάνουμε emerge κάποιο 32 bit precompiled πακέτο (πχ τον Acrobat Reader) το portage θα κάνει την δουλειά από μόνο του.

emnezia
24-01-2007, 19:01
Πολύ καλός ο Brave! Εννοείτε πως γίνεται sticky. Πολύ χρήσιμο κόλπο.

backgroundman
26-01-2007, 13:42
:023:

Επίσης, το gentoo portage περιλαμβάνει και το virtual branch. Το virtual branch εγκαθιστά precompiled 32 bit βιβλιοθήκες και περιβάλλον ανάπτυξης έτσι ώστε μέσα από το default 64μπιτο περιβάλλον να μπορούμε να εκτελούμε 32 bit precompiled (κυρίως proprietary) binaries όπως η Opera και ο Acrobat Reader.

Για να εγκατασταθεί το virtual branch δεν χρειάζεται κάτι ιδιαίτερο. Όταν αποφασίσουμε να κάνουμε emerge κάποιο 32 bit precompiled πακέτο (πχ τον Acrobat Reader) το portage θα κάνει την δουλειά από μόνο του.

Το ίδιο γίνεται, έχω την εντύπωση, και με το openoffice το οποίο δεν έχει ακόμα 64-bit combatibility...

DarthMoul
26-01-2007, 13:47
Ναι αυτό γίνεται με πολλά 32 bit πακέτα. Εγώ χρησιμοποιώ και τον mozilla-firefox-bin που είναι 32 bits για να παίζει ο flash player που είναι proprietary και επίσης 32 bits. Επίσης χρησιμοποιώ και το 32μπιτο mplayer-bin για να μπορώ να έχω win32codecs και να βλέπω wmv αρχεία.

WAntilles
26-01-2007, 14:34
Επίσης χρησιμοποιώ και το 32μπιτο mplayer-bin για να μπορώ να έχω win32codecs και να βλέπω wmv αρχεία.

Εδώ και 4 μήνες δεν χρειάζεται πλέον.

Γενικά το τελευταίο 6μηνο έχει πάψει να υπάρχει οποιοσδήποτε λόγος για ύπαρξη 32-bit chroot στο σύστημά σας.

DarthMoul
26-01-2007, 14:38
Εδώ και 4 μήνες δεν χρειάζεται πλέον.

Γενικά το τελευταίο 6μηνο έχει πάψει να υπάρχει οποιοσδήποτε λόγος για ύπαρξη 32-bit chroot στο σύστημά σας.
Αν θέλουμε να παράγουμε 32 bit binaries για να τα δώσουμε σε φίλους που τρέχουν 32μπιτη έκδοση σε παλιό PC, χρειάζεται κανονικά. Εγώ το χρησιμοποιώ συνέχεια. Εξαρτάται από τις ανάγκες του καθενός πάντα.

Προχώρησε τόσο πολύ ο mplayer ε; Έχω να κάνω emerge κανένα εξάμηνο.

WAntilles
26-01-2007, 18:40
Αν θέλουμε να παράγουμε 32 bit binaries για να τα δώσουμε σε φίλους που τρέχουν 32μπιτη έκδοση σε παλιό PC, χρειάζεται κανονικά. Εγώ το χρησιμοποιώ συνέχεια. Εξαρτάται από τις ανάγκες του καθενός πάντα.

Α ΟΚ, ναι σωστά.

Προχώρησε τόσο πολύ ο mplayer ε; Έχω να κάνω emerge κανένα εξάμηνο.

Και του xine και του MPLayer εδώ και 3 μήνες είναι umnasked κίτρινες οι εκδόσεις τους που έχουν κάνει πλήρως reverse-engineered το WMV v9, οπότε παντού (καί σε amd64) τα πάντα τα παίζουν natively.