1
1
mirror of https://github.com/NixOS/mobile-nixos.git synced 2024-12-17 13:10:29 +03:00
Commit Graph

127 Commits

Author SHA1 Message Date
Samuel Dionne-Riel
76b5e79ca5 boot/init: Add System.umount() 2021-01-27 19:09:07 -05:00
Samuel Dionne-Riel
5ba41dd963 boot/init: Fix shellOnFail
- It was running too late.
 - Wasn't actually using `shellOnFail` config
2021-01-27 19:09:07 -05:00
Samuel Dionne-Riel
78f6798175 boot/init: Graphics can also mean DRM 2021-01-25 18:40:50 -05:00
Samuel Dionne-Riel
edf2e83a20 boot/init: Work around gadget teardown errors
Those errors are non-issues.

Tear-down should, anyway, be implemented in a library to be used in
other tools like target disk mode and a stage-2 gadget utility.
2021-01-24 23:38:54 -05:00
Samuel Dionne-Riel
badb5c635b boot/init: Add System.symlink
Same as File.symlink, but logged.

(Also fixes logging of System.write)
2021-01-03 23:08:24 -05:00
Samuel Dionne-Riel
b4c603bc56 boot/init: Tear down usb gadget on kexec
Yikes, specialized code in the kexec codepath... though this is okay for
now. Let's not over-generalize when we don't know what will be required
in the future for abstraction.
2021-01-03 20:23:44 -05:00
Samuel Dionne-Riel
2d3ba8d21d boot/init: Add System.delete() to delete files or directories 2021-01-03 20:23:44 -05:00
Samuel Dionne-Riel
d0ad7a8a20 boot/init: Use extracted configuration lib 2021-01-01 21:37:30 -05:00
Samuel Dionne-Riel
af9912ef81 boot/lib: Import init configuration lib 2021-01-01 21:37:30 -05:00
Samuel Dionne-Riel
3cde402440 boot/init: Use extracted monkey patches 2021-01-01 21:37:30 -05:00
Samuel Dionne-Riel
e6e4e228a4 boot/lib: Move init monkey patches 2021-01-01 21:37:30 -05:00
Samuel Dionne-Riel
6ca59e8cfb boot/init: Describe specific libraries to include 2021-01-01 21:37:29 -05:00
Samuel Dionne-Riel
b33afce1a0 boot/init: Re-format mrbc invocation 2021-01-01 21:37:29 -05:00
Samuel Dionne-Riel
e88ace2a3e boot/init: switch_root keeps selected generation in stage-0 2020-12-29 17:59:09 -05:00
Samuel Dionne-Riel
e9dba7afb9 boot/init: Fix logic in symlink resolution 2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
ebd095e019 boot/init: AutoResize only if needed 2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
22ba517ac8 boot/init: Control the splash fades for kexec 2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
fa4804e67d boot/init: Add kernel cmdline helper 2020-12-27 17:50:30 -05:00
Samuel Dionne-Riel
cb0d21d2fc boot/init: booting from kexec communicated using cmdline 2020-12-27 17:50:30 -05:00
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
eed796865e boot/init: Use configurable stage value 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
fd0a9856bd boot/init: publish desire for recovery mode 2020-11-22 16:53: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
03022f2745 boot/init: Pass structured data through a file to crash handler
The command-line arguments are not great for structured data.
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
00f81fa95c boot/init: Handle hung tasks
The way we're handling them is to have a global timer that is reset at
any point a task is ran.

This gives a maximum amount of chances to any task to have its
dependencies resolve.

A minimum of 60s is given, but in reality the chances are the conditions
for trying to resolve were already present before the timeout started
counting towards that particular dependency.

Note that a long running task, when successfully ran, does not cause the
timeout to be reached.

E.g. at 10s of timeout a task is started, the loop is not executed until
the task exits. When it exits the branch followed is for a task that
ran, which means that even if the task took 70s total (which gives us 80
seconds) a timeout of 60s wouldn't apply here.

Though, please, don't make your tasks take that much time to run!
2020-11-07 20:13:31 -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
f45b5b301c boot/init: Implement asking user 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
ef436a64b1 boot/init: More verbose tasks loop in DEBUG 2020-10-27 15:23:40 -04: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
0365079e1f boot/init: Tasks restart the queue
This is to ensure "UX-friendly" tasks gets run ASAP.

Quickly explained, this makes sure that the top tasks (e.g. Splash) gets
ran as soon as possible.

Given the list:

 - Splash
 - Graphics
 - AAA
 - BBB
 - CCC

If `Graphics` ends up running, and AAA, BBB and CCC can too, Splash will
have to wait until all those tasks got ran once!

Not ideal for UX, if e.g. BBB takes time to *run* and we can't show the
progress to users!

The added cost of restarting the queue is minimal with tests I ran. It
was not more than a tenth of a second, and could even be rounding
errors.
2020-10-27 15:23:40 -04:00
Samuel Dionne-Riel
2542487348 boot/init: Improve Task#to_s for better inspection 2020-10-27 15:23:40 -04:00
Samuel Dionne-Riel
cf84880e87 boot/init: clean-up logger initialization 2020-10-27 15:23:40 -04:00
Samuel Dionne-Riel
1cee1c681b boot/init: Log offset from logger init
This gives us a better idea, relatively, when things happen to be
logged.
2020-10-27 15:23:40 -04:00