kairos-io / kairos

:penguin: The immutable Linux meta-distribution for edge Kubernetes.
https://kairos.io
Apache License 2.0
1.08k stars 94 forks source link

:sparkles: iPXE installation via serial console on Equinix Metal #1004

Open mauromorales opened 1 year ago

mauromorales commented 1 year ago

With Equinix Metal you only get serial access to the console of the physical server. Hence, to deploy Kairos there over iPXE and have working console access, a couple of changes are needed:

This allows Kairos (openSUSE) to iPXE boot with serial access, as well as have working serial access upon the next boot from local HDD.

However, to install Kubernetes onto it, it downloads a new container OS image (e.g. Ubuntu), which overwrites /etc/cos/bootargs.cfg with its own version. This typically has boot options that are not compatible with serial access. Typically it’s wrong console= options and sometimes there’s also a vga=795 option in there that breaks serial access. We would like to find a way to manage the bootargs across OS images, so that we can add, edit and delete boot arguments as needed, without requiring the building of custom OS images.

Original request slack link

mudler commented 1 year ago

this is currently the options we have:

Can you try to set up the tty during installation by setting the options? does that work for you?

options:
  tty: ...
mudler commented 1 year ago

This sounds more as a spike for now - there is no clear action path, and there is no real bug hiding here, it's just how we setup the node.

mudler commented 1 year ago

One solution I see is:

we could have less defaults in the base image, and actually treat them as extra injected args if not provided by the user. That is, we don't specify anymore console=* options in the bootargs.cfg of Kairos, but instead the agent should detect if the user didn't provided any, and inject that in the oem configuration of the system (and during install).