Bootloader Quality Of Life Improvements
Student: Connor Bailey (firstname.lastname@example.org)
- Mentor: Warner Losh (imp@)
The main goal of this project is to improve overall bootloader quality of life and user experience.
I quantify quality of life/user experience based on the idea that the "ideal" bootloader experience (for a large majority of users) is one where they boot/exit as quickly as possible.
For example, if a cat walks over the keyboard at the wrong time, a plain "OK" prompt is more likely to make someone unfamiliar hit the reset button than type "autoboot". Like a solid number of quality of life snags, this has an easy fix, but there's many situations like it which all contribute to the greater problem.
Approach to solving the problem
Lots of hands-on testing and trying to break things.
While the cat example is not very serious, it shows my general thought process. If there's a mistake which is easy to make, it should be easy to fix.
This list is not concrete, since I am expanding as I find more rough edges, however, the loader prompt changes are the core focus.
- Extending platform-specific key event to terminal escape translation
- Building out a system to bind keys/terminal escapes to actions at the loader prompt
- Providing a default set of bindings/actions for "vanilla" editing, such as home/end/left/right/delete
- Providing an option set of bindings/actions for emacs style editing
- Implementing actions for history manipulation
- Implementing actions for command/directory manipulation
- Better feedback for errors/invalid input
- Maybe some form of Lua completion
- Arrow key navigation on splash screen
- Command to re-enter splash screen from prompt (for accidental key-presses)
- Hand-holding messages at "easy mistake" points.
Week 2 edit: I'm taking a bit of a detour to try and tackle Bug 257018 which is related to the legacy PXE bootfile being too large and clobbering the stack/EBDA.
The schedule below has been updated to reflect this.
- Week 1: Development environment setup, both UEFI and legacy BIOS along with investigation into a better way to work on this without rebooting for every change
Weeks 2/3: Bug 257018
- Week 4: Translating UEFI and BIOS key events into terminal escapes passed through the console
- Week 5: Wire up conf files to assign keys to actions, parsing key/action pairs, potentially figure out a different syntax for mapping keys
- Week 6: Implement left/right arrow, home/end, delete and such
- Week 6: Phase 1 deadline
Week 7: Implement history keys and commands (investigate using pager for the actual history command)
- Week 8-9: File completion
- Week 10: Lua completion (only if nothing else needs attention, same for week 11)
- Week 11: Flashing cursor
- Week 11 ½: Final deadline
Generally, the only option is smoke-tests. "does the bootloader work" isn't a very complicated question, so my testing boils down to booting on as many VMs/configurations as possible.
This testing is manual, but I expect I'll get sick of it and end up automating it at some point.
N/A as of week 1.
Number of times I've forgotten DESTDIR= and accidentally "tested" changes on my host machine: 2.
These are just links I find useful, not background info/related work.