kernelci / kernelci/kernelci-core
Use a distinctive KernelCI shell prompt in rootfs images and LAVA boot templates
- Dominant language
- Python
- Stars
- 120
- Forks
- 107
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 21
Description
## Problem
KernelCI Debos rootfs images currently use a generic shell prompt:
```text
/ #
```
Some newer images may instead show:
```text
~ #
```
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:
```text
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:
```sh
PS1='kernelci:$(pwd) # '
```
At the root directory, it produces:
```text
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.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with config/rootfs/debos/overlays/prompt/root/.profile and config/rootfs/debos/rootfs.yaml, then inspect the listed config/runtime/boot templates for hard-coded prompts. Run the relevant template-rendering tests and verify that Debos jobs select only the new prompt. Done requires a rebuilt Debos image, a successful QEMU LAVA job, and hardware validation where needed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- shell
- Domain
- ci-cd, devops, infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100