Map single-host port 10166 (instance 2) to host0 in BootTimeServiceImpl.

In `GrpcBlobMain`, three gRPC instances (`numInstances = 3`) are spawned
with offsets from `portNumber` (`10166`):
- `instance = 0`: port `10167` (`offset = 1`)
- `instance = 1`: port `10168` (`offset = 2`)
- `instance = 2`: port `10166` (`offset = 0`, single-CN default)

Because `gbmc-br` nftables rules (`50-gbmc-br-cn-redirect.rules` and
`50-gbmc-br.rules`) drop direct traffic to ports `10167-10168`
(`mark 0xff`) unless explicitly redirected for multi-host platforms,
single-host platforms (such as Velorum) communicate over port `10166`
(`instance = 2`).

While `BaremetalServiceImpl` and `BiosSettingsServiceImpl` check
`(instance + 1) == numInstances` to map `instance = 2` back to `0`
(`host0`), `BootTimeServiceImpl` omitted this check and mapped port
`10166` to `host2` (`/run/Boottime/host2` and
`/var/google/boottime/host2`), isolating loader boot times from the rest
of the BMC boot times stored under `host0`.

Update `BootTimeServiceImpl` to normalize `instance_number_` to `0`
when `(instance + 1) == numInstances`, matching `BaremetalServiceImpl`
and `BiosSettingsServiceImpl`. Also move the H1 header to line 1 of
`README.md` to satisfy `markdownlint` (`MD041`) in Kokoro presubmit and
export `boottime_test.cc` in `copy.bara.sky`.

PiperOrigin-RevId: 984494451
Change-Id: I4bff1bb94c7b7ad55e1dfd2ee815287fbe4e7fbb
3 files changed
tree: 29124b6e5806a470d4a6226501c7002af2be0d2d
  1. service_files/
  2. src/
  3. LICENSE
  4. meson.build
  5. meson.options
  6. README.md
README.md

gRPC Blob Handler

TODO(kkachana): Add developer workflow guide

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