OpenPOWER Firmware kompilieren

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

OpenPOWER Server enthalten kein proprietäres BIOS oder eine UEFI-Firmware, sondern sind mit einer Open Source OpenPOWER Firmware ausgestattet. Die Firmware kann entweder vor-kompiliert vom Hersteller bezogen werden, oder auch selbst kompiliert werden. In diesem Beispiel zeigen wir anhand eines 2HE OpenPOWER Single-CPU RP2112 Server, wie Sie die Firmware selbst kompilieren und auf das System flashen.

Bestandteile der Firmware

Die OpenPOWER Firmware besteht aus mehreren Komponenten, die allesamt auf GitHub.com/open-power zur Verfügung stehen. Details zu den Komponenten finden Sie im Artikel OpenPOWER - OpenPOWER Firmware.

Firmware vom Herrsteller im HPM Format

Der 2HE OpenPOWER Single-CPU RP2112 Server basiert auf dem OpenPOWER System mit dem Codenamen Habanero, welches in Zusammenarbeit mit TYAN entwickelt wurde. TYAN stellt für dieses System ein Firmware-Image im HPM-Format[1][2] bereit. Dieses Image kann über das IPMI Webinterface oder mittels ipmitool am Server eingespielt werden.[3]

Das Erstellen eines Firmware-Images im HPM-Format erfordert kostenpflichtige Tools des BMC-Herstellers. Bislang gibt es keine Open Source Tools zum Erstellen eines HPM Firmware-Images.[4] Ein selbst-kompiliertes PNOR Firmware-Image kann jedoch mit dem pflash Utility aus dem Linux Betriebssystem am OpenPOWER Server eingespielt werden, wie wir weiter unten im Detail beschreiben.

Firmware selbst kompilieren

Die Firmware für ein OpenPOWER System kann dank Cross-Compiler[5] auf einem herkömmlichen 64-Bit X86 Linux System kompiliert werden.

Zum Kompilieren der Firmware auf einem Ubuntu System installieren Sie zuerst die erforderlichen Pakete:[6]

sudo apt-get install cscope ctags libz-dev libexpat-dev \
  python language-pack-en texinfo \
  build-essential g++ git bison flex unzip \
  libxml-simple-perl libxml-sax-perl libxml2-dev libxml2-utils xsltproc \
  wget bc

Anschließend kompilieren Sie die Firmware (dieser Vorgang dauert je nach der Hardware-Ausstattung Ihres Buildsystems ca. 1-3 Stunden):

$ git clone --recursive https://github.com/open-power/op-build.git
$ cd op-build
$ . op-build-env
$ op-build habanero_defconfig
$ op-build

Nach Abschluss des Kompilierens finden Sie im Unterverzeichnis op-build/output/images die folgenden Firmware-Dateien:

$ ls -1sh
total 232M
 48K cappucode.bin
 65M habanero.pnor
 33M habanero_update.pnor
 55M rootfs.cpio
9,8M rootfs.cpio.xz
 56M rootfs.tar
1,1M skiboot.lid
272K skiboot.lid.xz
 15M zImage.epapr

Firmware einspielen

Die Firmware kann nun am OpenPOWER Server eingespielt werden. Dazu verwenden Sie das pflash Utility, das z.B. bei Ubuntu 16.10 oder RHEL 7.3 enthalten ist.

Alternativ können Sie pflash für Ihre eingesetzte Linux Distribution einfach selbst kompilieren (in unserem Beispiel verwenden wir Ubuntu 16.04 am OpenPOWER Server und kompilieren pflash am OpenPOWER Server selbst). Zum Kompilieren führen Sie die folgenden Schritte aus:[7]

$ git clone https://github.com/open-power/skiboot.git
$ cd skiboot/external/pflash
$ make

Vor dem Flashen der neuen Firmware empfehlen wir zur Sicherheit eine Kopie der aktuell vorhandenen Firmware zu erstellen:

$ sudo ./pflash -r original-pnor

Anschließend können Sie noch weitere Informationen zur Firmware abfragen:

$ sudo ./pflash -i

Nun können Sie Ihre selbst-kompilierte Firmware einspielen. Wir empfehlen dabei, nur die habanero_update.pnor Komponente einzuspielen. Im Falle von Bootproblemen startet das System nach 2 Fehlversuchen automatisch vom sogenannten Golden Image.[8][9]

Zum Einspielen des habanero_update.pnor Images verwenden Sie folgendes Kommando:

$ sudo ./pflash -e -p /home/tk/habanero_update.pnor
About to erase 0x00000000..0x02000000 !
WARNING ! This will modify your HOST flash chip content !
Enter "yes" to confirm:yes
Erasing...
[==================================================] 100% ETA:0s     
About to program "/home/tk/habanero_update.pnor" at 0x00000000..0x02000000 !
Programming & Verifying...
[==================================================] 100% ETA:0s     
tk@ubuntu-16-04:~/skiboot/external/pflash$

Einzelnachweise

  1. HPM.1 (en.wikipedia.org)
  2. Hardware Platform Management (HPM) Overview (www.picmg.org)
  3. How to upgrade BP012 BMC and PNOR to Channel official release version v1.0 (mitacfae.blogspot.com)
  4. Create a tool to produce HPM upgrade files from PNOR (github.com/open-power) op-build Issue 767
  5. Cross-Compiler (de.wikipedia.org)
  6. OpenPOWER Firmware Build Environment (github.com/open-power)
  7. Workaround for opal-prd using 100% CPU (www.flamingspork.com/)
  8. Host golden-side boot (github.com/open-power/docs)
  9. Switching from golden side pnor boot to primary side pnor boot is not happening for habanero machine. (github.com/open-power) op-build Issue 470 - Enthält Erläuterungen zur Funktionsweise des Golden Images

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Communications / Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxCon, OSDC, OSMC, LinuxTag u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

Bootprozess eines OpenPOWER Servers
OpenPOWER Verbindung auf serielle Konsole
Ubuntu 16.04 auf OpenPOWER via DVD installieren