From bd88c7ab0d6c7e82f4380a92a1fb2d2971de2631 Mon Sep 17 00:00:00 2001 From: luz Date: Tue, 22 Apr 2025 16:03:14 -0500 Subject: [PATCH] Rewamped README --- README.md | 122 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 111 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3d20c2a..d652c5e 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,116 @@ # Phyllome OS -Phyllome OS is a [Fedora Remix](https://fedoraproject.org/wiki/Remix) designed to leverage [hardware-assisted virtualization](https://wiki.phyllo.me/virt/lexicon#hardware-assisted-virtualization) and [paravirtualization](https://wiki.phyllo.me/virt/lexicon#paravirtualization) to make it easier to run modern guest operating systems locally. +Phyllome OS is a [Fedora Remix](https://fedoraproject.org/wiki/Remix) designed to leverage [hardware-assisted virtualization](https://wiki.phyllo.me/virt/lexicon#hardware-assisted-virtualization) and [paravirtualization](https://wiki.phyllo.me/virt/lexicon#paravirtualization) to make it easier to run virtualized operating systems locally. -Phyllome OS uses the [automated kickstart installation](https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-1-introduction) method to deploy itself to a specific target. - -This repository contains complete or partial kickstart files, [organized by folders](#the-content-of-this-repository), for Phyllome OS and also a handful of other operating systems artifacts. +Phyllome OS uses the [automated kickstart installation](https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-1-introduction) method to deploy itself to a specific target computer or virtual machine. > Phyllome OS is in its ***alpha*** stage of development. Expect bugs and disappointment ## The content of this repository +Each version of Phyllome OS is like a `dish` that is based on a `recipe` that lists `ingredients`, or basic building blocks for assembling Phyllome OS and other derivatives. -Each version of Phyllome OS is a `dish` that is based on a `recipe` that lists `ingredients`. +* `ingredients`🥑 🥥 🥭 🥝 🥦 🥬 🥒 🧄: Each ingredient represents a feature or a set of integrated features, such as a specific Desktop Environment -* `ingredients`🥑 🥥 🥭 🥝 🥦 🥬 🥒 🧄...: this directory contains the basic building blocks, or ingredients, for assembling Phyllome OS and other derivatives. - * Each ingredient represents a feature or a set of integrated features, such as a particular Desktop Environment. -* `recipes`🧾 🧩: this directory contains recipes, which are made of ingredients. -* `dishes`🥨 🥐 🥖 🥧 🥞 🥯 🧆 🧁...: this directory contains the end-product in the form of stand-alone and ready-to-consume kickstart file, just like a ready to eat dish. +Example for the base storage ingredient used by Phyllome OS. + +`cat ingredients/base-storage.cfg` + +``` +[...] +# What ? This kickstart file provides a basic ext4 unencrypted partition layout for UEFI-based systems + +part /boot/efi --fstype="efi" --size=128 --fsoptions="umask=0077,shortname=winnt" --label=efi # Will create an EFI system partitition of 128 MiB (vda1) +part /boot --fstype="ext4" --size=512 --label=boot # Create a boot partition of 512 MiB using the ext4 filesystem (vda2) +part / --fstype="ext4" --grow --label=root # The remaining space will be used for root (vda3) +``` + +* `recipes`🧾 🧩: this directory contains recipes for deploying operating system artifacts on bare-metal, as a live system, or inside a virtual machine. + +Let's take a look at the recipe to deploy Phyllome OS Desktop. + + +`cat recipes/desktop-hypervisor.cfg` + +``` +# What ? This kickstart file bootstraps a desktop hypervisor. + +[...] + +%include ../ingredients/base-fedora-repo.cfg # offical repositories for Fedora +%include ../ingredients/base-storage.cfg # base storage +%include ../ingredients/base.cfg # A minimal machine +%include ../ingredients/base-desktop-gnome.cfg # A desktop environment based on GNOME Shell +%include ../ingredients/base-desktop-virtual-machine-manager.cfg # the virtual machine manager +%include ../ingredients/base-hypervisor.cfg # A base hypervisor +%include ../ingredients/base-initial-setup-gnome.cfg # Includes initial-setup for GNOME Shell, allowing for the creation of a user after the first boot, as well as some basic configuration +``` + +* `dishes`🥨 🥐 🥖 🥧 🥞 🥯 🧆 🧁...: the end-product in the form of stand-alone and ready-to-consume kickstart file + +Let's take a look at the final Phyllome OS Desktop dish. + +`cat dishes/desktop-hypervisor.cfg` + +``` +# Generated by pykickstart v3.58 +#version=DEVEL +# Use text mode install +text +# Firewall configuration +firewall --enabled --service=mdns +# Keyboard layouts +keyboard --xlayouts='ch (fr)' +# System language +lang en_US.UTF-8 +# Network information + +[...] + +%end + +%packages --exclude-weakdeps +@core +@hardware-support +NetworkManager-wifi +dejavu-sans-mono-fonts +fedora-remix-logos +firefox +generic-logos +generic-release +generic-release-common +generic-release-notes +gnome-backgrounds.noarch +gnome-initial-setup +gnome-shell +gnome-terminal +guestfs-tools +libguestfs-tools +libusb +libvirt +libvirt-daemon-config-network +libvirt-daemon-kvm +mesa-dri-drivers +mozilla-ublock-origin.noarch +nano +pciutils +python3-libguestfs +qemu-kvm +usbutils +virt-install +virt-manager +virt-top +wget +wpa_supplicant +-fedora-logos +-fedora-release +-fedora-release-common +-fedora-release-identity-basic +-fedora-release-notes +-gnome-tour + +%end +``` ## Development @@ -41,7 +135,7 @@ $ nano ingredients/extra-luanti.cfg ``` ``` -# What ? This partial kickstart file provides the video game Minetest +# What ? This partial kickstart file provides the video game Luanti %packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies @@ -89,6 +183,12 @@ $ ksflatten -c virtual-desktop-lunanti.cfg -o ../dishes/virtual-desktop-luanti.c > If any errors are detected, go back and fix them. +If multiple dishes are affected by your ingredients, flatten them all while in the `recipes` folder. + +``` +for filename in *.cfg; do ksflatten -c "$filename" -o "../dishes/$filename"; done +``` + * Navigate inside the `dishes` folder: ``` @@ -105,7 +205,7 @@ $ cd ../dishes/ --virt-type kvm \ --arch x86_64 \ --machine q35 \ - --name virtual-desktop-minetest \ + --name virtual-desktop-luanti \ --boot uefi \ --cpu host-model,topology.sockets=1,topology.cores=2,topology.threads=1 \ --vcpus 2 \