elementary / elementary/installer

Allow installer to use different backends

Open
#941 6 comments 0 reactions 0 assignees View on GitHub
Priority: Wishlist
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.