HOWTO AMD 64

Uit Gentoo Linux Wiki

Ga naar: navigatie, zoeken

Inhoud

[bewerken] Inleiding

Wij Gentoo geeks (en ja, verwelkomend, de SUSE, Mandriva, Debian en konsoorten geeks) kunnen een oorspronkelijk 64-bit systeem hebben. Verwacht echter geen even gemakkelijk en even pakketcorpulent omgeving als x86; na Gentoo met succes op 2 andere computers geïnstalleerd te hebben heeft het me nog eens een week gekost om verschillende problemen met AMD64 Gentoo in orde te krijgen. Er zijn ook een behoorlijk aantal pakketten (nog) niet beschikbaar in 64-bit.

[bewerken] Toepassingen zonder 64-bit ondersteuning

  • BELANGRIJKE opmerking ivm met emul-linux-x86-soundlibs: ga na dat de alsa bibliotheken die met dit emulatie pakket worden meegeleverd dezelfde zijn als de oorspronkelijke. Als referentie: 2.3 heeft versie 1.0.10 en 2.4 heeft versie 1.0.11. Dus het is beter om met de emulatie bibliotheken 2.4 alsa 1.0.11 te gebruiken totdat een emulatie pakket met een versie hoger dan 1.0.11 wordt vrijgegeven. Anders zal eigenaardige foutmeldingen krijgen voor sommige configuraties.
  • Als je een nForce250 chipset met gigabit hebt, moet je de kernel 2.6.8 of later gebruiken.
  • Als je video clips wilt bekijken kan je met sommige formaten in de problemen komen. Dat komt omdat veel mensen het pakket win32codecs installeren dat door MPlayer en Xine kan gebruikt worden. Codec dlls van windows zijn nog niet als 64 bit beschikbaar is. Maar er zijn open bron codecs, vooral voor het Mplayer project. Je kunt ook kijken onder chroot verder in deze howto of naar mplayer-bin om het 32-bit binaire codec probleem te omzeilen.
  • Als je Mozilla of Firefox gebruikt dan zijn er enkele voor 64 bit onbeschikbare plugins. De meest bekende ervan is de Flash plugin van Macromedia. Er is een open bron kloon gnash genaamd maar die ondersteunt momenteel de nieuwere versie van Flash nog niet (en ik kreeg hem niet werkend). Macromedia Flash kan ook gebruikt worden met een voorgecompileerde versie van Firefox, zie onder. (Er is een petitie: http://www.petitiononline.com/lin64swf/petition.html)). Het is misschien mogelijk om 32-bit plugins te doen werken met een 64-bit browser – doe een poging met NSpluginwrapper .
  • Als je Adobe Acrobat Reader gebruikt - Acrobat Reader 7 werkt goed onder AMD64, het enige probleem is de web browser plugin die niet zal werken met 64-bit browsers (maar werkt goed met 32-bit browsers, ten minste Firefox). KDE's KPDF werkt met Konqueror, hoewel het niet alle eigenschappen van Acrobat Reader ondersteunt.
  • Er is een open bron Java client (blackdown-jre) die langzamer is dan de Sun client. Maar er is al een 64-bit JRE van Sun, die je in Portage kan vinden (eigenlijk is het Java 1.5 JRE)

[bewerken] Installatie van niet ondersteunde toepassingen forceren

Het kan voor sommige toepassingen die nog niet op de amd64 architectuur zijn getest lukken door het ~x86 sleutelwoord te specifiëren. Dit lukte voor:

  • sys-apps/915resolution-0.5.2 --Langec 12:33, 26 September 2006 (UTC)
  • app-emacs/muse-3.02.6b --24.176.68.145 22:33, 20 October 2006 (UTC)
  • app-emacs/planner-3.4.0 --24.176.68.145 22:33, 20 October 2006 (UTC)
  • x11-misc/autocutsel-0.8.1, but autocutsel randomly crashes. --24.176.68.145 22:33, 20 October 2006 (UTC)

Als het werkt stuur dan aub een bugreport naar http://bugs.gentoo.org om de ontwikkelaars ervan op de hoogte te stellen.

[bewerken] Nuttige Tips & Trucs

  • Als je de onderstaande stappen gebruikt om een x86 chroot te creëren dan kan je 32-bit binaire pakketten creëren voor jouw 64-bit omgeving door de pakketten te emergen in de chroot dmv van “emerge --buildpkgonly" en ze daarna te installeren in de oorspronkelijke omgeving dmv "emerge --usepkgonly".

Als de /usr/portage map gekoppeld is in de chroot dan zullen de binaire pakketten geïnstalleerd worden in de standaard "/usr/portage/packages" voor beide en hoef je verder niets te doen. Het is echter niet aan te raden om op deze wijze bibliotheken te creëren omdat de 2 omgevingen een verschillende reeks mappen gebruikt om de bibliotheken te gebruiken ((/usr/lib in de chroot is /usr/lib32 in de oorspronkelijke omgeving).

  • Als je een Tyan bord hebt dat de tg3 module gebruikt als netwerk adapter en het mislukt om die correct te installeren voeg dan direct ervoor de dummy module toe. Dit zal een “dummy” netwerk adapter toevoegen maar je moet die niet configureren of wat anders mee doen. Je zult opmerken dar de tg3 module nu correct zal laden.
  • Als het systeem tijdens het opstarten blijft hangen bij “hotplug” gebruik hotplug dan niet door de nohotplug optie in de kernel opstartregel in de bootloader te gebruiken (merk op: dit veronderstelt dat je Genkernel gebruik om jou kernel te genereren). Voer zeker rc-update del hotplug uit zodat het niet start tijdens het booten.
  • Als je een Shuttle SN85G4 hebt, dan moet je met de kernel de optie noapic meegeven om ervoor te zorgen dat de kernel jouw SATA disk(s) ziet. Zonder deze optie zal de kernel de 6-in-1 kaart lezer detecteren en er niet in slagen om de SATA disk als disk te herkennen.
  • Je zou de volgende problemen kunnen tegenkomen als je de liveCD wilt booten met een MSI K8T Neo2 (FIR) moederbord:
    1. The SATA drivers for the VIA controller are not loaded automatically
    2. The command modprobe sata_via hangs

De oplossing is de noapic kernel optie. Na deze worden de drivers niet automatisch gestart, maar je kan tenminste modprobe uitvoeren.

  • Dit lijkt een probleem te zijn met de kernel versie van de liveCD, omdat ik deze optie niet meer nodig het met mijn huidig werkend systeem.
  • Het MSI K8N Neo Platinum moederbord heeft de noapic optie nodig naar de LiveCD (2004.3), anders zul je allerhande I/O fouten en segmentatie fouten krijgen. Met deze optie zou je probleemloos moeten kunnen installeren.
  • Op de DFI Lanparty moederborden en andere NForce 4 Chipsets met Vitesse VSC8201 Gigabit en Marvell 88E8001 Gigabit kan je modprobe forcedeth gebruiken om de open bron drivers te laden als de netwerkkaart niet wordt gedetecteerd.
  • Partimage werkt ook niet. Ik ken geen andere weg om dit te omzeilen dan een andere 32bit-linux of LiveCD te gebruiken.


[bewerken] OpenOffice-bin (32 bits)

Als je de volgende foutmelding krijgt bij het opstarten van OpenOffice-bin:

Inconsistency detected by ld.so: ../sysdeps/generic/dl-tls.c: 72: _dl_next_tls_modid: Assertion `result <= _rtld_local._dl_tls_max_dtv_idx' failed!

De oplossing bestaat erin om een /usr/lib32/opengl/nvidia/lib/libGL.so.1.0.x bestand te verplaatsen of te wissen. Of je kunt de /usr/lib32/opengl/nvidia/ map helemaal wissen.

Noteer dat het zou kunnen dat je een 32-bit JVM (zoals Sun’s JRE) (manueel) moet installeren.

[bewerken] Macromedia Flash en Java onder AMD64 met Firefox

Er is momenteel geen Macromedia Flash plugin beschikbaar voor AMD64. Het is echter mogelijk om een x86 voorgecompileerde Firefox naast de normale Firefox te installeren. Om de voorgecompileerde Firefox te installeren doe je het volgende:

emerge mozilla-firefox-bin netscape-flash

Daarna moet je de plugin (libflashplayer.so && flashplayer.xpt) van /opt/netscape/plugins naar /opt/firefox/plugins copieren.

Of installeer gplflash(flash v4):

emerge gplflash

En test misschien de alfa versie gnash(flash v7=>).

De emul-linux-x86 pakketten kunnen noodzakelijk zijn om x86 Firefox in een AMD64 omgeving te gebruiken. Je kunt de meeste van deze pakketten met volgende opdracht installeren: emerge emul-linux-x86-baselibs emul-linux-x86-compat emul-linux-x86-glibc \

emul-linux-x86-gtklibs emul-linux-x86-xlibs emul-linux-x86-soundlibs

Als je een website met Flash toepassing wilt bekijken start Firefox dan eerder met het commando firefox-bin dan met het normale Firefox. Je kunt dan controleren of de Flash plugin correct geïnstalleerd is door het volgende in de adresbalk van Firefox in te geven about:plugins . Je zou iets moeten zien dat hier op lijkt:

Code: Shockwave Flash

    File name: libflashplayer.so
    Shockwave Flash 7.0 r25

MIME Type 	Description 	Suffixes 	Enabled
application/x-shockwave-flash 	Shockwave Flash 	swf 	Yes
application/futuresplash 	FutureSplash Player 	spl 	Yes

Als je geen enkel geluid van Flash krijgt probeer dan esd in te stellen:

emerge esound
/etc/init.d/esound start
rc-update add esound default

OF ingeval van gebruik van ALSA dmix probeer te editeren (laat de rest van de bladzijde met rust):

File: /usr/bin/firefox-bin

...

#exec /usr/libexec/mozilla-launcher "$@"
aoss32 /usr/libexec/mozilla-launcher "$@"

...

Zie ook:

[bewerken] Een 32-bit omgeving opzetten

Soms is een 32-bit omgeving nodig om 32-bit toepassingen te kunnen gebruiken. Dit kan gerealiseerd worden door een 32-bit chroot te creëren waarin deze 32-bit toepassingen worden gebruikt. Dit betekent een nieuwe Gentoo installatie in jouw AMD64 installatie. Eerst moet je in jouw kernel onder Processor Types and Features IA32 emulaties instellen. Als je een gepatchte kernel gebruikt (nuttig voor moederborden gebaseerd op nVidia chipsets) kan je dit vinden onder Executable file formats / Emulations.

Lees deze officiële HOWTO’s om een 32-bit chroot omgeving op te zetten: 32 bit Compatibility

De emul-linux bibliotheken zijn eveneens noodzakelijk en kunnen als volgt worden geïnstalleerd:

emerge app-emulation/emul-linux-x86-baselibs app-emulation/emul-linux-x86-xlibs \
app-emulation/emul-linux-x86-gtklibs app-emulation/emul-linux-x86-qtlibs

Maak een map waar je nieuwe Gentoo installatie in terecht komt:

mkdir /mnt/gentoo32

Download en installeer de Gentoo stage van de lijst of mirrors op http://www.gentoo.org/main/en/mirrors.xml en pak die uit in de chroot map:

cd /mnt/gentoo32
wget <PACKAGE_URL>
tar -xvjpf stage?-*.tar.bz2

De stage die je kiest kan een x86 of athlon-xp zijn (pentium4 is ook een mogelijkheid omdat het SSE2 extensies ingesteld heeft staan) of je kunt alternatief een stage 1 kiezen en zelf compileren. Als je GCC 3.4 gebruikt moet je in staat zijn om -march=athlon64 en andere dergelijke vlaggen in te stellen.

Omdat er geen /usr/portage map is in stage? Moet je er een maken:

mkdir -p /mnt/gentoo32/usr/portage

Eenmaal jou chroot installatie compleet is kan je er in gaan met dit commando:

linux32 chroot /mnt/gentoo32 /bin/bash --login

Als er problemen zijn met rechten of er worden geen mappen of bestanden gevonden verzeker je er dan van dat het gentoo32 bestandssysteem de rw,exec,dev,uid opties heeft wanneer het gekoppeld wordt. Gebruik het volgende commando om uit te vissen of het deze opties heeft:

# mount -l

Als het bestandssysteem deze opties niet heeft verzeker je er dan van dat enkel de noatime als optie voor het bestandssysteem is ingesteld. Controleer dit in /etc/fstab.

Er zijn enkele bestanden, mappen en koppelpunten die toegankelijk moeten zijn vanuit jouw 32-bit chroot omgeving. Hierbij hoort de /tmp map omdat Xorg deze map gebruikt voor zijn sockets en algemene configuratiebestanden zoals /etc/hostname. Het volgende script zou het meeste hiervan moeten afhandelen. Mogelijks moet je het aanpassen aan jouw behoeften:


File: /etc/init.d/gentoo32
#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

#NB: Config is in /etc/conf.d/gentoo32

depend() {
        need localmount
        need bootmisc
}

checkconfig() {
        if [ -z "${GENTOO32_CHROOT}" ] ; then
                eerror "You need to setup GENTOO32_CHROOT in /etc/conf.d/gentoo32 first"
                return 1
        fi
        if [ ! -d "${GENTOO32_CHROOT}" ] ; then
                eerror "You need to setup GENTOO32_CHROOT in /etc/conf.d/gentoo32 to a valid directory"
                return 1
        fi
}

start() {
        checkconfig || return 1

        ebegin "Mounting 32bits chroot dirs"
        mount -o bind /dev ${GENTOO32_CHROOT}/dev >/dev/null && \
        mount -o bind /dev/pts ${GENTOO32_CHROOT}/dev/pts >/dev/null && \
        mount -o bind /dev/shm ${GENTOO32_CHROOT}/dev/shm >/dev/null && \
        mount -o bind /proc ${GENTOO32_CHROOT}/proc >/dev/null && \
        mount -o bind /proc/bus/usb ${GENTOO32_CHROOT}/proc/bus/usb >/dev/null && \
        mount -o bind /sys ${GENTOO32_CHROOT}/sys >/dev/null && \
        mount -o bind /tmp ${GENTOO32_CHROOT}/tmp >/dev/null && \
        mount -o bind /usr/portage ${GENTOO32_CHROOT}/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 ${GENTOO32_CHROOT}/etc >/dev/null &
        cp -pf /etc/passwd ${GENTOO32_CHROOT}/etc >/dev/null &
        cp -pf /etc/shadow ${GENTOO32_CHROOT}/etc >/dev/null &
        cp -pf /etc/group ${GENTOO32_CHROOT}/etc >/dev/null &
        cp -pf /etc/shadow ${GENTOO32_CHROOT}/etc >/dev/null &
        cp -pf /etc/hosts ${GENTOO32_CHROOT}/etc > /dev/null &
        cp -Ppf /etc/localtime ${GENTOO32_CHROOT}/etc >/dev/null &
        eend $? "An error occured while attempting to copy 32 bits chroot files."
}

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

Configureer de map voor een 32-bit omgeving:


File: /etc/conf.d/gentoo32
# /etc/conf.d/gentoo32
# Point GENTOO32_CHROOT to a valid chroot environment
GENTOO32_CHROOT="/mnt/gentoo32"

Dit zal eveneens de /usr/portage map binden, daardoor hoeft emerge --sync slechts een maal te worden uitgevoerd om beide systemen te updaten. Ook de distfiles map zal gedeeld worden bij downloads. Je kunt dit script als volgt automatisch laten lopen bij het booten: chmod +x /etc/init.d/gentoo32

rc-update add gentoo32 default

Installeer dchroot: emerge -av dchroot om toepassingen die in chroot geïnstalleerd zijn als niet bevoorrechte gebruiker te gebruiken en voeg info over jouw 32-bit chroot locatie toe aan /etc/dchroot.conf:

echo "gentoo32 /mnt/gentoo32" >> /etc/dchroot.conf

Er is een kleine omweg te doen omdat dchroot enkel scripts kan uitvoeren (het zal protesteren wanneer het een binair programma voorgeschoteld krijgt):

Creëer eerst een script my_app32 in x86_64 gentoo (/usr/bin/my_app moet het pad en de naam van de toepassing zijn die je in de 32-bit chroot wilt gebruiken):

File: /usr/local/bin/my_app32
#!/bin/bash
xhost local:localhost
linux32 dchroot -c gentoo32 /usr/local/bin/32run.sh /usr/bin/my_app

Daarna creëer je een hulp script 32run.sh in een 32-bit chroot omgeving:

File: /mnt/gentoo32/usr/local/bin/32run.sh
#!/bin/sh
exec "$@"

Nu zou je in staat moeten zijn om "my_app" gecompileerd in een 32-bit chroot omgeving direct te kunnen starten door /usr/local/my_app32 uit te voeren in een normale x86_64 omgeving.

Zie ook: HOWTO on gentoo.org:

[bewerken] Reiser4 en AMD64

Reiser4 is maar onlangs op stand gebracht om op een AMD64 system te werken. Een recentere kernel is hiervoor vereist. Dit is een lijst van kernels waarvan werd gerapporteerd dat ze met Reiser4 en AMD64 werken. Gelieve op te merken dat deze kernels (en Reiser4) experimenteel zijn en problemen kunnen veroorzaken:

mm patchset: 2.6.14*
beyond-sources: 2.6.16*
cko-sources: 2.6.12-cko3

Om Gentoo 64-bit vanaf nul te installeren met Reiser4:

Unofficial CONRAD Gentoo Reiser4 Install LiveCD amd64

[bewerken] Mplayer en 32bit codecs

Voeg dit aan /etc/portage/package.keywords toe:

media-video/mplayer-bin ~amd64
media-libs/win32codecs ~amd64
app-emulation/emul-linux-x86-medialibs ~amd64

Als je een video bestand wenst af te spelen start dan Mplayer met Mplayer32 of gmplayer32 als je een GUI wilt. gmplayer32 lijkt om een of andere reden beter te werken dan MPlayer32.

(05 Feb 2006: Het is op dit ogenblik mplayer-bin en gmplayer-bin in plaats van mplayer32 en gmplayer32)

  • Als je een -vo fout krijgt met de melding:
/dev/mga_vid couldn't be found
probeer dan -vo xv.
  • If Als je een fout krijgt met de melding:
Win32 LoadLibrary failed to load: wmvdmod.dll /usr/lib/win32/wmvdmod.dll, /usr/local/lib/win32/wmvdmod.dll

Of gelijkaardig, maak dan een link naar de lib32 map:

ln -s /usr/lib32/win32 /usr/lib/win32

[bewerken] RealPlayer

Emerge media-sound/alsa-driver met de oss USE flag:

echo "media-sound/alsa-driver oss" >> /etc/portage/package.use
emerge -av media-sound/alsa-driver
/etc/init.d/alsasound restart

Emerge media-video/realplayer:

emerge -av media-video/realplayer

Start RealPlayer:

realplay

Zet Xvideo af : Tools » Preferences » Hardware » Use XVideo

[bewerken] Radeon 3D-acceleratiie in 32-bit programmas

3D acceleratie werkend krijgen met ATI Radeon vereist eigen drivers en sommige 32-bit programmas moeten met de juiste GL-drivers ingesteld zijn.

Vooraleer jouw spel te starten zou je de aangepaste LIBGL_DRIVERS_PATH omgevingsvariabele moeten exporteren:

export LIBGL_DRIVERS_PATH=/usr/X11R6/lib32/modules/dri

of enkel het spel/programma met de variabele in het startcommando moeten gebruiken :

LIBGL_DRIVERS_PATH=/usr/X11R6/lib32/modules/dri enemy-territory
Afkomstig van de Nederlandstalige Gentoo Wiki, het vrije Gentoo handboek. "http://nl.gentoo-wiki.com/HOWTO_AMD_64"
Persoonlijke instellingen