1
1
mirror of https://github.com/NixOS/mobile-nixos.git synced 2024-12-18 05:21:47 +03:00
Commit Graph

50 Commits

Author SHA1 Message Date
Samuel Dionne-Riel
200e5aac1b boot/init: Kexecing keeps the splash as-is 2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
b82492a565 boot/init: Use kexec only in stage-0. 2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
6ad92214da boot/init: switch_root can and will kexec
This is partly complete; we need to handle the situation where **only**
stage-0 should kexec into the next system.

This is yet to be implemented, but will be done through a configuration
that transforms the current bootloader-launched stage-1 into a stage-0,
while keeping the on-disk stage-1 stage-1.
2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
812b02dd32 boot/init: Fix partial teardown for splash
`#quit` would leave the `@pid` variable around, which in turn meant that
calling `#kill` after would fail since the process was already gone.
2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
2ab969db37 boot: LUKS errors are "controlled"
This means that we shouldn't raise an exception, but rather fail
outright. The background being black means that things *failed
successfully*, as expected.
2020-11-30 20:45:03 -05:00
Samuel Dionne-Riel
67957f4972 boot/init: Move recovery detection to an abstraction layer 2020-11-22 16:53:03 -05:00
Samuel Dionne-Riel
841b835b05 boot/init: update comments in switch_root
It better describes the reasoning for the keys than the previous
"off-the-cuff" comment I left myself.
2020-11-22 16:48:32 -05:00
Samuel Dionne-Riel
0037614821 boot/init: Use the new evdev library
It still uses evdev internally, but first let's change the interface,
*then* change the implementation details.
2020-11-22 16:48:32 -05:00
Samuel Dionne-Riel
dbfbdf385b boot/init: Add error title in addition to code 2020-11-12 23:13:20 -05:00
Samuel Dionne-Riel
aa1c2f3744 boot/init: Harmonized failure methods
- Code is now more of a title
 - Only one code path exists to the applet
2020-11-12 23:13:20 -05:00
Samuel Dionne-Riel
d41c454514 boot/init: Add Devices dependency type
It's a Files dependency, but with just a bit more user friendliness when
used in an error message.
2020-11-07 20:13:31 -05:00
Samuel Dionne-Riel
31f45c5baa boot/init: Add user-friendlier names to dependencies 2020-11-07 20:13:31 -05:00
Samuel Dionne-Riel
a819a8930e boot/init: Cleanup failure
- exit after everything happened, just in case
 - exit the progress display
 - allow a custom delay to be set
2020-11-07 20:13:31 -05:00
Samuel Dionne-Riel
36aa305f27 boot/init: Add LUKS device support 2020-11-07 19:22:33 -05:00
Samuel Dionne-Riel
eaf8fa9dde boot/init: Long running tasks can export a label
With the same tooling we will be able to ask for a throbber or some
other kind of work indicator.
2020-11-07 19:22:33 -05:00
Samuel Dionne-Riel
c80476a047 boot/init: Rework Progress into a "state stash"
This way we really only update the current state bit we want to affect.
2020-11-07 19:22:33 -05:00
Samuel Dionne-Riel
e891e2f752 boot/init: Minimal changes required to continue working
These changes implement the different protocol changes.
2020-11-07 19:22:33 -05:00
Samuel Dionne-Riel
d929d798fe boot/init: auto-resize task shows a message 2020-11-06 16:30:22 -05:00
Samuel Dionne-Riel
bd030cbe73 boot/init: Add required plumbing to control the forked process 2020-11-06 16:30:22 -05:00
Samuel Dionne-Riel
9b85943be1 boot/init: Add progress tracking 2020-11-06 16:30:22 -05:00
Samuel Dionne-Riel
99a7671769 boot/init: Ensure graphics setup is also a UX priority 2020-10-27 15:23:40 -04:00
Samuel Dionne-Riel
b38caeec1a boot/init: Fixup for $PROGRAM_NAME now pointing to the applet
We know that the loader is at "/loader" in our initrd. Use that
knowledge.
2020-05-31 18:54:07 -04:00
Samuel Dionne-Riel
c35116cdcd boot/init: Use the new boot/splash applet 2020-03-09 17:34:31 -04:00
Samuel Dionne-Riel
20f2cbcc56 init: Interrupt boot when some keys are held. 2020-02-29 16:10:00 -05:00
Samuel Dionne-Riel
d79466747d boot/init: Launch boot GUI when asked 2020-02-29 16:10:00 -05:00
Samuel Dionne-Riel
3b9d04d3bd stage-1: workaround issue with e2fsck successfully failing 2020-02-28 23:14:09 -05:00
Samuel Dionne-Riel
95016e1250 boot/init: Add autoResize support 2020-02-03 21:58:22 -05:00
Samuel Dionne-Riel
67f907c952 initrd: System.write for login environment tasks 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
75020873c8 initrd: System.write for graphics tasks 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
15964966b6 boot/init: Mounts will only wait for absolute paths 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
cd74c94fde boot/init: De-hardcode /mnt 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
7dff001d75 boot/init: Prefer running UX tasks first
This ensures graphical progress is shown ASAP when dependencies are
equally likely to run.

Otherwise, when the graphical step was ready, and switchroot about to
run, the shell step could run before the splash. This means that, in
practice, a long running task like e2fsck could have prevented the
splash to show. It doesn't make sense to make the other tasks depend on
a splash task!

There is no intention to implement any other special-cased ordering. If
there is the need to, it might mean that there is a deficiency in the
design.
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
a3c8cd78e8 boot/init: Sort tasks before running them
This is partly to reduce the amount of loops it needs to run, but mainly
to control the order rather than rely on the order they were added in.

The control of order seems weird in a dependency-based system, but it'll
be used mainly for one thing in the next commit...
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
bdee7cf0e0 boot/init: Removes SingletonTask special dependency
Instead, rely on targets.

Additionally removes the "Boot" special dependency which only made sense
when it was expected that having no dependency was an error.
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
a6f2195921 boot/init: Return the symlink itself for the generation
Reading the symlink gives a relative path. That's no good in this case.

There is no actual need to resolve the symlink.
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
01e298eafc boot/init: Make failure to splash not fatal
That is, some devices, notable google-walleye, fail to show the splash
for yet unknown reasons.
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
b887db59c5 boot/init: Add SwitchRoot task 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
962b36ec97 boot/init: Implements Target tasks 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
eb15a159de boot/init: Fixup bug in mount task
Welp, == != = !
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
de9ca16934 boot/init: udev depends on /sys too 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
c54aa77911 boot/init: Add Proc tasks 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
694513d9f0 boot/init: Adds missing dependency on /dev
Though, this is only *incidental* in that for using the framebuffer the
/dev/ mount point needs to exist for /dev/fb0 to exist.

The Graphics step will succeed without that, but users of the Graphics
step might not.
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
62b48d2077 boot/init: Make udev depend on mounts
Rather than cheating with files inside the mount points
2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
3550d694b3 boot/init: Allow a task to depend on a mount point being mounted 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
741b3f3fa7 boot/init: Minor logging rewording 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
83df40bc40 boot/init: Add task to load modules 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
24f99c593b boot/init: Rework of task mount 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
8353f7ea79 boot/init: Minor rework of udev task 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
9f416471f7 boot/init: Add udevd task 2020-02-03 16:19:10 -05:00
Samuel Dionne-Riel
60a92acbe8 boot/init: Continuously improving POC 2020-02-03 16:19:10 -05:00