%% LyX 1.5.4 created this file. For more info, see http://www.lyx.org/. %% Do not edit unless you really know what you are doing. \documentclass[german]{scrartcl} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \setlength{\parskip}{\medskipamount} \setlength{\parindent}{0pt} \usepackage{graphicx} % \makeatletter %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. %% Special footnote code from the package 'stblftnt.sty' %% Author: Robin Fairbairns -- Last revised Dec 13 1996 %\let\SF@@footnote\footnote %\def\footnote{\ifx\protect\@typeset@protect % \expandafter\SF@@footnote % \else % \expandafter\SF@gobble@opt % \fi %} %\expandafter\def\csname SF@gobble@opt \endcsname{\@ifnextchar[%] % \SF@gobble@twobracket % \@gobble %} %\edef\SF@gobble@opt{\noexpand\protect % \expandafter\noexpand\csname SF@gobble@opt \endcsname} %\def\SF@gobble@twobracket[#1]#2{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands. \usepackage{mathptmx} \usepackage[scaled=.90]{helvet} \usepackage{courier} \usepackage{babel} \makeatother \begin{document} \title{Forth ohne/als Betriebssystem} % \renewcommand{\footnote}{\endnote} \makeatletter \renewcommand\footnoterule{% \kern-3\p@ \hrule\@width0.667\textwidth \kern2.6\p@} \makeatother \author{Carsten Strotmann% \thanks{mit Hilfe von Stefan Reinauer% }} \maketitle In der VD 3+4/2007 fragt Fred Behringer als Notiz zur Besprechung des XO Laptops (One Laptop per Child):\\\glqq\ldots Gibt es eine Möglichkeit, dieses BIOS (die OpenFirmware des XO Laptops) zeitweilig (so wie bei Zeichensätzen), vielleicht anstelle eines Schatten--BIOS, in meinen Rechner zu schalten? Am liebsten über einen Bootmanager (bei mir XFDisk)\grqq\/. Nachdem ich für die Forth--Gesellschaft im Jahre 2007 zusammen mit dem LinuxBIOS--Team auf dem LinuxTag anwesend war und wir dort die {}\emph{Forth--Flagge} hochgehalten haben, lag die Idee, einen Artikel über den Status von OpenFirmware zu schreiben, schon recht lange auf meinem Tisch. Freds Anfrage hat mir den notwendigen Impuls gegeben, diesen Artikel fertigzustellen. \begin{multicols}{2} \section{PC Real Mode} Um die Kompatibilität mit alten 16--Bit--Betriebssystemen wie MS--DOS oder CP/M aufrechtzuerhalten, starten selbst moderne PCs immer noch im 16--Bit--{}\emph{Real--Mode}. In diesem Modus wird selbst bei neuesten PCs ein (sehr schneller) Original--IBM--PC mit 1 MB Hauptspeicher und VGA Karte eingerichtet. Neben dem werbewirksamen Einblenden von Markennamen des Rechner--, BIOS--, \mbox{Motherboard--,} CPU-- und Grafikkarten--Herstellers ist diese Einrichtung des 16--Bit--Real--Modes verantwortlich, warum der BIOS--Startvorgang auf modernen Rechnern immer noch so langsam ist wie beim Original--IBM--PC von 1981 (zum Teil, man mag es nicht glauben, sogar noch langsamer). Moderne BIOS--Ersatz--Technologien wie EFI oder CoreBoot starten den Rechner im 32--Bit--Modus erheblich schneller. Doch dazu später. Zuerst schauen wir uns an, welche Optionen wir heutzutage haben, um ein Forth--System ohne Betriebssystem zu starten. Hierbei beziehe ich mich auf x86--kompatible PCs, welche in den letzten 4--5 Jahren hergestellt und verkauft wurden. \subsection{Forth vom PC--BIOS gebootet} Die Idee, Forth direkt, d.~h.\ ohne Umwege über MS--DOS oder ein anderes Betriebssystem, vom BIOS aus zu starten, ist so alt wie die ersten Forth--Systeme für den IBM--PC. Damals, in der ersten Hälfte der 1980er Jahre, war diese Technik eher die Norm als denn die Ausnahme. Ein Forth wurde direkt von einer Boot--Diskette gestartet. Das war die Zeit der Disketten, vor der Zeit der Festplatten. Nach dem Anschalten des PCs wird das BIOS aktiv, initialisiert die Hardware (Tastatur, Floppykontroller, Grafikkarte, Schnittstellen) und lädt den ersten Sektor (Master Boot Sektor). Das Programm in diesem Sektor übernimmt die Kontrolle über den Rechner und lädt das Forth--Programm, direkt vom Datenträger (meist Diskette). Auf der Diskette befindet sich meist ein Forth--eigenes (Block--) Dateisystem. Ein-- und Ausgabe (Bildschirm, Datenträger) erfolgt über die vom BIOS bereitgestellten Systemroutinen. Insofern läuft ein solches Forth nicht vollständig unabhängig von einem Betriebssystem, da das Rechner--BIOS ein sehr simples Betriebssystem bereitstellt (genannt Basic--Input--Output--System = BIOS). Auch heute kann man Forth--Systeme über dieses System starten, doch finden sich auch immer mehr Rechner, bei denen dieser Weg nicht mehr funktioniert: \begin{itemize} \item keine Diskettenlaufwerke \item ein versehentlicher Zugriff des Forth--Systems auf die Festplatte kann Gigabytes an Daten zerstören \end{itemize} \subsection{Syslinux COMBOOT 16--Bit} Das Syslinux Programm% \footnote{http://syslinux.zytor.com% } erlaubt das Starten von Betriebssystemen (nicht nur Linux) von FAT--formatierten Datenträgern (Disketten, Festplatten oder USB--Speicher), von CD--ROM oder über PXE--Netzwerkboot. Dabei unterstützt Syslinux ein spezielles Format, das so genannte COMBOOT--Format. COMBOOT--Dateien sind Standard--MS--DOS--COM--Programm--Dateien % \footnote{http://en.wikipedia.org/wiki/COM\_file% } (64--KB--Speicher, Start bei \$100). Über das Syslinux--COMBOOT--Verfahren lassen sich MS--DOS--kompatible Forth--Systeme, welche als COM--Dateien vorliegen, direkt starten. Im Vergleich zum direkten Start über das BIOS unterstützt Syslinux den Start von beliebigen, FAT--formatieren Datenträgern. Voraussetzung allerdings ist, dass die Forth--Systeme keine MS--DOS--Systemaufrufe benutzen, sondern ausschließlich direkt mit der Hardware sprechen oder das BIOS benutzen. Ein Forth--System, welches auf diesem Wege gestartet werden kann, ist die VolksForth--8086--Version ohne MS--DOS--Abhängigkeiten (VFORTHN.COM). Über die MEMDISK% \footnote{http://syslinux.zytor.com/memdisk.php% }--Erweiterung ist es auch möglich, Forth--Systeme auf Disketten--Abbilddateien von CD--ROM oder sogar über das Netzwerk (PXE--Boot) zu starten. Mit MEMDISK kann man z.~B.\ FreeDOS% \footnote{http://www.freedos.org% } von einem kleinen (230K) Diskettenabbild vom USB--Stick laden. Das FreeDOS erkennt den FAT--formatierten USB--Stick als Laufwerk C: (das MEMDISK Diskettenabbild ist Laufwerk A:). Von dort aus kann jedes MS--DOS--basierte Forth (z.~B.\ VolksForth) geladen werden. \section{PC--Protected--Mode} Um heutige 32--Bit oder 64--Bit--Hardware von Forth ausnutzen zu können, sollte das Forth--System im so genannten {}\emph{Protected--Mode}% \footnote{http://en.wikipedia.org/wiki/Protected\_mode% } gestartet werden. Im Gegensatz zum {}\emph{Real--Mode}\/, welcher einen schnellen 8086 Prozessor mit 1 MB Adressraum zur Verfügung stellt, stehen dem Entwickler im {}\emph{Protected--Mode} alle erweiterten Funktionen moderner Prozessoren zur Verfügung. Da nicht jeder Entwickler das Rad neu erfinden und das Umschalten in den {}\emph{Protected--Mode} sowie das Laden des Programmes von einem Speichermedium selbst neu programmieren möchte, gibt es eine Reihe von Boot--Loadern, Ladeprogramme, welche den Prozessor in den {}\emph{Protected--Mode} setzen, das Programm (z. B. das Forth--System) laden und dann die Ausführung an das geladene Programm übergeben. \subsection{Syslinux COM32} Syslinux unterstützt das Laden von speziellen 32--Bit--Programmen mit einem sehr einfachen Programmaufbau, ähnlich dem von MS--DOS--{}\emph{COM}--Dateien. Programme im Dateiformat COM32% \footnote{http://syslinux.zytor.com/comboot.php% } müssen ab Speicherstelle 0x101000 lauffähig sein und dürfen keine Segmente ansprechen, stattdessen muss das {}\emph{Flat--Memory}% \footnote{http://en.wikipedia.org/wiki/Flat\_memory\_model% } Modell des i386--Prozessors benutzt werden. Syslinux stellt für COM32 Programme eine simple, BIOS--ähnliche API für Ein-- und Ausgabe zu Verfügung, so dass Programme im 32--Bit--Protected--Mode diese Funktionen anstatt BIOS--Funktionen benutzen können. Es sollte möglich sein, mit einwenig Programmieraufwand bestehende Linux-- oder Windows--32 oder --64--Bit--Forth--Systeme umzuschreiben, um im COM32--Modus zu laufen. Erweiterte I/O--Funktionen wie Zugriff auf die Grafikkartenfunktionen oder Datenspeicher (USB etc), müssen über Treiber im Forth--System realisiert werden. Dies kann für den einen oder anderen eine interessante Herausforderung darstellen. \subsection{GRUB} % \footnote{http://www.gnu.org/software/grub/} (legacy)} GRUB (ein Akronym für GRand Unified Bootloader) ist ein sehr flexibler Bootloader für PC--Systeme, welcher für eine Vielzahl von Betriebssystemen eingesetzt wird (z. B. Linux und OpenSolaris x86). Grub kann von verschiedenen Medien gestartet werden (Festplatten, Floppy--Disk, CD-- und DVD--Laufwerken sowie Flash--Disks) und ist in der Lage, von einer großen Anzahl von Dateisystemen% \footnote{ext2, ext3, UFS, UFS2, ReiserFS, FAT, NTFS, ISO9660, JFS, Minix, FFS, XFS% } Betriebssystemkerne zu starten. Grub wird in der Regel vom PC--BIOS gestartet und bietet dem Benutzer ein Auswahlmenü, über das Betriebssysteme gestartet werden können. Grub kann Betriebssysteme nach dem Multiboot--Standard% \footnote{http://www.gnu.org/software/grub/manual/multiboot/multiboot.html% }, Linux, FreeBSD, NetBSD und OpenBSD direkt starten. Andere Betriebssysteme (z. B. OS/2 oder Windows) werden über das so genannte Chain--Load geladen, bei dem Grub einen Original--Bootsektor für das gegebene Betriebssystem aus einer Datei lädt und startet. Um ein 32--Bit--Forth--System über Grub zu starten, sollte dieses Forth System dem Multiboot--Standard entsprechen. Ein separates Projekt, Grub4Dos% \footnote{http://grub4dos.sourceforge.net/% }, bietet Grub und die Grub--Installations--Werkzeuge für DOS--basierte Systeme an. \subsection{CoreBoot} %\footnote{http://www.coreboot.org% %} (aka LinuxBIOS)} CoreBoot ist ein OpenSource--Projekt, welches an einem quelloffenen BIOS--Ersatz arbeitet. Das Projekt firmierte lange unter dem Namen {}\emph{LinuxBIOS}\/, da es sich aber nicht primär um ein Linux--Projekt handelt, und das Ergebnis kein {}\emph{BIOS} ist, hat sich das Projekt Anfang 2008 in {}\emph{CoreBoot} umbenannt. Im Folgenden sind daher die Begriffe LinuxBIOS und CoreBoot synonym. CoreBoot bietet ein modulares System, um Betriebssysteme von Datenspeichern (Festplatten, USB--Sticks etc) oder direkt aus dem Flash--ROM zu starten. CoreBoot selbst ist nur ein kleiner, in C geschriebener Programmteil, welcher den PC soweit vorbereitet, dass ein Betriebssystem geladen und gestartet werden kann. CoreBoot initialisiert hierzu: \begin{itemize} \item die CPU(s) \item den Speicher \item den Bus (PCI) \item Controller (IDE, ATA, SATA, USB ...) \item Grafikkarte \end{itemize} Um CoreBoot benutzen zu können, muss man ein von CoreBoot/LinuxBIOS unterstütztes PC--Board besitzen. Leider halten die meisten PC--Hersteller wichtige Informationen über die verwendete Hardware und deren Schnittstellen unter Verschluss, so dass nicht alle PC--Boards von CoreBoot unterstützt sind. Eine Liste der Boards und Systeme, welche mit CoreBoot gestartet werden könnnen, findet sich auf der CoreBoot--Webseite% \footnote{http://www.coreboot.org/Supported\_Motherboards% }. \subsubsection{Payloads} CoreBoot kann verschiedene Betriebssysteme oder Bootloader starten (die so genannten Payloads): \begin{itemize} \item Linux \textemdash{} direkter Start eines Linux--Kerns \item FILO \textemdash{} ein einfacher Bootloader mit Dateisystem--Unterstützung. Dies ist ein GRUB ohne PC--BIOS Unterstützung. \item GRUB2 \textemdash{} wird FILO ablösen, ist aber noch in der Entwicklung und noch nicht einsatzbereit \item Mitch Bradley's Open Firmware \item CodeGen's SmartFirmware \item OpenBIOS \item GNUFI% \footnote{http://www.gnu.org/software/gnufi/% } (UEFI) \item Etherboot% \footnote{http://www.coreboot.org/Etherboot% } \textemdash{} beinhaltet FILO und unterstützt neben Netzwerkboot auch SATA und USB--Speicher \item ADLO \textemdash{} Verbindungsschicht, um ein 16--bit--Bochs--BIOS zu laden. Dies erlaubt den Start von Betriebssystemen, welche PC--BIOS--Aufrufe machen, wie z. B. Windows und OpenBSD. \item Plan 9% \footnote{http://www.coreboot.org/Plan\_9% } \textemdash{} ein verteiltes Betriebssystem \end{itemize} \subsubsection{Motivation für CoreBoot} Es gibt verschiedene Motivationen, um CoreBoot anstatt eines Standard--PC--BIOS einsetzen zu wollen: \begin{itemize} \item um ein komplettes Rechner--System aus freier Software zu erstellen \item um volle Kontrolle über den Rechner (Persönlichen Computer = PC) zu behalten, da moderne kommerzielle BIOS--Systeme und --Erweiterungen über DRM (Digital--Rights--Management) den Benutzer zu kontrollieren versuchen \item um Ansatzpunkte für Behörden--Schnüffelsoftware (aka Bundestrojaner) zu verhindern \item um den Rechner--Startvorgang zu verkürzen \item um Lizenzgebühren für ein kommerzielles BIOS zu sparen \end{itemize} Auf Youtube% \footnote{http://www.youtube.com/watch?v=nuzRsXKm\_NQ% } gibt es ein Video, welches zeigt, wie schnell ein LinuxBIOS--Start bis in eine grafische Unix--X11--Oberfläche sein kann. Auf der FOSDEM--2007--Konferenz hat Projekt--Mitbegründer Ron Minnich% \footnote{Interview: http://archive.fosdem.org/2007/interview/ronald+g+minnich% } einen interessanten Vortrag über CoreBoot (damals noch unter dem Titel LinuxBIOS) gehalten, in welchem er auch über die Motivation hinter LinuxBIOS spricht. Der Vortrag ist als Video im Medienarchiv% \footnote{http://archive.fosdem.org/2007/media/video% } der FOSDEM--Seite abrufbar. \subsubsection{CoreBoot und Forth} CoreBoot kann benutzt werden, um ein (oder mehrere) Forth--Systeme direkt aus dem Flash--Speicher zu laden. Was mit großen Betriebssystem--Kernen wie Linux bei geringem Flash--Speicher auf dem Motherboard (512 KB, 1 MB) ein Problem sein kann, ist für Forth eine Tugend. In 256 KB bekommt man viel Forth hinein. Mit OpenBIOS und Mitch Bradleys OFW sind schon zwei OpenFirmware--kompatible Forth--Systeme für CoreBoot verfügbar. \subsection{EFI} EFI, das Extensible Firmware Interface, ist ein von Intel entwickelter PC--BIOS Ersatz. EFI wurde im Jahre 1989--2000 zusammen mit den ersten Itanium--Prozessoren veröffentlicht. Vom Konzept her gleicht EFI dem schon älteren OpenFirmware, so lässt EFI z.~B.\ auch plattformneutrale Gerätetreiber in ByteCode zu. Allerdings ist im EFI kein Forth--Interpreter eingebettet. In der Realität sind aber die meisten EFI--Treiber in EFI--kompatiblen (PCI--) Geräten in x86--Programmcode und nicht ByteCode. Die ByteCode--Möglichkeit wird bisher von den Herstellern nicht benutzt (da es EFI bisher auch hauptsächlich auf der x86--Hardwareplatform gibt). Im Jahre 2005 wurde die Weiterentwicklung von EFI in die Hände von UEFI, dem {}\emph{Unified EFI Forum}\/, gelegt. Einige Grundkomponenten von EFI und die Grund--Spezifikationen% \footnote{http://developer.intel.com/technology/efi/% } sind seitdem öffentlicht zugänglich. Während sich EFI bei Standard--PCs noch nicht durchgesetzt hat, ist EFI bei auf Intel--CPU basierten Rechnern der Firma Apple die Firmware. Das EFI ist bei Apple--Rechnern für den Benutzer {}\emph{unsichtbar}\/. Um bei Apple--Rechnern das EFI--Interface für den Anwender {}\emph{nutzbar} zu machen, kann das EFI--Toolkit des {}\emph{rEFIt}--Projektes installiert werden% \footnote{http://refit.sourceforge.net/% }. rEFIt bietet dem Apple--(x86--CPU)--Benutzer ein grafisches Boot--Menü, Zugriff auf den Apple--Hardwaretest und die EFI--Shell. % \begin{figure*} \begin{center} \includegraphics[width=0.7\paperwidth]{2008-02/screen2} \caption{rEFIt--Bootmenü} \end{center} \end{figure*} \subsubsection{EFI--Programme} EFI kann neben Betriebssystemkernen auch direkt Programme starten. Der Apple--Hardwaretest und die EFI--Shell sind zwei Beispiele hierfür. Für diese Programme bietet EFI dem Programm eine simple I/O--Schnittstelle, ähnlich dem PC--BIOS. Amit Singh, Autor des Buches {}\emph{MacOS X Internals --- A Systems approach}% \footnote{http://www.osxbook.com/% } (viele, zusätzliche Kapitel als PDF auf der Webseite erhältlich), beschreibt im Kapitel {}\emph{EFI Programming on Mac OS X}% \footnote{http://www.osxbook.com/book/bonus/chapter4/efiprogramming/% }, wie Programme erstellt werden, welche dann direkt unter EFI ausführbar sind. Mit dieser Anleitung sollte es möglich sein, ein bestehendes 32--Bit-- oder 64--Bit--Forth mit einem EFI--Wrapper zu versehen und dann direkt von der EFI--Shell oder dem rEFIt--Bootmenü aus zu starten. Die TianoCore--Webseite% \footnote{https://www.tianocore.org/% } hat weitergehende Informationen über EFI--Programmierung, inklusive des EFI--Toolkits. Das EFI--Toolkit bietet einfachen Zugriff auf EFI--Ressourcen wie \begin{itemize} \item Standard--C--Library \item die Libz--Kompressions--Library \item die BSD--Datenbank--Routinen, libdb \item die Serial--Port--Library, libtty \item TCP/IP--v4-- und PPP--Netzwerkzugriff \item Python--Interpreter für EFI \item ein Text--Editor \item RAM--Disk für EFI \end{itemize} An dieser Auflistung sieht man, dass EFI mehr ein embedded Betriebsystem denn ein Bootloader ist. Auch ist nicht jeder von EFI begeistert, wie E--Mails% \footnote{http://kerneltrap.org/node/6884% } vom Linux--Oberentwickler Linus Torvals zeigen ({}\glqq EFI is this other Intel brain--damage (the first one being ACPI).\grqq). \begin{figure*}[t] \begin{center} \includegraphics[width=0.7\paperwidth]{2008-02/OpenBIOS-VMWare} \caption{OpenBIOS in VMWare} \end{center} \end{figure*} \section{Open--Firmware--Implementierungen} Derzeit gibt es fünf IEEE--1275--(aka OpenFirmware)--kompatible Implementierungen, welche unter verschiedenen OpenSource--Lizenzen im Quellcode verfügbar sind. Zentrale Anlaufstelle für alle diese Implementierung ist die Seite des OpenBIOS--Projektes% \footnote{http://www.openbios.info% }. Dort kann man den Quellcode der meisten dieser OpenFirmware--Versionen einsehen und laden. Die verschiedenen OpenFirmware--Implementierung sind eine Schatzgrube für Forth--Programmierer, enthalten sie doch Treiber für Dateisysteme (FAT, ext2, HFS...) und Hardwarekomponenten (USB, IDE/ATA, Grafik ...), sowie einen Webserver in Forth. \subsection{OpenBIOS (OpenBIOS--Projekt)} OpenBIOS wurde als Projekt gegründet mit dem Ziel, eine quelloffene (OpenSource) Implementierung von IEEE--1275 für x86--Architekturen zur Verfügung zu stellen. Als das Projekt startete (2000), gab es am Markt nur proprietäre Implementierungen von IEEE--1275. Im Jahre 2006 wurde OpenBIOS durch die in kurzen Zeitabständen erfolgte Freigabe fast aller dieser proprietären Versionen unter einer OpenSource--Lizenz überholt. Derzeit aktuell ist die Version 1.0rc2 vom April 2007. Die Weiterentwicklung des OpenBIOS ist nach der Freigabe der anderen OpenFirmware--Versionen verlangsamt worden. Hier können Forth--affine Entwickler ein interessantes Projekt zur Mitarbeit finden, im OpenBIOS über die letzten Meter zur Versionsnummer 1.0 zu bringen. Das QEmu--System--Emulator Projekt% \footnote{http://fabrice.bellard.free.fr/qemu/% } benutzt OpenBIOS, um für die SUN--Sparc--Emulation eine IEEE--1275--Umgebung bereitzustellen. OpenBIOS war seit der Gründung als Projekt eng mit dem LinuxBIOS--(nun CoreBoot--)Projekt verbunden. Daher wundert es nicht, dass OpenBIOS als eines der möglichen {}\emph{Payloads} mit dem CoreBoot in einen BIOS--Flashbaustein geschrieben werden kann. Zusammen mit CoreBoot ermöglicht OpenBIOS einen direkten Start des IEEE--1275--Forth--Systems aus dem BIOS--Flash--ROM. Alternativ kann OpenBIOS auch über einen Bootloader (GRUB, Syslinux, FILO), oder als normales Programm unter Linux oder anderen Unix--Systemen gestartet werden. Mit OpenBIOS kann ein ISO--CD--ROM--Image mit OpenBIOS erstellt werden, welches dann zum Testen von OpenBIOS in Emulatoren wie QEmu oder VMWare benutzt werden kann. OpenBIOS kann für die Architekturen x86, amd64, Xbox(1), SPARC und PPC erstellt werden. Als Zusatzprogramme beinhaltet OpenBIOS einen IEEE--1275--Tokenizer und De--Tokenizer, um Forth zu IEEE--1275--Tokencode (FCODE) umzuwandeln und Tokencode auch wieder zurück in Forth--Quellcode. \subsection{OpenFirmware (Firmworks)} OpenFirmware% \footnote{http://openbios.org/Open\_Firmware% } ist die IEEE--1275--Version von Mitch Bradley (Firmworks% \footnote{http://firmworks.com/% }). OpenFirmware wird im OLPC XO (One Laptop per Child) als Start--Firmware benutzt und steht unter einer BSD--ähnlichen OpenSource--Lizenz zur Verfügung. Die OpenFirmware--Quellen stellen mehrere Zielarchitekturen (ARM, x86, PPC ..) zur Verfügung und beinhalten eine Anzahl von Hardware-- und Dateisystemtreibern (in Forth geschrieben). OpenFirmware kann über verschiedene Wege gestartet werden: \begin{itemize} \item direkt im (Flash--)ROM \item über CoreBoot/LinuxBIOS \item über einen Booloader wie Grub oder Syslinux \item im Unix--Betriebssystem als normaler Prozess \end{itemize} Der derzeitige Fokus der OpenSource--Version ist der OLPC--Laptop. Alle anderen Architekturen und Ladevarianten (im OpenSource--Quellcode--Tree) sind derzeit nicht vollständig getestet und benötigen ggf.\ manuelle Änderungen und Aktualisierungen, bevor diese übersetzt und benutzt werden können. OLPC--Laptops sind sehr schwierig zu bekommen, aber der kleine Linutop--Rechner% \footnote{http://www.linutop.com, http://www.linuxkistchen.de% } verfügt über eine recht ähnliche Hardwareausstattung (AMD--Geode--Chipsatz und --CPU) im Vergleich zum OLPC XO und ist ein gutes Testgerät für CoreBoot-- und OpenFirmware--Experimente. \subsection{Smart Firmware (CodeGen)} Smart Firmware% \footnote{http://openbios.org/SmartFirmware% } der Firma CodeGen% \footnote{http://codegen.com/% } ist eine in C geschriebene Implementierung von IEEE--1275, welche auch im Jahr 2006 unter einer OpenSource--Lizenz freigegeben wurde. Smart Firmware ist die Firmware--Basis des EFIKA--PPC--Boards, welches das Referenz--Board des PowerPC--Development--Forums ist. Das EFIKA--Board wurde von der deutschen Firma bplan% \footnote{http://www.bplan.de% } für die US--Firma Genisi entwickelt. Das EFIKA--Board kann unter dem Namen {}\emph{OpenClient} zusammen mit 2.5''--Harddisk, Grafikkarte und kleinem Gehäuse erworben werden% \footnote{http://www.vesalia.de% }% \footnote{http://www.genisi.com% }. Der {}\emph{OpenClient} ist eine interessante Plattform, um Smart--Firmware auf PPC--CPU auszutesten. In den Smart--Firmware--Quellen findet man als Besonderheit einen {}\emph{C--zu--Forth}--Compiler% \footnote{http://www.codegen.com/SmartFirmware/ccfcode.html% }, welcher aus C--Quellcode IEEE--1275--kompatiblen Forth--Quellcode erzeugt, welcher dann mit einem Tokenizer in FCODE (ByteCode) übersetzt werden kann. \subsection{OpenBOOT (SUN Microsystems)} OpenBOOT% \footnote{http://openbios.org/OpenBOOT% } ist die IEEE--1275--Implementierung von SUN Microsystems, welche sich in allen SPARC--SUN--Rechnern findet. Im Jahre 2006 hat SUN Microsystems die SUN4V--Architektur, besser bekannt unter dem Namen {}\emph{SPARC--T1 Niagara}, unter eine OpenSource--Lizenz gestellt. Teil dieser Freigabe war nicht nur die Prozessorarchitektur, sondern auch die dazugehörige IEEE--1275--Implementierung für diese Prozessoren. Die wenigsten Mitglieder der Forth--Gesellschaft werden eine T1--Sparc--Prozessor--Maschine besitzen, aber vielleicht gibt es den Prozessor in Kürze als FPGA, da Open Source. Die OpenBOOT--Quelldateien sind auf jeden Fall eine Besichtigung wert. \subsection{SLOF (SlimLine Open Firmware)} SlimLine Open Firmware, oder kurz SLOF% \footnote{http://www-128.ibm.com/developerworks/power/pa-slof/% }, ist die jüngste OpenSource--IEEE--1275--Implementierung. SLOF wurde von der IBM für Cell--Prozessor--Maschinen erstellt. Die Quellen von SLOF stehen auf den IBM--Seiten zum Download zur Verfügung, jedoch muss man sich für den Zugriff registrieren. \section{Forth auf alternativen, {}\emph{mini}--32/64--Bit--Betriebssystemen} Auch Forth--Programmierer möchten nicht immer das Rad wieder neu erfinden (ok, jedenfalls nicht {}\emph{jeder} Forth--Programmierer möchte das). Anstatt Forth auf großen, Mega-- oder Gigabytes an Haupt-- und Plattenspeicher verbrauchenden Betriebssystemen zu starten, kann Forth auch auf kleinen, sehr kompakten Alternativ--Betriebsystemen ausgeführt werden. Diese alternativen Betriebsysteme sind meist direkt in Assembler geschrieben und werden von einer kleinen, engagierten Gruppe von Entwicklern gepflegt. Anbei eine Auswahl dieser alternativen Systeme: \begin{itemize} \item DexOS% \footnote{http://www.dex4u.com/index.htm% } --- ein 100 KB Betriebssystem für i386+--Rechner. Es gibt schon eine Retro--Forth--Portierung \item KolibriOS% \footnote{http://kolibrios.org/% } --- ein kompaktes Betriebssystem aus Russland \item Solar\_OS% \footnote{http://www.oby.ro/os/% } --- ein kompaktes Echtzeit--Betriebsystem mit GUI. Benötigt nur 8 MB RAM, für 32-- or 64--Bit--x86--CPU. \item OcatOS% \footnote{http://octavio.vega.fernandez.googlepages.com/octaos% } --- ein kleines OS für 486 (und besser) mit 4MB Hauptspeicher, GUI. \item MenuetOS% \footnote{http://www.menuetos.net/% } --- OS in Maschinensprache mit Ethernet und TCP/IP \end{itemize} Alle diese Mini--Betriebssysteme lassen sich von einer 3.5''--Diskette starten oder schnell in einer Virtualisierungslösung wie VMWare, VirtualBox oder QEmu testen. \section{Fazit} Eine ausführliche Anwort auf die kurze Frage von Fred aus der vorherigen VD. Leider gibt es sie nicht, die ganz einfache Lösung: {}\glqq Nimm diese Software, klicke dort und hier, und in zwei Minuten bist Du am Ergebnis...\grqq. Stattdessen gibt es eine reichhaltige Auswahl von möglichen Lösungen, in den verschiedensten Schwierigkeitsstufen. Eine Einarbeitung in das Thema ist immer notwendig. Aber, hey, wir arbeiten mit Forth, {}\emph{klicki--bunti} ist woanders. Wir wollen {}\emph{verstehen}, was das System im Innersten zusammenhält. Oder nicht? \end{multicols} % \theendnotes \end{document}