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.
JJ says:
Hi Stargazer,
Have a look at this:
JJ
TK says:
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.
Stargazer says:
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.
TK says:
Saying „plain i686 optimization should do the trick“ you mean using only „-march=i686“ flag in make.conf ?
Stargazer says:
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?
TK says:
It’s ECS 532.
Stargazer says:
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…
TK says:
It’s ECS 532 with Transmeta Efficeon.
Stargazer says:
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
TK says:
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).
Stargazer says:
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.
TK says:
Can I use „-falign-functions=0 -falign-jumps=0 -falign-loops=0“ flags for Transmeta Efficeon,maybe those flags make errors on compiling ?
Stargazer says:
You surely can test it – but I wouldn’t use too fancy flags as such flags might break things.
Toei Rei says:
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