elementary / elementary/installer
Allow installer to use different backends
- Dominant language
- Vala
- Stars
- 182
- Forks
- 53
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 1
Description
### Problem
The current installer uses `libdistinst` to install elementary OS packages to disk I believe. Thanks to @jumpyvi we now have a [mkosi/systemd sysupdate](https://github.com/elementary/os/pull/809) PR that can generate an elementary OS 9 image, and then update it forever from there (even over major OS release versions 8=>9=>10!). We need a way to initially copy this image to the users' disk though.
### Proposal
@danirabbit [suggested](https://github.com/elementary/os/pull/809#issuecomment-5115340375) I open a ticket here to start a discussion on the installer supporting different backends.
The installer could work the same as it does now, but on the last step instead of copying packages with `libdistinst` (or `debootstrap`?), do something like:
`sudo dd if=Elementary_build_x86-64.raw of=/dev/sdX bs=4M status=progress conv=fsync`
under the hood. Then reboot into the new image, as it does now.
We could even reuse the current `live-build` live iso generation, but simply copy the elementary OS image to that iso and then have the installer run the above command to the desired disk.
### Prior Art (Optional)
- Gnome OS [proto installer](https://gitlab.gnome.org/GNOME/gnome-build-meta/-/tree/master/files/gnomeos/live/proto-installer?ref_type=heads) - (Rust wrapper around [systemd repart](https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/master/files/gnomeos/live/proto-installer/daemon/main.rs#L455) AFAICT)
- KDE Linux ([mkosi + Calamares](https://invent.kde.org/kde-linux/kde-linux/-/tree/master/mkosi.extra/live/usr/calamares?ref_type=heads)) - ([hybrid iso image](https://invent.kde.org/kde-linux/kde-linux/-/blob/master/build.sh#L203) AFAICT)
- https://gitlab.gnome.org/p3732/os-installer
- https://github.com/ublue-os/titanoboa
- https://github.com/FyraLabs/readymade
Contributor guide
Research direction
Start by mapping the current installer path that uses libdistinst, including any debootstrap path, then compare it with the referenced systemd sysupdate/mkosi image flow and live-build generation. Define the backend boundary and image-copy/reboot acceptance criteria before implementing; the issue does not name files or tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100