32- of 64-bits?

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

Sinds een paar jaar bestaan er 64-bits processoren, naast de al bestaande 32-bits processoren. Op een 64-bits computer hoort niet automatisch een 64-bits operating system. Je kunt er ook een 32-bits operating system op zetten. En die keuze is niet altijd gemakkelijk.

64-Bits commando's zijn langer, terwijl dat lang niet altijd nuttig is. Dat geeft nogal wat overhead ten aanzien van geheugenruimte en bandbreedte. Zolang er geen gebruik wordt gemaakt van de voordelen van een 64-bits-architectuur, zijn 32-bits applicaties op een 32-bits operating system vaak iets sneller. Daarnaast vereist een 64-bits operating system, 64-bits drivers. Momenteel (begin 2011) zijn er aanzienlijk meer 32-bits drivers beschikbaar dan 64-bits drivers. Zeker voor oudere hardware, is er lang niet altijd een 64-bits driver beschikbaar. Daar staat tegenover dan je in beginsel een 64-bits operating system nodg hebt om meer dan 4 GB aan geheugen te kunnen adresseren, al zijn er truken om ook vanaf een 32-bits operating system meer dan 4 GB aan geheugen te adresseren.

In juli 2010 melde Microsoft dat ca. de helft van de verkochte Windows 7-licenties 64-bits betroffen, vooral om de beperking van 4 GB aan geheugen te omzeilen. Canonical adviseert op een Ubuntu helppagina om een 64-bits Ubuntu te gebruiken ipv. 32-bits, tenzij er specifieke redenen zijn om dat niet te doen. ([1]). Toevallig zijn die redenen er wel:

  • Lightning (Thunderbird agenda add-on) is alleen beschikbaar voor 32-bits Linux;
  • Drivers voor oudere printers zijn vaak alleen beschikbaar voor 32-bits;
  • Voor exotische toepassignen zijn er vaak nog geen 64-bits programma's beschikbaar (voorbeeld jan. 2011: VPN-applicatie UvA-netwerk).

Het is onze ervaring dat op dit moment (januari 2011) het het beste is om nog steeds 32-bits Ubuntu te installeren. Net zo goed als dat we op dit moment standaard Ubuntu 10.04 gebruiken, en niet de meeste recentelijke release, namelijk 10.10.

Hieronder staan een handjevol Linux-commando's om uit te vogelen wat voor OS of hardware je hebt.

32-bits Ubuntu op 32-bits hardware

Commando:

cat /proc/cpuinfo | grep flags

Geeft:

flags: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pebs bts cid xtpr

en hier ontbreekt lw dat voor long word staat. Dus een 32-bits processor.

Hier zijn nog wat methodes, die meestal minder betrouwbaar zijn. Commando:

uname -m

Resultaat:

i686

en dit geeft aan dat het een 32-bits Ubuntu betreft.

Commando:

 cat /proc/version

Resultaat:

Linux version 2.6.32-27-generic (buildd@roseapple) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #49-Ubuntu SMP Wed Dec 1 23:52:12 UTC 2010

Commando:

file /sbin/init

Resultaat:

sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped

Commando:

lshw -class processor

geeft:

WARNING: you should run this program as super-user.
 *-cpu                   
      product: Intel(R) Pentium(R) 4 CPU 2.80GHz
      vendor: Intel Corp.
      physical id: 1
      bus info: cpu@0
      version: 15.2.9
      size: 2800MHz
      width: 32 bits
      capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pebs bts cid xtpr
      configuration: id=0
    *-logicalcpu:0
         description: Logical CPU
         physical id: 0.1
         width: 32 bits
         capabilities: logical
    *-logicalcpu:1
         description: Logical CPU
         physical id: 0.2
         width: 32 bits
         capabilities: logical

en waarschijnlijk geeft 'width' aan dat het een 32-bits processor betreft.

32-bits Ubuntu op 64-bits hardware

Commando

uname -m

geeft:

i686

Commando

cat /proc/version

geeft:

Linux version 2.6.32-26-generic (buildd@rothera) (gcc version 4.4.
3 (Ubuntu 4.4.3-4ubuntu5) ) #48-Ubuntu SMP Wed Nov 24 09:00:03 UTC 2010

Ik weet niet wat het getal '32' in het Linux versienummer aangeeft.

Commando

file /sbin/init

geeft:

ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamic
ally linked (uses shared libs), for GNU/Linux 2.6.15, stripped

en dit zegt iets over het OS.

Commando:

cat /proc/cpuinfo | grep flags

geeft zoiets als

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat 
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc 
pebs bts pni dtes64 monitor ds_cpl est cid cx16 xtpr pdcm lahf_lm

Aan het eind van de tweede regel staat lm, en dat staat voor Long Mode, dat aangeeft dat deze processor 64-bits is. Overigens, het commando

cat /proc/cpuinfo

geeft sowieso een hoop boeiende informatie.

64-Bits Ubuntu op 64-bits hardware

Commando

uname -m

geeft:

x86_64

Oftewel, dit zegt iets over het OS, en niet over de hardware.

Commando

cat /proc/version

geeft:

Linux version 2.6.32-24-generic (buildd@yellow) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) 
#39-Ubuntu SMP Wed Jul 28 05:14:15 UTC 2010

Tja, dat snap ik niet. Misschien dat '32' in de Linux-versie toch gewoon een nummer is.

Commando

file /sbin/init

geeft:

ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked 
(uses shared libs), for GNU/Linux 2.6.15, stripped

en dit zegt iets over het OS.

Commando:

cat /proc/cpuinfo | grep flags

geeft net als eerder:

flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat 
pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc 
pebs bts pni dtes64 monitor ds_cpl est cid cx16 xtpr pdcm lahf_lm

waarbij lm op de tweede regel staat voor Long Mode, de mogelijkheid om 64-bits commando's te verwerken.

Bronnen