[Linux] 64bit AMD CPU. Kernel hergecompileerd, maar geen 64b

Pagina: 1
Acties:

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Ik heb een week geleden een AMD athlon 64 gekocht als serversysteem. Ik wilde weleens zien wat die zou kunnen.

Eerst booten vanaf m'n standaard-klaarliggende-linux-hdd-met-alle-nodige-tools-erin.

Even gekopieerd op z'n eigen disk, en linux boot vrolijk.
Nu kernel compileren. v 2.6.8.1 gedownload, compiled met als CPU type een K8 64bit, even rebooten en klaar.

Nu heb ik wel gelezen dat je met chroot omgevingen moet gaan werken om 32 en 64 bit toepassingen te kunnen draaien, maar ik begrijp nu niet helemaal in tot hoeverre dit nodig is, want ik heb ook gelezen dan een 32bit userland sneller is dan een 64bit. Dus moet het naast elkaar kunnen draaien.

In ieder geval probeer ik nu een 64bit binary te starten (HLDS server, is gameserver voor counter-strike en andere Halflife mods) en krijg dit terug:
code:
1
./hlds_run: ./hlds_amd64: cannot execute binary file


Ik heb het nogmaals nagekeken, maar de CPU type in de kernel staat echt goed, deze tool (hlds_run, een script) weet ook dat de hlds_amd64 binary nodig is. Waarom werkt het dan toch niet?
Heb ik dan iets over het hoofd gezien?

Graag krijg ik wat nodige informatie waarvan google me niet kon helpen. Ik las daar wel mogelijkheden om compilers zo te maken dat ze 32bit en 64 bit kunnen compilen, maar verder weinig boeiends.

thx :*)

edit:
Dit is trouwens interessant topic: [rml]igmar in "[ Linux] Kernel compilen naar 64-bit"[/rml]

In dat bericht zou het dus moeten kunnen. Ik ga nog even hard zoeken, het moet daar ergens tussenstaan hoe en wat precies nodig is.
Het gaat om een systeem wat ik op afstand zo wil aanpassen (staat in datacenter)en daar uren op de vloer zitten is geen pretje ;) ik heb wel binnenkort hier ook zelf een A64 staan.

Ik begrijp dat ik in de makefile ARCH en CROSS_COMPILE moet zetten.
ARCH dan naar ia64 , maar CROSS_COMPILE zou ik niet weten.
Kan iemand me opweg helpen?
Overigens draai ik Debian Woody (3.0 stable), dat is wel handig om te weten ;)
Ik hoef niet alles 64bit te hebben, alleen de ondersteuning, ik ben benieuwd hoe verschillende gameservers presteren onder linux met 64bit.
En waar zet je x86 emulatie aan?

[ Voor 27% gewijzigd door pierre-oord op 12-10-2004 11:37 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 19:42

Creepy

Tactical Espionage Splatterer

Je draait nu een i386 distributie, dus met x86 emulatie ;)

Om native 64 bits applicaties te draaien zul je een 64 bit linux distributie moeten installeren (alles dus 64 bits). Pas dan zal je 64 bits gameserver draaien.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 21:31

Kees

Serveradmin / BOFH / DoC
Je moet dus ook je librairies op 64 bits compliteren voordat uberhaubt de kernel 64 bits is. Dit is een redelijke rotklus, en daar zijn dus 64 bits distros voor, gentoo, debian, mandrake, redhat en suse hebben die al, waarbij op het moment suse mijn voorkeur geniet.

Als je eenmaal op 64 bits zit heb je vaak een /lib64 en een /lib waarin respectievelijk 64 bits libs en 32 bits libs staan. Hierdoor kun je gewoon 32 bits en 64 bits libs naast elkaar draaien. Onder een 32 bits linux systeem kun je echter geen 64 bits software draaien, ook al heb je je programma zo gecomplileerd dat hij 64 bits is, je libraries zijn dat niet. Je zal dus alles ook naar 64 bits moeten converten.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

pierre-oord schreef op 12 oktober 2004 @ 11:14:
In ieder geval probeer ik nu een 64bit binary te starten (HLDS server, is gameserver voor counter-strike en andere Halflife mods) en krijg dit terug:
code:
1
./hlds_run: ./hlds_amd64: cannot execute binary file
Je kernel snapt geen 64 bits ELF, of is geen 64 bits kernel.

code:
1
file executable


dient echt te zeggen 'ELF 64-bit'
Ik begrijp dat ik in de makefile ARCH en CROSS_COMPILE moet zetten.
ARCH dan naar ia64 , maar CROSS_COMPILE zou ik niet weten.
Kan iemand me opweg helpen?
De cross-compile hack was alleen nodig omdat gcc standaard een 64 bits binary maakt, en ik op dat moment een kernel had die geen 64 bits elf ondersteuning had. Dan moet je dus zorgen dat de support tools die het make proces zelf nodig heeft 32 bits zijn.

Het is om te beginnen wel handig om te weten wat voor ELF's jouw GCC standaard uitspuugt, en of je nu een 32 of 64 bits kernel hebt. Zie verder ook het genoemde topic.

  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

Kees schreef op 12 oktober 2004 @ 13:59:
Je moet dus ook je librairies op 64 bits compliteren voordat uberhaubt de kernel 64 bits is.
Want ? De kernel gebruikt geen libs. Een 64 bits kernel is, mits de arch dat ondersteund, gewoon een kwestie van compilen.
Dit is een redelijke rotklus, en daar zijn dus 64 bits distros voor, gentoo, debian, mandrake, redhat en suse hebben die al, waarbij op het moment suse mijn voorkeur geniet.
Debian heeft, op sparc tenminste, iig libc en ncurses in een 64 bits versie.
Onder een 32 bits linux systeem kun je echter geen 64 bits software draaien, ook al heb je je programma zo gecomplileerd dat hij 64 bits is, je libraries zijn dat niet. Je zal dus alles ook naar 64 bits moeten converten.
Voor een 64 bits userland heb je ook een 64 bits kernel nodig AFAIK.

  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

igmar schreef op 12 oktober 2004 @ 22:10:
[...]


Want ? De kernel gebruikt geen libs. Een 64 bits kernel is, mits de arch dat ondersteund, gewoon een kwestie van compilen.

[...]
waarschijnlijk werkt de kernel van TS ook al op 64bit, maar TS wil graag een applicatie draaien, en die applicatie is gelinkt met 32bits libraries.

It sounds like it could be either bad hardware or software


  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

smokalot schreef op 12 oktober 2004 @ 22:19:
waarschijnlijk werkt de kernel van TS ook al op 64bit, maar TS wil graag een applicatie draaien, en die applicatie is gelinkt met 32bits libraries.
In dat geval kan ie 'm gewoon draaien. Ik vermoed dat of de kernel geen 64 bits is, of dat de kernel geen 64 bits ELF support heeft. Wat simpele file commando's zal dat wel helder krijgen denk ik zo :)

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Ok bedankt voor jullie berichten.
De rest van de distro is nog gewoon 32bit, zou zo'n voorgecompileerd programma als HLDS ook op libs leunen?

Even weten:
- Als ik een 64 bit disto installeer zoals debian, kán ik dan nog 32bit apps draaien?
- Als ik een 64 bit kernel heb (heb ik dat nou als ik compile met A64 in de make menuconfig?), kan ik dan 64bit apps draaien zoals HLDS, of leunen die ook op libs? Of doe ik iets in m'n kernel bouwen verkeerd?

Misschien heeft iemand een commando waarmee ik kan zien hoe m'n kernel is gecompileerd? Zou wel handig zijn ;)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Seth4Chaos
  • Registratie: Maart 2001
  • Niet online

Seth4Chaos

that's me...

pierre-oord schreef op 15 oktober 2004 @ 14:53:
Misschien heeft iemand een commando waarmee ik kan zien hoe m'n kernel is gecompileerd? Zou wel handig zijn ;)
The output of uname -m is x86_64 due to historical reasons as this was the name of the first AMD specification.
bron: http://www-uxsup.csx.cam....dminguide-9.0/node14.html

dus bij een 64bit versie krijg je X86_64 met 'uname -m' en anders iets van i686.

[ Voor 11% gewijzigd door Seth4Chaos op 15-10-2004 15:03 . Reden: bron toegevoegd ]

Mistakes are proof that you are trying...


  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

pierre-oord schreef op 15 oktober 2004 @ 14:53:
De rest van de distro is nog gewoon 32bit, zou zo'n voorgecompileerd programma als HLDS ook op libs leunen?
iig de libc, tenzij alles statisch is gelinked, wat niet erg waarschijnlijk is.
Even weten:
- Als ik een 64 bit disto installeer zoals debian, kán ik dan nog 32bit apps draaien?
Als je 32 bits libs hebt wel.
- Als ik een 64 bit kernel heb (heb ik dat nou als ik compile met A64 in de make menuconfig?), kan ik dan 64bit apps draaien zoals HLDS, of leunen die ook op libs? Of doe ik iets in m'n kernel bouwen verkeerd?
Die zijn afhankelijk van 64 bits libs.
Misschien heeft iemand een commando waarmee ik kan zien hoe m'n kernel is gecompileerd? Zou wel handig zijn ;)
file vmlinux

en anders elf-utils installeren, dan kun je meer details opvragen.

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Seth4Chaos schreef op 15 oktober 2004 @ 15:02:
[...]


[...]

bron: http://www-uxsup.csx.cam....dminguide-9.0/node14.html

dus bij een 64bit versie krijg je X86_64 met 'uname -m' en anders iets van i686.
uname -m geeft "i686"!
Ik heb toch echt de kernel gecompileerd voor een AMD64. Moet ik dan dus anders compilen, met andere compile tools, of...?

edit:
Ik begrijp nu dus dat ik 64bit libs zou moeten installeren. Kan ik zoiets misschien gewoon vanaf debian apt-getten?
En kan m'n kernel die dus op i686 is gecompiled zonder extra tools, wel 64bit binaries verwerken?

[ Voor 23% gewijzigd door pierre-oord op 15-10-2004 18:18 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Schop!
Kan iemand de laatste onduidelijkheden nog even uitleggen misschien?

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


Verwijderd

pierre-oord schreef op 16 oktober 2004 @ 18:37:
Schop!
Kan iemand de laatste onduidelijkheden nog even uitleggen misschien?
Lezen kreng! :)
Je moet alles dus 64 bit doen.
Je hebt je kernel nu alleen hardware support voor je soort cpu gegeven, geen ondersteuning voor 64 bits libraries en binaries.
Je moet de kernel dus echt met een 64 bit distributie compilen.
Zie daarvoor bijv.:
http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Verwijderd schreef op 16 oktober 2004 @ 18:43:
[...]


Lezen kreng! :)
Je moet alles dus 64 bit doen.
Je hebt je kernel nu alleen hardware support voor je soort cpu gegeven, geen ondersteuning voor 64 bits libraries en binaries.
Je moet de kernel dus echt met een 64 bit distributie compilen.
Zie daarvoor bijv.:
http://www.gentoo.org/doc/en/handbook/handbook-amd64.xml
Okee, da's duidelijk ;)

Ik kan dan waarschijnlijk maar beter een 64bit distributie installeren. Weet iemand of de 64bit versie van Debian ook nog de 32bit libs aan boort heeft? Compatibiliteit is wel handig voor oude 32bit apps.

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • smokalot
  • Registratie: Juni 2001
  • Laatst online: 15-01 22:00

smokalot

titel onder

pierre-oord schreef op 16 oktober 2004 @ 21:07:
[...]


Okee, da's duidelijk ;)

Ik kan dan waarschijnlijk maar beter een 64bit distributie installeren. Weet iemand of de 64bit versie van Debian ook nog de 32bit libs aan boort heeft? Compatibiliteit is wel handig voor oude 32bit apps.
ja, als je geen 32bit meer zou kunnen draaien zou het een beetje voor niks geweest zijn dat AMD zo z'n best heeft gedaan om backwards compatible te zijn.

It sounds like it could be either bad hardware or software


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
smokalot schreef op 17 oktober 2004 @ 01:25:
[...]

ja, als je geen 32bit meer zou kunnen draaien zou het een beetje voor niks geweest zijn dat AMD zo z'n best heeft gedaan om backwards compatible te zijn.
Ja, ik weet dat Windows het wel heel mooi kan, maar hoorde dus wel dat je 32bit libs nodig hebt op linux, dus zal debian die ook moeten hebben...

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)

Pagina: 1