Die OQO Odyssee – Teil 2

Dieser Artikel ist ein Teil der OQO Odyssee – Serie. Der vorige Artikel befindet sich hier.

Nachdem die Windows-Installation halbwegs gut gegangen ist, kann ich mich dem Standard-Setup widmen: Firefox, Thunderbird, OpenOffice, Antivir und ein paar Sysinternals-Tools vollenden die Maschine und erlauben ein mobiles Arbeiten.

Die restlichen 15 GB der Festplatte würde ich gerne für Linux verwenden. Also mal kurz die Gentoo LiveCD rausgekramt und einmal nachgesehen, ob das Ding überhaupt mit dem externen Laufwerk zu booten geht. Aufgrund der Bildschirmgröße empfiehlt es sich jedoch, ohne Framebuffer zu arbeiten. (Kernel: gentoo-nofb)

Der UMPC booted und gelangt entgegen meiner Vermutung auf die klassische Shell, wo ich einmal mich gleich einmal über die Hardware informiere. Wir erinnern uns, unter Linux gibt es /proc/cpuinfo:

livecd ~ # cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineTMx86
cpu family      : 6
model           : 4
model name      : Transmeta(tm) Crusoe(tm) Processor TM5800
stepping        : 3
cpu MHz         : 999.211
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr cx8 sep cmov
mmx longrun lrti up
bogomips        : 2014.40

Die CPU ist ein Crusoe von Transmeta, eine CPU, welche zu drei Vierteln aus Software und einem Viertel aus Hardware besteht. Sie emuliert uns die x86 Architektur und stellt uns MMX zur Verfügung. Eine kleine Recherche ergab, dass die CPU selbst auf 128 Bit arbeitet und einen eher eingeschränkten Befehlssatz hat – Code Alignment wird z.B. nicht unterstützt.

Da wir Gentoo aber auf exakt diese Hardware hinbiegen wollen, wird kein Weg an den Dokumentationen des GCC vorbeiführen, wo wir herausfinden, dass Code-Alignment durch Setzen von -Os abschaltbar ist. So ergibt sich folgende Einstellung für die CFLAGS:

-march=i686 -Os -mmmx -pipe -fomit-frame-pointer

Nach diesem kleinen Exkurs in die Prozessorgeschichte geht es am Besten gleich in Richtung PCI Bus, welcher uns auch noch ein paar Rätsel aufgibt:

livecd ~ # lspci
00:00.0 Host bridge: Transmeta Corporation LongRun
 Northbridge (rev 04)
00:00.1 RAM memory: Transmeta Corporation SDRAM controller
00:00.2 RAM memory: Transmeta Corporation BIOS scratchpad
00:00.3 RAM memory: Transmeta Corporation Unknown device 0399
00:03.0 Multimedia audio controller: ALi Corporation
 M5451 PCI AC-Link Controller Audio Device (rev 02)
00:05.0 FireWire (IEEE 1394): Texas Instruments TSB43AB22/A
 IEEE-1394a-2000 Controller (PHY/Link)
00:06.0 VGA compatible controller: Silicon Motion, Inc.
 SM720 Lynx3DM (rev c1)
00:07.0 ISA bridge: ALi Corporation M1533/M1535 PCI to
 ISA Bridge [Aladdin IV/V/V+]
00:0c.0 USB Controller: NEC Corporation USB (rev 43)
00:0c.1 USB Controller: NEC Corporation USB (rev 43)
00:0c.2 USB Controller: NEC Corporation USB 2.0 (rev 04)
00:0f.0 IDE interface: ALi Corporation M5229 IDE (rev c4)
00:11.0 Bridge: ALi Corporation M7101 Power Management
 Controller [PMU]

Ohne Furcht und Ahnung geht es aber schon weiter auf der Maschine, da ich noch immer kein passendes Netzteil gefunden habe. Ich partitioniere die Platte, sodass sich folgendes Schema ergibt:

livecd ~ # fdisk -l /dev/hda

Disk /dev/hda: 30.0 GB, 30005821440 bytes
255 heads, 63 sectors/track, 3648 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        1824    14651248+   7  HPFS/NTFS
/dev/hda2            1825        3648    14651280    5  Extended
/dev/hda5   *        1825        1831       56196   83  Linux
/dev/hda6            1832        1894      506016   82  Linux swap / Solaris
/dev/hda7            1895        2381     3911796   83  Linux
/dev/hda8            2382        3648    10177146   83  Linux

Als Boot-Partition reichen 50 MB auf Ext2 aus, gefolgt von 512 MB Swap, 5 GB Portage und dem Rest /…

Es folgt das Herunterladen des Stage-Files und der Portage-Sync. Und dann war’s das auch schon wieder mit dem Akku. Ich unmounte die Platte und schalte ab, über meinen neuen Entdeckungen brütend und lesend. In diesem Falle – bis zum nächsten Teil der OQO Odyssee.

Author:

14 thoughts on “Die OQO Odyssee – Teil 2”

  • Hi,
    Does this flags „-march=i686 -Os -mmmx -pipe -fomit-frame-pointer“ works (without errors on compilation – bootstrap) ?

    Will they work on Transmetya Efficeon with current gcc, because this on Safe Cflags from Gentoo Linux Wiki doesn’t work.

  • The OQO device was too weak to survive a complete bootstrap on device. But on a bigger CPU the whole process worked flawless.

    Regarding the Transmeta Efficion, I haven’t had a chance to test things. But in general, those flags should work. If you are in doubt, plain i686 optimization should do the trick.

  • Saying „plain i686 optimization should do the trick“ you mean using only „-march=i686“ flag in make.conf ?

  • The cflags I have used should work for your CPU too. If not, you may try to reduce the cflags. I’d say „-march=i686“ is the last try before giving up…

    What device are you trying to compile on, if I may ask?

  • The cpu itself should be able to deal with those cflags: „-O2 -march=i686 -fomit-frame-pointer -mmmx -msse -msse2“

    keep in mind, it’s the successor of the crusoe I was using here…

  • So it should work. But keep in mind – stage 1 and bootstraping is not (officially) supported anymore.

    As far as I remember, Perl and Libperl were missing some modules in the stage1 archive tarball. So it’s not the CPU which is causing the problems

  • And which version of stage did you use: stage1 or stage3 ?

    By the way, I read on some gentoo web page that if I change flags in make.conf (after I used stage3), I have to recompile all chainloader (run bootsrap).

  • I usually stick to stage1 – but that’s more or less because of the strange CPUs I am having.

    Regarding CHOST changes, there is a nice document on the gentoo page. Any other flags don’t really need a recompile of the toolchain.

  • Can I use „-falign-functions=0 -falign-jumps=0 -falign-loops=0“ flags for Transmeta Efficeon,maybe those flags make errors on compiling ?

  • Usually all those flags starting with -f like -falign are considered to be evil and break things. So best thing is – as Stargazer already said: keep the flags simple

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert