How To: Chromium OS Build 999.999.32309.211410-a1

Nun denn, da doch Google den Sourcecode von Google Chrome OS bzw. Chromium OS am Donnerstag freigegeben hatte, hatte ich mir als eine Art Projekt vorgenommen, mir das OS mit den freigegebenen Bestandteilen selbst mal zusammenzubauen. Nach einigen vielen Experimenten gestern ist es mir heute endlich gelungen. Hier möchte ich meine Erfahrungen mit euch teilen und eine Art Leitfaden dazu veröffentlichen. Dazu habe ich verschiedenst gewonnene Informationen zusammengetragen und die Anleitung Schritt für Schritt so aufgebaut, wie es bei mir geklappt hat. Mein Testgerät war ein Dell Inspiron Mini 9 mit Ubuntu 9.10 Karmic Koala. WLAN funktioniert unter Chromium OS mit diesem Gerät übrigens nicht, da der Treiber nicht mitgeliefert wird. Darum kümmere ich mich allerdings ein anderes Mal.


Die Voraussetzungen zum Bau von Chromium OS ist ein Linux-Betriebssystem, bevorzugt Ubuntu 9.10 Karmic Koala (die meisten anderen Systeme sollten das auch schaffen, jedoch sollte die Software auf dem neuesten Stand sein). Auf diesem System braucht man auf jeden Fall root-Access und es sollten etwa 3 bis 4 GB Platz vorhanden sein. Falls man das fertige Chromium-System von einem USB-Stick booten möchte, braucht man noch einen ebensolchen, ich habe hier ein 4 GB-Modell von SanDisk.

Der erste Schritt ist das Installieren diverser Software, die man zum Entwickeln benötigt. Das erfolgt im Terminal (der Hauptarbeitsbereich der nächsten Stunden) ganz einfach mit:
$ sudo apt-get install subversion pkg-config python perl g++ g++-multilib bison flex gperf libnss3-dev libgtk2.0-dev libnspr4-0d libasound2-dev libnspr4-dev msttcorefonts libgconf2-dev libcairo2-dev libdbus-1-dev wdiff lighttpd php5-cgi sun-java6-fonts
Anschließend erstellt man ein Verzeichnis, in dem man als normaler User Schreibrechte hat. Also am bestem im Home-Verzeichnis irgendwo. Dorthin wechselt man dann auch gleich mal. Ich habe das einfach so gemacht:
$ mkdir ~/chrom
$ cd ~/chrom
Als nächstes braucht man den Chromium-OS-Sourcecode. Den lädt man sich in das soeben erstellte Verzeichnis herunter und entpackt ihn dort. Simpel mit:
$ wget http://build.chromium.org/buildbot/archives/chromiumos-0.4.22.8.tar.gz
$ tar xvzf chromiumos-0.4.22.8.tar.gz
Da es den Browser Chromium bereits als Binärpaket gibt, muss man diesen nicht extra kompilieren, daher laden wir den auch erst später runter. Um uns jetzt die Arbeit ein wenig einfacher zu machen, legen wir einen Symlink an.
$ ln -s ~/chrom/chromiumos-0.4.22.8 ~/chromiumos
Jetzt sind die Vorbereitungen zu Ende und es geht ans Eingemachte. Da sich alle Skripte, die wir benötigen, netterweise an einem bestimmten Ort befinden, bewegen wir uns jetzt mal zu eben diesem.
$ cd ~/chromiumos/src/scripts
Damit wir Chrome OS bauen können, brauchen wir ein lokales Repository mit den Paketen für die Chroot-Umgebung und das Image. Damit klar ist, dass nur das geholt wird, was wir brauchen, haben die Entwickler bereits ein nettes kleines Skript dazu geschrieben, welches wir dann auch gleich mal ausführen:
$ ./make_local_repo.sh
Das legt das lokale Repository an und lädt gegebenfalls die Pakete aus dem Internet nach. Internetverbindung ist also zwingend erforderlich. Da die wichtigsten anderen Skripte darauf bestehen, in einer chroot-Umgebung ausgeführt zu werden, müssen wir diese jetzt erstellen. Dafür gibt es netterweise auch wieder ein Skript.
$ ./make_chroot.sh
Nun denn. Jetzt kommen wir in die Endphase des Projekts. Wichtig ist nun, dass wir den Browser einbauen, den wir ja nicht selbst zusammenbauen. Immerhin ist er als Binary verfügbar. Das gibt es an dieser Stelle, wo man sich das neueste holen sollte. Bei mir war es die fett markierte Version 32789.
$ mkdir -p ~/chromiumos/src/build/x86/local_assets
$ cd ~/chromiumos/src/build/x86/local_assets
$ wget http://build.chromium.org/buildbot/snapshots/chromium-rel-linux-chromiumos/32789/chrome-linux.zip$ mv chrome-linux.zip chrome-chromeos.zip
Nun denn. Die Chroot-Umgebung ist erstellt, der Browser auch da, jetzt können wir uns eigentlich in die Chroot-Umgebung hineinversetzen. Das erfolgt mittels:
$ cd ~/chromiumos/src/scripts
$ ./enter_chroot.sh
Sollte das nicht funktionieren und nach dem mount der Umgebung direkt wieder der umount erfolgen, dann kann man noch folgendes ausprobieren:
$ sudo mkdir -p ~/chromiumos/chroot/home/root/
$ sudo mkdir -p ~/chromiumos/chroot/home/root/trunk
Befinden wir uns einmal in der Chroot-Umgebung, kann eigentlich schlecht was schief gehen, wenn man bisher alles richtig gemacht hat. Um später am System eine Art Hintertür zu haben, erschaffen wir uns eine solche.
# ( cd ../platform/pam_google && ./enable_localaccount.sh USERNAME )
# ./set_shared_user_password.sh
Das erschafft einen User USERNAME mit einem wählbaren Passwort. Nun denn, an die Arbeit. Jetzt darf der Prozessor mal ein bisschen rechnen. Wir bauen den Schorschkot. Backe, backe Kuchen...
# cd /home/root/trunk/src/scripts
# ./build_platform_packages.sh# ./build_kernel.sh
Beides sollte auf einem Intel Atom N270 1,6 GHz etwa 2 Stunden dauern, wobei ich das nicht genau sagen kann, weil ich zwischendurch nicht ganz aufgepasst habe. Sind beide Bauarbeiten ohne Fehler abgeschlossen, kann man eigentlich schon von einem Erfolg sprechen. Nun kann man das Image bauen, aus welchem man weitere Produkte erstellen kann. Das dauert noch einmal etwa 15 bis 30 Minuten.
# ./build_image.sh
Dieses Image kann man dann beispielsweise auf einen USB-Stick übertragen. Das macht man auf jeden Fall außerhalb der chroot-Umgebung. Diese kann man jetzt auch verlassen, dann befindet man sich ja auch wieder gleich im richtigen Pfad (~/chromiumos/src/scripts). Bei mir war dieser USB-Stick /dev/sdb, bitte je nach Bedarf anpassen, wissen sollte man es auf jeden Fall. Die Version war bei mir genau die gezeigte, das kann natürlich variieren und sollte dementsprechend angepasst werden.
$ ./image_to_usb.sh --from=~/chromiumos/src/build/images/999.999.32609.200920-a1/ --to=/dev/sdb
Möchte man jedoch, anstatt Chromium OS von einem USB-Stick zu booten, dieses in VMware oder Virtualbox starten, kann man das ebenso einfach erledigen. Man installiert erstmal qemu, danach baut man das VMware-Image:
$ sudo apt-get install qemu
$ ./image_to_vmware.sh --from=~/chromiumos/src/build/images/999.999.32609.200920-a1/ --to=~/chromiumos-999.999.32609.200920-a1.vmdk
Nun denn. Wir sind fertig. Jetzt kann man den Rechner herunterfahren und mit eingestecktem USB-Stick neu booten bzw. das Image in Virtualbox verwenden. Dazu legt man einfach eine neue Linux-VM an, wählt als Distribution Ubuntu und als Festplatte das soeben erstellte Image. Für gewöhnlich sollte nach ein paar Sekunden (auf dem Dell hier sind es etwa 16) Folgendes zu sehen sein. Viel Spaß damit!


oder so:


Das @ für den Usernamen (Google-Account name@googlemail.com) befindet sich übrigens auf SHIFT+2 ;-)



Weitere Informationen gibt es hier. Jedoch führte diese Anleitung nicht zum Erfolg, weswegen ich hier meine eigene geschrieben habe. Wichtig ist - und das ist wohl der Unterschied zu hack2learn, dass man am Anfang ein Verzeichnis wählt, in das man auch als normaler User schreiben kann. Denn ./make_chroot.sh funktioniert nicht, wenn man es mit sudo ausführt. Auch diese offizielle Anleitung ist sehr hilfreich, leidet aber unter dem gleichen Problem.


Dieses How To gibt es auch hier.

Anregungen, Bemerkungen oder vielleicht auch Fragen (keine Antwortgarantie^^) hier oder als Kommentar auf meinem Blog sind natürlich wie immer willkommen.
 
Zuletzt bearbeitet:
Sieht sehr nett aus :]
$ sudo apt-get install subversion pkg-config python perl g++ g++-multilib bison flex gperf libnss3-dev libgtk2.0-dev libnspr4-0d libasound2-dev libnspr4-dev msttcorefonts libgconf2-dev libcairo2-dev libdbus-1-dev apt-get install wdiff lighttpd php5-cgi sun-java6-fonts

Ich glaube da ist ein apt-get install zu viel
 
Beides sollte auf einem Intel Atom N270 1,6 GHz etwa 2 Stunden dauern,
Die folgende Frage könnte recht dumm sein: Warum nimmst du einen Rechner mit Atom CPU um das zu kompilieren? Aus deinem Blog geht hervor, dass da noch irgendwo ein mächtigeres Hauptsystem stehen muss.
 
Oh, du stellst tatsächlich eine sehr interessante Frage. Das ergab sich aus mehreren Gründen. Erstens war es, als ich angefangen habe, mich mit Chromium OS zu beschäftigen, bereits etwa 23 Uhr abends. Als ich mich dann entschloss, das Ding direkt mal zu kompilieren, war es bereits um 0 Uhr. Da meine - wie du sie nennst - mächtigere Maschine leider auch mächtig laut ist (zumindest zu laut, um daneben schlafen zu können), entschloss ich mich, das über Nacht auf dem lautlosen Netbook zu machen. Ich unterhielt mich gleichzeitig in #hackerboard mit argos und den interessierte es, wie lange der Vorgang in etwa braucht. Obwohl ich am nächsten Morgen feststellen musste, dass es nicht geklappt hatte, machte ich trotzdem auf dem Netbook weiter. Dass ich den Nachmittag über nicht zu Hause war und nur das Netbook mitnehmen konnte, bekräftigte diesen Entschluss natürlich. Darum das alles auf dem Intel Atom ;-)
 
Zurück
Oben