Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Graphical boot selection #80
This adds a GUI allowing the user to select a generation.
The current GUI is expected to be run as the "recovery" image.
This is only the most basic implementation. It does not allow
This even gives a pseudo-AB system for non-AB systems. The user can flash a new boot.img on top of their boot partition, and if it fails to boot, boot to the system using the recovery menu.
To reduce the footprint of the init, this splits the
Splitting the interpreter does allow us to add more "applets". Those "applets", in turn, allow us to add more in-depth applications implemented using the same scripting environment.
Other notable changes
The mruby builder infrastructure is a bit sturdier. Rather than rely on a user-provided list of flags, for the final "stub" build, it uses saved information from the actual build. No flags should be missing.
Additionally, the stub now documents
To implement later:
This will be required for pinebook-pro usage (which is a goal). It could also be nice with volume up/down + power for phones with broken digitizers. This can be merged without keyboard control support as it's not causing a regression.
In theory it's supported, in practice it's not. LVGL supports mouse input. It seems the evdev driver only supports touch input, though this is unverified. This would be required for QEMU, and helpful for laptop use.
To implement quickly:
This is to be used on e.g. chromeos tablets, or non-android systems (e.g. pinephone, pinebook pro). Holding one of [volume up, volume down, right control, left control] should act as if recovery was requested.
Right now they still live in the same folder. A small mark of their past.
There is a "simulator" for the boot GUI. This is how it was developed, not on-device, but in a window. It seems something happened and it doesn't work quite right anymore. This needs to be investigated, and fixed. Then, once fixed, be made available for easier development/testing.
Future somewhat related improvements
This will be used by `makeBin` so that using mrbgems requiring external dependencies stays ergonomic.
This ensures no dependencies for a gem end up after `mruby-require`. This is important since anything after `mruby-require` is implicitly built as a shared library.
This needs the following commits where the init script will now tell the loader to load init.mrb