Repository navigation
Use a distinctive KernelCI shell prompt in rootfs images and LAVA boot templates #2922
Description
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:
- https://gitlab.com/lava/lava/-/blob/master/lava_dispatcher/actions/boot/__init__.py
- https://gitlab.com/lava/lava/-/blob/master/lava_common/constants.py
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
- Update the Debos prompt overlay to emit
kernelci:$(pwd) #. - Update the LAVA boot templates used with Debos images to expect the new prompt.
- Do not list
/ #or~ #for images using the new prompt, because LAVA warns about every generic prompt in the list. - 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.
- Add or update tests that render the affected templates and verify the prompt selected for a Debos image.
- Rebuild a representative Debos rootfs and validate it in a real LAVA job.
- 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/.profileconfig/rootfs/debos/rootfs.yamlconfig/runtime/boot/u-boot.jinja2config/runtime/boot/efi.jinja2config/runtime/boot/ipxe.jinja2config/runtime/boot/depthcharge.jinja2config/runtime/boot/fastboot.jinja2config/runtime/boot/qemu.jinja2config/runtime/boot/barebox.jinja2config/runtime/boot/grub.jinja2config/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:
- A KernelCI maintainer coordinates publication of the replacement Debos image and retirement of the old images.
- 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
[-]rootfs prompt "/ #" produces a warning in lava[/-][+]Use a distinctive KernelCI shell prompt in rootfs images and LAVA boot templates[/+]