generated from shuding/nextra-docs-template
-
-
Notifications
You must be signed in to change notification settings - Fork 13
feat(rdms): document readymade stack #132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
madonuko
wants to merge
5
commits into
main
Choose a base branch
from
rdm/meow
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Changes from 2 commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
dc990f7
feat(rdms): docs for Readymade Stack
madonuko 79ae188
feat(rdms): taidan
madonuko f4ffc56
feat(rdms): apply suggestions
madonuko c959254
feat(rdms): more updates
madonuko d5b9f6a
feat(rdms/tdn): runtime fluent loader and tweaks
madonuko File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
"index": "Introduction", | ||
"rdm": "Readymade", | ||
"tdn": "Taidan" | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Readymade Stack Developer Documentations | ||
|
||
This wiki contains **developer** documentations for the | ||
Readymade Stack (e.g. [Readymade], [Taidan], etc.). For user | ||
documentations, consult the Ultramarine wiki instead. | ||
|
||
## Keyword Glossary | ||
|
||
- [Readymade]: Installer for UM41+ | ||
- [Taidan]: OOBE app for UM41+ | ||
- [Anaconda]: Fedora installer (the rhinstaller stack) | ||
- [initial-setup]: Fedora OOBE app (rhinstaller) | ||
- [umstellar]: Formerly planned catalogue app for up to UM40 | ||
- [systemd-repart]: systemd-repart creates partition tables, and adds or grows partitions (see [repart.d(5)]). | ||
It is the main backend used by Readymade. | ||
|
||
|
||
[Readymade]: https://github.com/FyraLabs/readymade | ||
[Taidan]: https://github.com/Ultramarine-Linux/taidan | ||
[Anaconda]: https://github.com/rhinstaller/anaconda | ||
[initial-setup]: https://github.com/rhinstaller/initial-setup | ||
[umstellar]: https://github.com/Ultramarine-Linux/stellar | ||
[systemd-repart]: https://man.archlinux.org/man/systemd-repart.8 | ||
[repart.d(5)]: https://man.archlinux.org/man/repart.d.5.en |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
# Readymade | ||
|
||
[Readymade] is the new installer for Ultramarine Linux 41 and above. It is written in Rust and | ||
[libhelium] and comes with a custom backend based on systemd-repart. | ||
|
||
It is created due to frustrations (again!) with Red Hat's Anaconda installer, after we have | ||
received many complaints about the poor UX design of Anaconda, and the lack of working | ||
alternative installers for RPM-based distributions. It also adds support for other kinds of | ||
hardware, including Chromebooks, in response to the [Ultramarine Anywhere Initiative]. | ||
|
||
## Building | ||
|
||
You may view the most updated building instructions in the [CI spec file](https://github.com/FyraLabs/readymade/blob/main/ci/readymade.spec). | ||
madonuko marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Build dependencies: | ||
|
||
``` | ||
cargo | ||
clang-devel | ||
cmake | ||
gcc | ||
gettext-devel | ||
pkgconfig(libhelium-1) | ||
pkgconfig(libgnome-desktop4) | ||
``` | ||
|
||
Dependencies: (according to `dnf rq --providers-of=requires readymade`) | ||
``` | ||
cairo | ||
cairo-gobject | ||
efibootmgr | ||
gdk-pixbuf2 | ||
glib2 | ||
glibc | ||
glibc | ||
gnome-desktop4 | ||
graphene | ||
gtk4 | ||
harfbuzz | ||
libgcc | ||
libhelium | ||
pango | ||
pkexec | ||
vulkan-loader | ||
xz-libs | ||
``` | ||
|
||
And optionally, `submarine` (for Chromebook installations). | ||
|
||
## Configurations | ||
|
||
Configurations are read from `/etc/readymade.toml`, or a path specified by the `READYMADE_CONFIG` envvar. | ||
|
||
Some example configuration files for Ultramarine are in `templates/`. | ||
|
||
## Running | ||
|
||
There are also extra PolicyKit rules to skip password prompts for `pkexec` to escalate the process as root. | ||
Copy the `com.fyralabs.pkexec.readymade.policy` file to `/usr/share/polkit-1/actions/` and restart the PolicyKit service. | ||
|
||
In development, it may be useful to specify options to the binary, such as the configuration file path, or the log level. You can do this by setting supported environment variables. | ||
|
||
For example, to run with tracing and the ultramarine-chromebook template, run the following command: | ||
|
||
```sh | ||
READYMADE_LOG=trace READYMADE_CONFIG=templates/ultramarine-chromebook.toml cargo run | ||
``` | ||
|
||
You can also set `READYMADE_DRY_RUN` to configure if whether the install is a dry-run, this will cause an installation failure. | ||
Please note that this variable is set to `1` by default, within development builds. | ||
|
||
Additionally, you may want to create a virtual disk to install to during development: | ||
|
||
```sh | ||
fallocate -l 8G test.img # Create a blank 8GB file | ||
sudo losetup --partscan --show -f test.img # Attach the file to a free loop device, take note of the outputted device. | ||
``` | ||
|
||
Note how loop devices become valid install targets within debug builds, select the one corresponding to the device noted in the prior commands. | ||
|
||
## Debugging | ||
|
||
Readymade currently defaults to the `error` log level. To set a custom log level, set `READYMADE_LOG`. For example `READYMADE_LOG=trace` will set the log level to trace, which is the most verbose level. | ||
Readymade logs to stderr and to a temporary folder `/tmp/readymade-logsXXXXXX`, which contains the file `readymade.log`. | ||
The logger is powered by `tracing-appender`. | ||
|
||
It also logs to the systemd journal, so you can view the logs by running | ||
|
||
```sh | ||
journalctl _COMM=readymade # add -f to follow the logs | ||
``` | ||
|
||
Readymade checks for Dracut's default `live-base` (in `/dev/mapper/live-base`) logical volume for the base filesystem to mount and copy from. This is usually generated with Dracut's live module. It then tries to mount the base filesystem from the logical volume and use the files from there as the source for the installer, **_as it assumes the running environment is a live CD environment generated by Dracut, thus it contains the original overlay filesystem in this exact location_**. | ||
|
||
While you may expect it to mount a SquashFS, the default behaviour is to mount an overlay disk image generated _from_ the SquashFS. This is to prevent the SquashFS to be extracted twice, as the live module already mounts the SquashFS and turns it into a Device Mapper device. | ||
|
||
If that somehow fails, it may try again and check for `/run/rootfsbase` as the source path, this is a fallback for Dracut live environments that have the SquashFS containing the live environment directly inside the SquashFS and not as a disk image inside the SquashFS. | ||
|
||
Readymade will mount this location if possible, and if not, it will attempt to copy files from `/mnt/live-base` as the source path anyway. | ||
|
||
You can however override this by setting the environment variable `REPART_COPY_SOURCE` to the path of the base filesystem to copy from. This makes use of systemd 255's new relative repart source feature. | ||
|
||
In case you have an alternate root mounted at `/mnt/squash` from an external source (i.e a real filesystem or a mounted SquashFS image, or even an OCI image), add the environment variable `REPART_COPY_SOURCE=/mnt/squash` to the command line when running Readymade. | ||
|
||
```sh | ||
sudo REPART_COPY_SOURCE=/mnt/rootfs readymade | ||
``` | ||
|
||
## Translations | ||
|
||
You may translate Readymade to your language by visiting the [Fyra Labs Weblate](https://weblate.fyralabs.com/projects/tauOS/readymade/) instance. | ||
|
||
|
||
[Readymade]: https://github.com/FyraLabs/readymade | ||
[libhelium]: https://github.com/tau-OS/libhelium |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.