Sooo, ich hab
mein kleines Projekt auch in neue Regionen vorangetrieben an den letzten beiden Abenden. Ob das wirklich eine gute Sache ist, wird sich aber erst weisen
Zuerst hab ich es mal geschafft, den BMC komplett zu schrotten. Dafuer hat es gereicht, den via TFTP-Chainloading gebooteten Kernel zu crashen, wonach der AMI-Gigabyte u-boot erstmal in irgendeiner Recovery-Routine seine gesamte Boot-Konfiguration ausgeNULLt hat, und der BMC dadurch in einer Art Bootloop (ohne UART-Konsole) gefangen war. Keine Interaktionsmoeglichkeit via UART mehr, kein Webinterface, kein `ipmitool` am Host, nix. Das war schlecht.
Aber dann war es auch wieder gut, weil es stellt sich heraus, dass beim AST2500 der Bootloader gewisse Mitigations gegen wirklich schlimme Schwachstellen in der Host/BMC-Kommunikation setzt (die z. B. durch
culvert ausgenutzt werden koennen), die somit entfielen, und womit der Host ploetzlich privilegiert mit dem AST2500 kommunizieren kann, und da auf Schnittstellen und Speicherbereiche kommt, die mit korrekt-gebootet-habendem-AST2500 unerreichbar sind. So konnte ich dann auch mal rausfinden, was man denn genau braucht, um via culvert das ROM-Image des BMC zu dumpen, auch wenn ich noch nicht 100%ig begriffen habe, was das entscheidende Moment ist, und was culvert noch dazulernen muesste, um es ohne einen vorherigen Durchlauf von `gigaflash_x64` alleine zu schaffen. Aber kommt wohl noch
Es stellt sich uebrigens raus, dass man den BMC komplett lahmlegen kann (so lange nicht mal der Bootloader irgendwelche Initialisierungsroutinen durchfuehren kann) und der Host TROTZDEM betriebsbereit ist/sein kann. Aber wie gesagt dann und nur dann, wenn sogar u-boot schon beim Starten scheitert, und man im BIOS/UEFI/CMOS-Setup den "BMC Watchdog" ausschaltet, der sonst dafuer sorgt, dass 120 Sekunden nach dem POST ohne BMC Schicht im Schacht ist.
Letztendlich hab ich es mittels culvert auch geschafft, das schon vor geraumer Zeit gebackene OpenBMC ast2500evb-phosphor-Image auf den BMC SPI ROM zu flashen, und das bootet auch voellig anstandslos auf dem Board: Man bekommt auf der UART-Konsole die serielle Konsole des gebooteten Linux 6.6.30, das OpenBMC-Upstream-Webinterface laeuft an, zwei sshd-Instanzen (Ports 22 fuer BMC-SSH und 2200 fuer Host-SOL, afaiui) Logins via root:0penBmc klappen alle - nur ist (wohl wegen der fehlenden i2c-Konfiguration et al., davon habe ich aber noch quasi gar keine Ahnung leider) nichts davon funktional, und man kann den Host mit einem OpenBMC-gebootet-habenden BMC leider gar nicht starten.
Ich stehe inzwischen in einem gewissen Austausch mit dem culvert-Autor und der OpenBMC-Mailingliste, und wenn man mir dort wie bisher freundlich und extrem kompetent weiterhelfen kann, koennte ich mir durchaus vorstellen, dass hier noch mehr geht. Jetzt werde ich mal versuchen, eine definitiv funktionierende Routine zu erarbeiten, wie man die Stock-FW wieder auf den BMC-SPI-Flash bringt, und dann den ganzen Weg nochmal zu gehen versuchen - also ein Prozedere zu finden, um ein OpenBMC-Image ohne meine Zwischenstationen auf den BMC mir Original-FW aufzuflashen.