Skip to content

Use a distinctive KernelCI shell prompt in rootfs images and LAVA boot templates #2922

Description

@vigneshraman

Problem

KernelCI Debos rootfs images currently use a generic shell prompt:

/ #

Some newer images may instead show:

~ #

KernelCI lists these strings as expected login prompts in its LAVA job templates. LAVA warns that these prompts are not distinctive and may accidentally match ordinary boot or status messages:

The string '/ #' does not look like a typical prompt and could match
status messages instead.

Adding ~ # as another accepted prompt prevents login timeouts with newer BusyBox versions, but it does not resolve the warning. LAVA checks every listed prompt and currently considers prompts containing : or \ distinctive.

A false prompt match could cause LAVA to proceed before the device has actually reached a usable shell.

Original example: https://lava.collabora.dev/scheduler/job/19101745#L1878

LAVA prompt validation:

Desired outcome

Use this stable, KernelCI-specific prompt in Debos rootfs images:

PS1='kernelci:$(pwd) # '

At the root directory, it produces:

kernelci:/ #

The prompt is distinctive according to LAVA, unlikely to appear in normal kernel or userspace output, and can be matched exactly by generated LAVA jobs.

Buildroot-based images are outside the scope of this issue and should be handled in a separate follow-up issue because their configuration is maintained in another repository.

Implementation outline

  1. Update the Debos prompt overlay to emit kernelci:$(pwd) # .
  2. Update the LAVA boot templates used with Debos images to expect the new prompt.
  3. Do not list / # or ~ # for images using the new prompt, because LAVA warns about every generic prompt in the list.
  4. If the templates are also used by Buildroot images, make the expected prompt configurable per rootfs or job. Keep the legacy value only for Buildroot until its follow-up issue is completed.
  5. Add or update tests that render the affected templates and verify the prompt selected for a Debos image.
  6. Rebuild a representative Debos rootfs and validate it in a real LAVA job.
  7. Retire Debos images that use the old generic prompt when the new images are published. They do not need to remain compatible after the switch.

Relevant files

  • config/rootfs/debos/overlays/prompt/root/.profile
  • config/rootfs/debos/rootfs.yaml
  • config/runtime/boot/u-boot.jinja2
  • config/runtime/boot/efi.jinja2
  • config/runtime/boot/ipxe.jinja2
  • config/runtime/boot/depthcharge.jinja2
  • config/runtime/boot/fastboot.jinja2
  • config/runtime/boot/qemu.jinja2
  • config/runtime/boot/barebox.jinja2
  • config/runtime/boot/grub.jinja2
  • config/runtime/tests/watchdog-reset.jinja2

The legacy/generated rootfs configuration should also be checked for remaining hard-coded / # values.

Acceptance criteria

  • A newly built representative Debos rootfs displays kernelci:/ # at the root directory on its serial console.
  • Rendered LAVA jobs for Debos images list only prompts those images can emit.
  • LAVA detects the prompt and completes login successfully.
  • The LAVA job does not report the “does not look like a typical prompt” warning for the Debos prompt.
  • At least one QEMU LAVA job is run successfully and linked in this issue.
  • A hardware job is also checked if its prompt or login path differs from QEMU.
  • Debos images using / # or ~ # are retired when the replacement images are published.
  • Buildroot prompt migration is recorded in a separate follow-up issue.
  • Relevant automated tests pass.

Human participation required

This task intentionally needs two short human checkpoints:

  1. A KernelCI maintainer coordinates publication of the replacement Debos image and retirement of the old images.
  2. A lab operator runs a representative LAVA job and confirms from the serial log that the prompt is detected correctly.

These operational steps and the real-lab validation cannot be completed by repository automation alone.

Out of scope

  • Changing LAVA's upstream prompt-validation heuristic.
  • Changing the Buildroot prompt; track this in a follow-up issue.
  • Maintaining compatibility with retired Debos images that use the old prompt.
  • Refactoring unrelated boot or login handling.
  • Redesigning the rootfs publication process.
  • Changing the ChromeOS prompt unless testing shows it is affected.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions