Initial deployment
coreboot installation
-
Copy the binaries to the BMC (assuming in the coreboot root directory):
scp build/bootblock.signed.ecc root@<BMC_IP>:/tmp/bootblock.signed.ecc scp build/coreboot.rom.signed.ecc root@<BMC_IP>:/tmp/coreboot.rom.signed.eccIf that file is not present, use
coreboot.rominstead -
Backup the HBB partition (for faster later recovery) by invoking this command on BMC:
pflash -P HBB -r /tmp/hbb.bin pflash -P HBI -r /tmp/hbi.bin -
Flash the binaries by replacing HBB partition (execute from BMC):
pflash -e -P HBB -p /tmp/bootblock.signed.ecc pflash -e -P HBI -p /tmp/coreboot.rom.signed.eccAgain, if that file is not present, use
coreboot.rominsteadAnswer yes to the prompt and wait for the process to finish.
-
Log into the BMC GUI again at
https://<BMC_IP>. -
Enter the
Server power operations(https://<BMC_IP>/#/server-control/power-operations) and invokewarm reboot. -
Go to
Serial over LAN remote console(https://<BMC_IP>/#/server-control/remote-console). -
Wait for a while until coreboot shows up:
-
Enjoy the coreboot running on Talos II.
Optional: In order to recovery the platform quickly to healthy state, flash the HBB partition back with:
pflash -e -P HBB -p /tmp/hbb.binpflash -e -P HBI -p /tmp/hbi.bin
Heads installation
-
Copy the Heads binary to the BMC (assuming in the Heads root directory):
scp build/zImage.bundled root@<BMC_IP>:/tmp/zImage.bundled -
Log in to the BMC:
ssh root@<BMC_IP> -
Flash the
BOOTKERNELpartition with Heads:pflash -e -P BOOTKERNEL -p /tmp/zImage.bundledAnswer yes to the prompt and wait for the process to finish.
-
Log into the BMC GUI at
https://<BMC_IP>/. -
Enter the
Server power operations(https://<BMC_IP>/#/server-control/power-operations) and invokewarm reboot. -
Go to
Serial over LAN remote console(https://<BMC_IP>/#/server-control/remote-console). -
Wait for a while until Heads shows up:
-
Enjoy the Heads running on Talos II.
Testing firmware images without flashing
BMC firmware v2.00+ allows testing new firmware images without flashing the
physical flash device. This makes testing and switching between two versions
(e.g. Hostboot and coreboot) much faster and safer. There are two ways of doing
so, here's a more convenient one that uses mboxctl:
-
Read original flash:
For earlier versions of coreboot port it is required to read from system that booted at least once, since some of the partitions are modified on the first boot. this is no longer necessary since v0.5.0.
root@talos:~# pflash -r /tmp/talos.pnorThis file may also be copied out of BMC to a secure place and serve as a backup of whole flash contents.
Keep in mind that tmpfs size is limited and exceeding that limit may result in unresponsive BMC, which in most severe cases requires hard power cycle.
-
"Flashing" modified partition(s):
This is similar to flashing real device with two changes: no need to erase the flash and target file must be specified. New command looks like this:
root@talos:~# pflash -f -P <partition> -p <partition>.bin -F /tmp/talos.pnorSince the real flash device is not used, backup can be skipped. The rest is like above:
# bootblock pflash -f -P HBB -p /tmp/bootblock.signed.ecc -F /tmp/talos.pnor # coreboot pflash -f -P HBI -p /tmp/coreboot.rom.signed.ecc -F /tmp/talos.pnor # Heads pflash -f -P BOOTKERNEL -p /tmp/zImage.bundled -F /tmp/talos.pnor -
Mount the file as flash device:
root@talos:~# mboxctl --backend file:/tmp/talos.pnorSometimes this command fails with timeout, in that case repeat it until it succeeds. Optionally, success can be tested with:
root@talos:~# mboxctl --lpc-state LPC Bus Maps: BMC MemoryBMC Memorytells that emulated flash is used instead of real one. Host doesn't see any difference (except maybe different access times and erase block size), it still reads and writes PNOR the same way as with physical device. -
Start the platform as described in previous sections and test it.
-
To get back to using real PNOR:
root@talos:~# mboxctl --backend vpnor Failed to post message: Connection timed out root@talos:~# mboxctl --lpc-state LPC Bus Maps: Flash DeviceEven though that command reports failure, it maps LPC back to flash device. This can be tested with
mboxctl --lpc-state. -
(Optional) Flash tested image to permanent storage:
root@talos:~# pflash -E -p /tmp/talos.pnor
The other method is described on
Raptor's wiki
and requires starting mboxd manually (still needs BMC firmware v2.00+). It's
worth to take a look there because sometimes mboxd stops working (mboxctl
errors every time) and that page shows how it can be started.