diff --git a/README.md b/README.md index a80f6b8..a84f74c 100644 --- a/README.md +++ b/README.md @@ -17,21 +17,22 @@ package manager that simply runs the commands in each recipe. No binary packages, no opaque package machinery. The whole system — toolchain included — is compiled from original source. -Runit handles services. The standard Linux kernel drives the hardware. -`nmtui` manages networking. Nothing you didn't ask for ends up on the disk. +Nothing is fixed. Nothing you didn't ask for is forced on you. -## The differentiator: craft your system at install time +## The differentiator: everything is swappable Keru's installer is a TUI that walks you through designing your exact machine -*before* it ever boots: +*before* it ever boots. Every major component is selectable: -- **init system** — Runit (default), s6, OpenRC, systemd -- **C library** — glibc or musl -- **filesystem** — ext4, btrfs, xfs, zfs, f2fs -- **kernel** — linux, linux-lts, linux-hardened +- **init system** — Runit (default), s6, OpenRC, systemd, busybox init, and more +- **C library** — glibc, musl, uClibc-ng, and more +- **filesystem** — ext4, btrfs, xfs, zfs, f2fs, jfs, reiserfs, swap, and more +- **kernel** — linux, linux-lts, linux-hardened, linux-cachyos, and more +- **kernel parameters, locale, clock, keymap** — all configurable -Swappable at install time, fixed at first boot. The system that lands on your -disk is precisely the one you chose. +Every init, every libc, every filesystem, everything. The selections are made +during install and fixed at first boot. The system that lands on your disk is +precisely the one you chose. ## Repository layout diff --git a/installer/install.sh b/installer/install.sh index 0ef924c..199ccb1 100755 --- a/installer/install.sh +++ b/installer/install.sh @@ -49,16 +49,16 @@ pick() { # prompt, array-of-labels, defaults -> writes choice to $CHOICE # ---- swappable selections ------------------------------------------------ banner "Keru OS — craft your system" -pick "Init system" runit runit s6 openrc systemd +pick "Init system" runit runit s6 openrc systemd busybox-init sysvinit dinit shepherd INIT="$CHOICE" -pick "C library" glibc glibc musl +pick "C library" glibc glibc musl uclibc-ng LIBC="$CHOICE" -pick "Filesystem" ext4 ext4 btrfs xfs zfs f2fs +pick "Filesystem" ext4 ext4 ext2 ext3 btrfs xfs zfs f2fs jfs reiserfs TARGET_FS="$CHOICE" -pick "Kernel" linux linux linux-lts linux-hardened +pick "Kernel" linux linux linux-lts linux-hardened linux-cachyos linux-zen KERNEL="$CHOICE" pick "Network tools" nmtui networkmanager nmtui connman diff --git a/profile/make.conf b/profile/make.conf index e90b862..9e40af6 100644 --- a/profile/make.conf +++ b/profile/make.conf @@ -9,23 +9,23 @@ ## --------------------------------------------------------------------------- # Which init system gets installed -# runit (default) | s6 | openrc | systemd +# runit (default) | s6 | openrc | systemd | busybox-init | sysvinit | dinit | shepherd INIT=runit # Which libc the toolchain and packages build against -# glibc (default) | musl +# glibc (default) | musl | uclibc-ng LIBC=glibc # Which filesystem the target root is formatted as -# ext4 (default) | btrfs | xfs | zfs | f2fs +# ext4 (default) | ext2 | ext3 | btrfs | xfs | zfs | f2fs | jfs | reiserfs | swap TARGET_FS=ext4 # Which kernel you want built -# linux (sane default) | linux-lts | linux-hardened +# linux (default) | linux-lts | linux-hardened | linux-cachyos | linux-zen KERNEL=linux # Base package set pulled into every install -BASE_PACKAGES=(base toolchain kernel runit nmtui openssh) +BASE_PACKAGES=(base toolchain kernel nmtui openssh) # Locale / clock / keymap applied to the target LOCALE=en_US.UTF-8