baremetal callback: Add support for gbmc-bare-metal-prep target

This CL changes the LinuxBootDone RPC handler to asynchronously start a
new systemd target called gbmc-bare-metal-prep. This target will be
used to monitor the ethernet connection to the CN and detect when NERF
shuts down the PCIe connection.

After that point, the gbmc-bare-metal-active target will get started.

We now need these systemd operations to be asynchronous, which means
the LinuxBootDone handler will respond with an OK status before the
connection actually gets disabled.

Tested:
- Set bare metal flag /var/google/config-package/enable-bm.flag
- Power cycled the machine
- Set the bare metal instance info
  - echo 1 > /run/bm-instance/asset-tag1
  - echo 2 > /run/bm-instance/board-serial-number1
  - echo 3 > /run/bm-instance/family1
  - echo 4 > /run/bm-instance/product-name1
  - echo 5 > /run/bm-instance/sku1
  - echo 6 > /run/bm-instance/system-serial-number1
  - echo 000102030405060708090a0b0c0d0e0f > uuid1
- Issue Redfish command to boot the guest OS
- Confirmed that the BMC received LinuxBootDone, waited for the
  connection to the host to stop working, then disabled the ethernet
  connection.
PiperOrigin-RevId: 780739266
Change-Id: I6724e781d87220015f54093734b88efe83c2f627
1 file changed
tree: 2b3a16f4c080b262c9bf0aacf2161f203d5e532b
  1. service_files/
  2. src/
  3. LICENSE
  4. meson.build
  5. meson.options
  6. README.md
README.md

TODO(kkachana): Add developer workflow guide

gRPC Blob Handler

This is a general gRPC blob handler, receives blobs over gRPC and handles accordingly.

SMBIOS gRPC Blob

SMBIOS gRPC handler receives the SMBIOS from CPU and saves the file at /var/lib/smbios/smbios-remote-host-N and signals smbios app. smbios app parses the saved file and populated smbios objects.

Bios Settings gRPC Blob

Baremetal config gRPC Blob