- real dinit service files (connmand, sddm, ntpd, chrony, sshd) - void backend properly swaps runit for dinit with service definitions - ISO generation finds kernel/initrd, builds proper GRUB config - ship all package manager binaries in ISO for offline use - LICENSES/ directory with proper GPL-2.0 plain text for xbps, pacman, apt, dnf, apk, dpkg - backends explicitly install their own package managers - README updated with binary inclusion and license info
99 lines
2.2 KiB
Markdown
99 lines
2.2 KiB
Markdown
# euri-mklive
|
|
|
|
universal CLI iso builder. any distro, from any distro.
|
|
|
|
build a debian iso on arch. an arch iso on fedora. an artix iso on ubuntu. doesn't matter.
|
|
|
|
## what's included in the ISO
|
|
|
|
every ISO ships with:
|
|
|
|
- **all package manager binaries** (xbps, pacman, apt, dnf, apk, dpkg — whichever the distro uses)
|
|
- **GPL-2.0 license files** for each package manager (see `LICENSES/`)
|
|
- the packages you specified in your config
|
|
- a working bootloader (GRUB)
|
|
|
|
you can use the shipped package managers offline to install/upgrade/remove packages
|
|
without an internet connection, as long as you have a local repo.
|
|
|
|
## install
|
|
|
|
```bash
|
|
pip install .
|
|
# or
|
|
pipx install .
|
|
```
|
|
|
|
## usage
|
|
|
|
```bash
|
|
# see what's supported
|
|
euri-mklive supported
|
|
|
|
# build from a config
|
|
euri-mklive build my-config.yaml -o ./output
|
|
```
|
|
|
|
## config
|
|
|
|
yaml config that defines everything:
|
|
|
|
```yaml
|
|
distro: artix # debian | ubuntu | arch | artix | void | alpine | fedora
|
|
arch: x86_64
|
|
init: dinit # dinit | openrc | runit | s6
|
|
|
|
hostname: mydistro
|
|
|
|
iso:
|
|
name: My Distro
|
|
version: "1.0"
|
|
label: MYDISTRO
|
|
|
|
users:
|
|
- name: user
|
|
shell: /bin/bash
|
|
groups: [wheel]
|
|
|
|
packages:
|
|
- linux
|
|
- plasma-desktop
|
|
- nano
|
|
- git
|
|
|
|
services:
|
|
- connmand
|
|
- sddm
|
|
```
|
|
|
|
## supported distros
|
|
|
|
| distro | bootstrap tool | init systems | package manager |
|
|
|--------|---------------|--------------|-----------------|
|
|
| debian | debootstrap | systemd | apt/dpkg |
|
|
| ubuntu | debootstrap | systemd | apt/dpkg |
|
|
| arch | pacstrap | systemd | pacman |
|
|
| artix | basestrap | openrc, runit, s6, dinit | pacman |
|
|
| void | xbps-install | runit, dinit | xbps |
|
|
| alpine | apk | openrc | apk |
|
|
| fedora | dnf | systemd | dnf |
|
|
|
|
## how it works
|
|
|
|
1. reads your yaml config
|
|
2. bootstraps the target distro into a temporary rootfs
|
|
3. installs your packages + ensures package manager binaries are present
|
|
4. configures users, services, hostname
|
|
5. installs the bootloader (GRUB)
|
|
6. copies package manager binaries + GPL-2.0 licenses into ISO
|
|
7. squashes the rootfs into a bootable ISO
|
|
8. done.
|
|
|
|
## licenses
|
|
|
|
see `LICENSES/` for the full GPL-2.0 text for each package manager shipped.
|
|
|
|
## license
|
|
|
|
euri-mklive itself is GPL-2.0. see `LICENSE`.
|