Johannes Wischert ist einer der sechs Studenten, die im Rahmen des Google Summer of Code 2009 an Haiku arbeiten werden. Sein Projekt ist die Portierung auf die ARM Architektur. In seinem Blog lassen sich Details zu den dafür anvisierten Zielen nachlesen, außerdem erfahren wir dort, dass er 25 Jahre alt ist, Computerwissenschaften studiert und schon von Kindesbeinen an leidenschaftlich programmiert.
Als Teil der von mehreren Haiku News Seiten veranstalteten GSoC Interview Reihe, hat sich Johannes die Zeit genommen einige Fragen zu beantworten. [Eine englische Übersetzung gibt es bei IsComputerOn.]
Herzlichen Glückwunsch zu Deiner erfolgreichen GSoC Bewerbung! Mist, jetzt musst Du auch noch den ganzen Sommer hart arbeiten, was? :)
Ich hab eigentlich nicht wirklich erwartet, dass ich genommen werde, geschweige denn, dass mein Vorschlag ein so positives Echo auslösen würde. ;) Ich bin mir durchaus bewusst, dass das eine Menge Arbeit ist, die da auf mich zukommt, aber zum Glück hab ich auch genügend Zeit um sie zu erledigen.
Hast Du schon alles, was Du für die Portierung brauchst?
An Hardware konzentriere ich mich auf das Beagleboard, das mir genialerweise von Haiku Inc. zur Verfügung gestellt wird. Softwareseitig bietet Haiku eigentlich alles was ich brauche und sollte sich hoffentlich ohne größere Probleme auf ARM/Beagleboard portieren lassen. Und sonst brauche ich nur viel freie Zeit, die ich ja dank dem Geld von Google haben werde...
Du hast ja bereits Erfahrung mit der Portierung des Nano Kernels SmartOS von MSP430 zu SuperH. Wie schätzt Du dazu im Vergleich den Haiku Port ein?
Da es sich bei SmartOS "nur" um einen Nano Kernel gehandelt hat, war die Code Menge natürlich viel geringer und übersichtlicher als bei Haiku. Dafür waren dort aus Performance Gründen viel größere Teile Plattform spezifisch geschrieben und eine Portierung auf andere Systeme war nicht wirklich vorgesehen.
Haiku hat den Vorteil, dass durch die Portierung auf m68k und andere Prozessoren die plattform-spezifischen Teile schon zum großen Teil sauber von den plattform-unspezifischen getrennt wurden. Dadurch wird mir natürlich die Arbeit stark erleichtert. Auf der anderen Seite ist Haiku um einiges komplexer als SmartOS, da dort z.B. keine MMU genutzt wurde usw.
Als erstes wird der Kernel portiert und dann das mindeste an Hardware Treiber, also SD-Karte und serielle Konsole. Wenn ich noch Zeit habe am Ende wird auch noch der Framebuffer und der USB-Controller Treiber geschrieben, aber das kann ich jetzt schlecht einschätzen. Notfalls halt nach dem GSoC. ;)
Wie muss man sich den Arbeitsablauf bei so einer Portierung vorstellen?
Zurzeit arbeite ich unter Linux und habe mir einen haiku-arm Crosscompiler gebaut und lass den Code auf einer leicht modifizierten Version von qemu laufen. Ich werd bald ein Blogeintrag auf Haiku-os.org veröffentlichen wie man das macht. Mit qemu lade ich U-Boot und daraus kann ich dann Dateien von der simulierten SD-Karte laden. Das dürfte sich 1:1 auf das echte Beagleboard übertragen lassen. Ausgaben erfolgen über den seriellen Port und es ist auch möglich qemu mit dem gdb zu koppeln, damit man Haiku direkt beim Laufen beobachten kann. Das wird später wahrscheinlich auch über die JTAG Schnittstelle bei der echten Hardware gehen, aber das hab ich mir noch nicht so richtig angeschaut. ;)
Zuerst muss ein minimaler Kernel gebaut werden, der nur die nötigsten Methoden beinhaltet und dann werden nach und nach alle weiteren hinzugefügt. Zurzeit hab ich mir den minimalen Kernel ohne irgendwelche sinnvolle Funktionalität aus dem m68k Port zusammen kopiert, den ich nach und nach mit sinnvollem Code fülle. Danach kann ich langsam anfangen das ganze auf qemu zu testen. Dazu muss ich aber noch den U-Boot Loader bauen, was dank der U-Boot API nicht allzu schwierig sein sollte. Wenn der Kernel an sich startet, kann ich dann mich um Treiberunterstützung kümmern.
Angenommen Du schaffst alles was Du Dir für den GSoC vorgenommen hast, wieviel Arbeit würde es noch brauchen, damit Haiku auf ARM identisch wie auf x86 läuft?
Die meiste Software lässt sich ohne Probleme portieren (SSE z.B. wird zum großen Teil nur in "externer" Software wie ffmpeg genutzt und da gibt es meist schon fertige Ports). Endianess ist zumindest auf dem Beagleboard kein Problem, da der ARM dort mit littleendian läuft. Wie es mit anderen Boards aussieht kann ich noch nicht sagen, da es ARM sowohl in little als auch big Endian gibt...
Also, wäre ich als Haiku-Enduser, sagen wir, Ende nächsten Jahres mit einem neuen ARM-Netbook glücklich?
Zu einem richtigen Haiku fehlt dann noch hauptsächlich der Grafik Treiber und der ist recht schnell von Linux portiert (leider ohne 3D, weil das soviel ich weiß noch closed source ist) und der Treiber für den USB-Controller, der auch nicht so lang dauern dürfte...
Bei Netbooks kommen wahrscheinlich noch einige Spezialtreiber dazu. Das Touch Book z.B. ist nach Angaben vom Hersteller an das Beagleboard angelehnt und dürfte recht leicht anzusprechen sein. Je nach dem wie sehr mich das Studium dann noch in Anspruch nimmt, könnte es Haiku ARM Netbooks vielleicht schon im Laufe dieses Jahres geben. Aber darauf lass ich mich jetzt nicht festnageln. ;)
Ich werde mir jedenfalls ein ARM Netbook holen, früher oder später.
Sind einige Komponenten wie Tracker oder das MediaKit vielleicht auch zu "fett", um auf ARM zu laufen?
Ich denke nicht, dass Tracker und MediaKit zu viel für den ARM-Prozessor wären, da der auf dem Beagleboard mit 600Mhz läuft und auch unter Linux problemlos Fullscreen Videos abspielen kann. OK, die nutzen auch den eingebauten DSP, aber das wird hoffentlich auch unter Haiku früher oder später der Fall sein.
Ein großer Teil der Arbeit, um den Port in ein vollwertiges Haiku zu verwandeln, ist es die Hardware Treiber zu schreiben. Dabei hat man aber beim Beagleboard den Vorteil, dass der Großteil der Peripherie über USB angeschlossen wird und man so nur einen Treiber für den Controller braucht und dann die ganze von Haiku unterstützte USB-Hardware nutzen kann.
Wie bist Du auf den ARM Port als GSoC Projekt gekommen?
Auf den ARM-Port bin ich gekommen weil ich mal wieder Haiku ausprobiert hab und ich deswegen in den #haiku IRC Channel gekommen bin. Dort hab ich zum Spaß vorgeschlagen Haiku auf MIPS zu portieren (wäre auch kein uninteressantes Projekt, da dank dem Chinesischen MIPS Clone Longsoon auch dort interessante Geräte rauskommen. Aber das ist ein anderes Thema...). Nach und nach sind wir halt drauf gekommen, dass ARM eigentlich sinnvoller wäre. Urias McCullough erwähnte, dass er ein Beagleboard an den geben würde, der Haiku drauf portieren würde...
Deswegen habe ich mir angeschaut wie kompliziert so ein Port wäre und hab die begonnene Toolchain zum Laufen gebracht und mal ein bisschen rumgespielt...
Als ich dann mal auf der Haiku-os.org Webseite war, hab ich gesehen dass Haiku wieder beim Google Summer of Code dabei ist und da ich da eh teilnehmen wollte, hab ich das ARM-Projekt eingereicht.
Auf Haiku selbst bin ich aber schon viel früher gekommen, als ich mich mal nach alternativen Betriebssystemen umgeschaut hab (hieß damals noch OpenBeOS...). BeOS selber kannte ich schon länger. Das hab ich mal auf einer Chip CD gefunden (jeder war mal Jung und unwissend ;) ) und ein bisschen mit rumgespielt. Aber da ich damals kein Internet daheim hatte ist mir das nach einiger Zeit langweilig geworden.
Jeder Bewerber musste sich aus dem Bugtracker ein Ticket raussuchen und es lösen. Dazu muss man sich natürlich eine funktionierende Entwicklungsumgebung einrichten und sich mit dem Haiku Code beschäftigen. Wie lief das bei Dir so?
Ich hatte die Entwicklungsumgebung schon früher öfters mal installiert, also war das an sich nicht wirklich schwierig. Beim ersten Mal musste ich allerdings schon eine zeitlang nach den richtigen Tutorials suchen. Die werden aber, soweit ich weiß, in der nächsten Zeit zu einem aktualisierten Dokument zusammengefasst. Allgemein hat die Haiku Seite das Problem, dass sie zwar viele interessante Informationen enthält, diese aber schwer zu finden sind...
Ansonsten lief alles ohne Gefrickel und Probleme. ;)
Wie sieht\'s mit Haikus Bewerbung als Mentor Organisation aus. Könnte man da noch was verbessern, um Haiku bei kommenden GSoC Bewerbungen noch attraktiver zu machen?
Ich hab mir ein paar Projekte anderer GSoC Mentoren angeschaut, aber da ich sowieso den ARM-Port machen wollte, hab ich eigentlich nur mit Haiku wirklich Kontakt aufgenommen. Dort lief alles super! Meine Fragen wurden schnell beantwortet und als ich meine Bewerbung bei der Google Summer of Code Webseite eingereicht hatte, bekam ich auch schnell konstruktives Feedback.
Irgendwelche Tips für potentielle zukünftige GSoC Studenten?
Lasst euch nicht einschüchtern, soviel besser sind die anderen auch nicht ;). Auch wenn es nur 1000 Plätze insgesamt gibt, so unwahrscheinlich ist es nicht da reinzukommen.
Danke, Johannes, für das schöne Interview. Viel Erfolg und viel Spaß bei Deinem Summer of Code!
Keine Kommentare:
Kommentar veröffentlichen