Compare commits

...

33 Commits

Author SHA1 Message Date
e1207278a3 Add possibility to pick URI, from session to system 2025-06-08 11:51:15 +02:00
00f40553b5 Document th script 2025-06-04 20:00:08 +02:00
0316eff669 rename file 2025-05-29 17:50:29 +02:00
c458ab4b5c add ability to pick memory and disk size 2025-05-29 17:49:30 +02:00
02f2a131bf add pipewire and gnome-control-center to desktop editions 2025-05-29 17:48:59 +02:00
6cfad2d5eb move file 2025-05-29 17:48:37 +02:00
5c7a5713b9 bump hardware requirements, change default network, correct paths 2025-05-22 18:14:47 +02:00
63456e0e16 bump hardware requirements 2025-05-22 18:10:43 +02:00
01326af9d8 fix bug related to path
the extra-args should refer to the file, irrespective of its location.
2025-05-22 16:48:07 +02:00
be2f5cf7a2 rename code of conduct 2025-05-21 18:18:50 +02:00
66773b8e23 change where logs are stored 2025-05-21 17:50:58 +02:00
4bd6294efe new dish 2025-05-21 17:50:40 +02:00
7d9af8f39e rename code of conduct file for consistency 2025-05-21 17:40:51 +02:00
8c1c11fda7 add reference to the script 2025-05-21 17:36:12 +02:00
3fafb78838 new script / wrapper around virt-install 2025-05-21 17:35:57 +02:00
1dfc10b5c9 Add requirements 2025-05-19 19:59:01 +02:00
6089cb118a Add new explanation related to ingredients 2025-05-19 19:56:03 +02:00
fee6d59831 move explanation of list of ingredients into the README 2025-05-19 19:55:09 +02:00
add9bd8a09 Tiny change, add FAQ section 2025-05-19 16:16:18 +02:00
e5ec5d9380 Revamped readme 2025-05-19 16:07:53 +02:00
luz
5974968ebd updated but broken README 2025-05-12 10:57:01 -05:00
luz
bb583e20f8 updated list of ingredients 2025-05-12 10:56:43 -05:00
luz
ba54075f34 typo fixes 2025-05-06 16:10:00 -05:00
luz
29d0999c07 refactor, typo fixes 2025-05-06 09:40:49 -05:00
luz
d3809066a8 change location of logs, mostly 2025-05-06 09:38:18 -05:00
luz
c6b763a83e remove unecessary ingredient 2025-05-06 09:37:00 -05:00
luz
5a2f7d0e89 change location of logs 2025-05-06 09:36:35 -05:00
luz
991e5b3abd remove unnecessary ingredient 2025-05-05 18:15:50 -05:00
luz
77f295b1c2 merge ingredient 2025-05-05 18:15:24 -05:00
luz
07a6deaca4 merge ingredients into one 2025-05-05 18:15:02 -05:00
luz
dcad3e7eef systemd-resolved 2025-05-05 18:14:37 -05:00
luz
534b91fa56 explicitly add systemd-resolved, otherwise services being defined in core service ingredients are being scratched when flattened 2025-05-05 18:14:20 -05:00
luz
36decace3c remove fedora logos and add systemd-resolved as service 2025-05-05 18:13:26 -05:00
57 changed files with 705 additions and 570 deletions

323
README.md
View File

@ -1,224 +1,193 @@
# Phyllome OS
# Kickstart 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 virtualized operating systems locally.
[Phyllome OS](https://wiki.phyllo.me/phyllomeos/context) uses the [kickstart installation method](https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-1-introduction) to deploy itself to a specific target computer or virtual machine by means of kickstart files.
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.
Provided that some dependencies are met (`libvirt` is running on your computer, QEMU is installed, etc), one could run the following script to deploy virtual machines, including Phyllome OS itself.
> 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.
* `ingredients`🥑 🥥 🥭 🥝 🥦 🥬 🥒 🧄: Each ingredient represents a feature or a set of integrated features, such as a specific Desktop Environment
`cat ingredients/base-storage.cfg`
- Make the script executable:
```
chmod +x deploy-vm.sh
```
- Execute it and pick `virtual-desktop-hypervisor` when prompted:
```
./deploy-vm.sh
Executing: ./scripts/core-count.sh
System has more than 2 core (nproc --all: 6).
[...]]
10. virtual-desktop-hypervisor
[...]
# What ? This kickstart file provides a basic ext4 unencrypted partition layout for UEFI-based systems
Enter the number of the file you want to select: 10
You selected: virtual-desktop-hypervisor
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)
Starting install...
Retrieving 'vmlinuz' | 16 MB 00:00:00
Retrieving 'initrd.img' | 161 MB 00:00:05
Allocating 'virtinst-n0km88yy-vmlinuz' | 16 MB 00:00:00
Transferring 'virtinst-n0km88yy-vmlinuz' | 16 MB 00:00:00
Allocating 'virtinst-qxr2jxcb-initrd.img' | 161 MB 00:00:00
Transferring 'virtinst-qxr2jxcb-initrd.img' | 161 MB 00:00:00
Allocating 'virtual-desktop-hypervisor.img' | 10 GB 00:00:00
Creating domain...
```
After a successfull installation, the virtual machine will shutdown and be ready to use when powered on again.
* `recipes`🧾 🧩: this directory contains recipes for deploying operating system artifacts on bare-metal, as a live system, or inside a virtual machine.
## Repository structure
`cat recipes/desktop-hypervisor.cfg`
This repository contains such files broken down as:
```
# What ? This kickstart file bootstraps a desktop hypervisor.
* `ingredients`🥑 🥥 🥭 🥝 🥦 🥬 🥒 🧄: the basic building blocks for assembling Phyllome OS and other derivatives.
[...]
* `recipes`🧾 🧩: lists of ingredients to compose several editions
%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`🥨 🥐 🥖 🥧 🥞 🥯 🧆 🧁: read-to-consume and standalone kickstart artifacts, which can be used to deploy complete systems
* `dishes`🥨 🥐 🥖 🥧 🥞 🥯 🧆 🧁...: the end-product in the form of stand-alone and ready-to-consume kickstart file
`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
```
Each ingredient represents a feature or a set of integrated features, such as a specific Desktop Environment or a storage configuration.
- Ingredients prefixed with *live* such as `live-core.cfg` are to be used with live editions only
- *core* ingredients are meant be used in all their respective recipes, *base* ingredients, recommended but optional, and extra provides more stuff (sic)
## Development
Let's assume you wish to add [Luanti](https://www.luanti.org/), a free and open-source sandbox video game engine, as an ingredient to a dish.
Using a pull request, you can suggest a modification to an existing ingredient or create a new ingredient from scratch.
* Clone this repository and change directory:
### Requirements
- `qemu`
- `libvirt`
- `virt-install`
- `pykickstart`
### Example 1: add a new package and include it into a recipe
- Add [Luanti](https://www.luanti.org/), a free and open-source sandbox video game engine formerly known as Minetest, as a standalone ingredient, using the `echo` command
```
$ git clone https://git.phyllo.me/roots/phyllomeos && cd phyllomeos
echo "%packages --exclude-weakdeps # Beginning of the package section. Does not include weak dependencies
luanti # Multiplayer infinite-world block sandbox with survival mode
%end # End of the packages section" > ingredients/extra-luanti.cfg
```
* Make a copy of the `template.cfg` file and rename it
Instead of creating a recipe from scratch, let's make a copy of the `virtual-desktop.cfg` recipe, which provide a Desktop environment necessary for *luanti* to function
```
$ cp ingredients/template.cfg ingredients/extra-luanti.cfg
cp recipes/virtual-desktop.cfg recipes/virtual-desktop-luanti.cfg
```
* Add software `luanti` to your file:
- Add the extra ingredient to the new recipe:
```
$ nano ingredients/extra-luanti.cfg
echo "%include ../ingredients/extra-luanti.cfg # Sandbox video game engine" >> recipes/virtual-desktop-luanti.cfg
```
```
# What ? This partial kickstart file provides the video game Luanti
#### Flatten
%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies
luanti # a free and open-source sandbox video game
%end
```
* Navigate inside the `recipes` folder:
- Prepare the dish by following the recipe, a process called 'flattening'
```
$ cd recipes
```
* Pick a suitable recipe to add your ingredient to it. As luanti is a GUI application, `virtual-desktop.cfg` is a fitting candidate. Make a copy of it.
```
$ cp virtual-desktop.cfg virtual-desktop-lunanti.cfg
```
* Edit the file and add the newly defined ingredient:
```
$ nano virtual-desktop-luanti.cfg
```
```
%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
%include ../ingredients/base-guest-agents.cfg # Guest agents
%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
%include ../ingredients/extra-luanti.cfg # A free and open-source sandbox video game
poweroff # Shut down the system after a successful installation
```
* Merge the kickstart basic building blocks a single file, or dish. This process is called 'flattening'.
```
$ ksflatten -c virtual-desktop-lunanti.cfg -o ../dishes/virtual-desktop-luanti.cfg
ksflatten -c recipes/virtual-desktop-luanti.cfg -o dishes/virtual-desktop-luanti.cfg
```
> 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.
It is time to test the new dish!
#### Kickstart
- Make the `deploy-vm.sh` script executable
```
chmod +x deploy-vm.sh
```
- Execute the script
```
./deploy-vm.sh
```
- Select the new dish, *virtual-desktop-luanti*
```
[...]
Available files:
1. desktop-hypervisor-amdcpu
[...]
14. virtual-desktop-luanti
```
- When the installation is done, the machine will shut down
- Start it again, and ensure that Luanti has correctly been installed
That's it !
### Example 2: Create a new recipe from the existing list of ingredients
The file `recipes/_list-of-ingredients.cfg` can be copied and edited to create your own remix of Phyllome OS, which itself is a remix of Fedora.
```
cp recipes/_list-of-ingredients.cfg recipes/my-new-distro.cfg
```
Then edit the said file to include your favorite ingredient
```
nano recipes/my-new-distro.cfg
```
```
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# The list of ingredients for composing Phyllome OS
# Uncomment lines with "%include" to enable ingredient
# Installation method
# Exactly one option has to be picked
# %include ../ingredients/core.cfg # Text mode
# %include ../ingredients/live-core.cfg # For live systems only
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#graphical-or-text-or-cmdline
# Storage configuration
# Exactly one option has to be picked
# WARNING !!! Will erase local disks!
# %include ../ingredients/core-storage.cfg # Basic ext4 partition layout for UEFI-based systems
# %include ../ingredients/live-core-storage.cfg # For live systems only
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#part-or-partition
[...]
```
- Once you are done, you can [flatten](#flatten) the file and [kickstart](#kickstart) it as explained in the previous section.
## FAQ
If multiple dishes are affected by your ingredient, you can flatten them all
- Navigate to the recipes' directory
```
cd recipes
```
- Then use the following
```
for filename in *.cfg; do ksflatten -c "$filename" -o "../dishes/$filename"; done
```
* Navigate inside the `dishes` folder:
The following message can safetly be ignored:
```
$ cd ../dishes/
```
* You can then kickstart your own installation:
```
# virt-install \
--connect qemu:///system \
--metadata description="Phyllome OS Desktop, virtual edition, with Luanti" \
--os-variant fedora41 \
--virt-type kvm \
--arch x86_64 \
--machine q35 \
--name virtual-desktop-luanti \
--boot uefi \
--cpu host-model,topology.sockets=1,topology.cores=2,topology.threads=1 \
--vcpus 2 \
--memory 4096 \
--video virtio \
--graphics spice,listen=none \
--channel spicevmc \
--autoconsole none \
--console pty,target.type=virtio \
--sound none \
--network type=user,model=virtio \
--controller type=virtio-serial \
--controller type=usb,model=none \
--controller type=scsi,model=virtio-scsi \
--input type=keyboard,bus=virtio \
--input type=tablet,bus=virtio \
--rng /dev/urandom,model=virtio \
--disk path=/var/lib/libvirt/images/virtual-phyllome-desktop.img,format=raw,bus=virtio,cache=writeback,size=5 \
--location=https://download.fedoraproject.org/pub/fedora/linux/releases/42/Everything/x86_64/os/ \
--initrd-inject virtual-desktop-luanti.cfg --extra-args "inst.ks=file:virtual-desktop-luanti.cfg"
/usr/lib/python3.13/site-packages/pykickstart/commands/partition.py:461: KickstartParseWarning: A partition with the mountpoint / has already been defined.
```
## Acknowledgement

26
deploy-vm.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# Function to execute a script
execute_script() {
local script_to_execute="$1"
echo "Executing: $script_to_execute"
"$script_to_execute" || {
echo "Script failed: $script_to_execute"
return 1 # Indicate failure
}
return 0 # Indicate success
}
# Array of scripts
scripts=(
"./scripts/core-count.sh"
"./scripts/system-memory.sh"
"./scripts/deploy-distro.sh"
)
# Iterate through the scripts and execute them
for script in "${scripts[@]}"; do
execute_script "$script"
done
echo "All scripts executed."

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -61,7 +61,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -130,7 +130,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF
@ -193,7 +193,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -223,7 +223,7 @@ mkdir /mnt/sysimage/var/lib/libvirt/isos # Create a directory to store iso image
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor-amdcpu.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor-amdcpu.log
sed -i 's/\(quiet\)/\1 iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB.
@ -265,6 +265,7 @@ generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -299,6 +300,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -326,11 +330,6 @@ virt-top
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -61,7 +61,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -130,7 +130,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF
@ -193,7 +193,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -223,7 +223,7 @@ mkdir /mnt/sysimage/var/lib/libvirt/isos # Create a directory to store iso image
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor-intelcpu.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor-intelcpu.log
sed -i 's/\(quiet\)/\1 intel_iommu=on iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB.
@ -231,7 +231,7 @@ echo "options kvm_intel nested=1" >> /mnt/sysimage/etc/modprobe.d/kvm.conf # Add
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor-intelgpu.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor-intelgpu.log
sed -i 's/\(vfio-pci\)/\1 i915.enable_gvt=1/i' /mnt/sysimage/etc/default/grub # Load kernel modules in grub.
@ -275,6 +275,7 @@ generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -309,6 +310,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -336,11 +340,6 @@ virt-top
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -61,7 +61,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -130,7 +130,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF
@ -193,7 +193,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -223,7 +223,7 @@ mkdir /mnt/sysimage/var/lib/libvirt/isos # Create a directory to store iso image
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor-intelcpu.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor-intelcpu.log
sed -i 's/\(quiet\)/\1 intel_iommu=on iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB.
@ -265,6 +265,7 @@ generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -299,6 +300,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -326,11 +330,6 @@ virt-top
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -61,7 +61,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -130,7 +130,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF
@ -193,7 +193,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -257,6 +257,7 @@ generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -291,6 +292,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -318,11 +322,6 @@ virt-top
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

224
dishes/desktop.cfg Normal file
View File

@ -0,0 +1,224 @@
# Generated by pykickstart v3.62
#version=DEVEL
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --reconfig
# Keyboard layouts
keyboard --xlayouts='ch (fr)'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=link --hostname=phyllome-alpha --activate
# Shutdown after installation
shutdown
repo --name="fedora" --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
repo --name="updates" --mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f$releasever&arch=$basearch
# Root password
rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,systemd-resolved"
# System timezone
timezone Europe/Paris --utc
# Use network installation
url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch"
# X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration
bootloader --location=mbr --timeout=1
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot/efi --fstype="efi" --size=1024 --fsoptions="umask=0077,shortname=winnt" --label=efi
part /boot --fstype="ext4" --size=512 --label=boot
part / --fstype="ext4" --grow --label=root
%post --logfile=/mnt/sysimage/root/post.log
localectl set-keymap ch-fr # Set keymap to `ch-fr`. Alternatively, `us` can be picked.
dnf update -y # Update the system
grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful
%end
%post --nochroot --logfile=/mnt/sysimage/root/base-initial-setup-gnome.log
truncate -s 0 /mnt/sysimage/usr/share/gnome-initial-setup/vendor.conf # remove content of vendor.conf so that all options are made available
## Append lines to existing vendor.conf file, so that options are skipped upon reboot
cat >> /mnt/sysimage/usr/share/gnome-initial-setup/vendor.conf<< EOF
[pages]
skip=privacy
[goa]
providers=local-first!
EOF
%end
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
# picture-uri='file:///usr/share/backgrounds/elementary/Morskie Oko.jpg'
# EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.media-handling.gschema.override<< EOF
[org.gnome.desktop.media-handling]
automount-open=false
autorun-never=true
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.Terminal.gschema.override<< EOF
[org.gnome.Terminal.Legacy.Profile]
font='DejaVu Sans Mono 12'
use-system-font=false
audible-bell=false
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.wm.preferences.gschema.override<< EOF
[org.gnome.desktop.wm.preferences]
button-layout=':minimize,maximize,close'
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.a11y.gschema.override<< EOF
[org.gnome.desktop.a11y]
always-show-universal-access-status=true
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.interface.gschema.override<< EOF
[org.gnome.desktop.interface]
enable-animations=false
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.privacy.gschema.override<< EOF
[org.gnome.desktop.privacy]
remove-old-temp-files=true
remember-recent-files=false
remember-app-usage=false
disable-camera=true
disable-microphone=true
disable-sound-output=true
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.search-providers.gschema.override<< EOF
[org.gnome.desktop.search-providers]
disable-external=true
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.notifications.gschema.override<< EOF
[org.gnome.desktop.notifications.application]
enable-sound-alerts=false
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.sound.gschema.override<< EOF
[org.gnome.desktop.sound]
event-sounds=false
EOF
cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.thumbnailers.gschema.override<< EOF
[org.gnome.desktop.thumbnailers]
disable-all=true
EOF
glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%packages --exclude-weakdeps
NetworkManager
NetworkManager-config-connectivity-fedora
NetworkManager-wifi
alsa-sof-firmware
amd-gpu-firmware
atheros-firmware
audit
b43-fwcutter
b43-openfwwf
basesystem
bash
brcmfmac-firmware
cirrus-audio-firmware
coreutils
curl
dejavu-sans-mono-fonts
dhcp-client
dnf5
dnf5-plugins
dracut
dracut-config-rescue
e2fsprogs
fedora-remix-logos
filesystem
firefox
firewalld
fwupd
generic-logos
generic-release
generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
hostname
intel-audio-firmware
intel-gpu-firmware
intel-vsc-firmware
iproute
iputils
iwlegacy-firmware
iwlwifi-dvm-firmware
iwlwifi-mvm-firmware
kbd
kernel
less
libertas-firmware
libusb
man-db
mesa-dri-drivers
mozilla-ublock-origin.noarch
mt7xxx-firmware
nano
ncurses
nvidia-gpu-firmware
nxpwireless-firmware
openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
procps-ng
realtek-firmware
rootfiles
rpm
selinux-policy-targeted
setup
shadow-utils
sssd-common
sssd-kcm
sudo
systemd
systemd-resolved
tiwilink-firmware
usbutils
util-linux
vim-minimal
wget
wpa_supplicant
zram-generator-defaults
-gnome-tour
%end

View File

@ -19,7 +19,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -44,7 +44,7 @@ grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful
%end
%post --logfile=/mnt/sysimage/root/post.log
%post --logfile=/mnt/sysimage/root/post-live-core.log
# Enable livesys services
systemctl enable livesys.service
@ -117,7 +117,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -186,7 +186,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF
@ -249,7 +249,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -317,6 +317,7 @@ generic-release-notes
glibc
glibc-all-langpacks
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -354,6 +355,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -381,11 +385,6 @@ virt-top
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -19,7 +19,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager"
services --enabled="NetworkManager,systemd-resolved"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -44,7 +44,7 @@ grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful
%end
%post --logfile=/mnt/sysimage/root/post.log
%post --logfile=/mnt/sysimage/root/post-live-core.log
# Enable livesys services
systemctl enable livesys.service
@ -117,7 +117,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -224,6 +224,7 @@ generic-release-notes
glibc
glibc-all-langpacks
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -256,6 +257,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -278,11 +282,6 @@ vim-minimal
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -19,7 +19,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -42,7 +42,7 @@ grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful
%end
%post --logfile=/mnt/sysimage/root/post.log
%post --logfile=/mnt/sysimage/root/post-live-core.log
# Enable livesys services
systemctl enable livesys.service
@ -101,7 +101,7 @@ sed -i 's/^livesys_session=.*/livesys_session="gnome"/' /etc/sysconfig/livesys
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -223,10 +223,5 @@ virt-install
virt-top
wget
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
%end

View File

@ -19,7 +19,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager"
services --enabled="NetworkManager,systemd-resolved"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -42,7 +42,7 @@ grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful
%end
%post --logfile=/mnt/sysimage/root/post.log
%post --logfile=/mnt/sysimage/root/post-live-core.log
# Enable livesys services
systemctl enable livesys.service
@ -165,10 +165,5 @@ util-linux
vim-minimal
wget
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -61,7 +61,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -130,7 +130,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF
@ -193,7 +193,7 @@ glib-compile-schemas /mnt/sysimage/usr/share/glib-2.0/schemas/
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -250,6 +250,7 @@ generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -274,6 +275,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -301,11 +305,6 @@ virt-top
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager"
services --enabled="NetworkManager,systemd-resolved"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -61,7 +61,7 @@ EOF
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-desktop-gnome.log
%post --nochroot --logfile=/mnt/sysimage/root/base-desktop-gnome.log
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]
@ -157,6 +157,7 @@ generic-release-common
generic-release-notes
glibc
gnome-backgrounds.noarch
gnome-control-center
gnome-initial-setup
gnome-shell
gnome-terminal
@ -176,6 +177,9 @@ openssh-clients
openssh-server
parted
pciutils
pipewire-alsa
pipewire-jack-audio-connection-kit
pipewire-pulseaudio
plymouth
policycoreutils
prefixdevname
@ -198,11 +202,6 @@ vim-minimal
wget
wpa_supplicant
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-gnome-tour
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager"
services --enabled="NetworkManager,systemd-resolved"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -52,12 +52,7 @@ curl
dhcp-client
dnf5
dracut
fedora-remix-logos
filesystem
generic-logos
generic-release
generic-release-common
generic-release-notes
glibc
hostname
initial-setup
@ -79,11 +74,6 @@ util-linux
-audit
-coreutils
-e2fsprogs
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
-less
-man-db
-openssh-clients

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager,libvirtd"
services --enabled="NetworkManager,systemd-resolved,libvirtd"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -45,7 +45,7 @@ grub2-mkconfig -o /boot/grub2/grub.cfg # Unsure it is actually useful
%end
%post --nochroot --logfile=/mnt/sysimage/opt/base-hypervisor.log
%post --nochroot --logfile=/mnt/sysimage/root/base-hypervisor.log
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf
@ -143,10 +143,5 @@ virt-install
virt-top
wget
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
%end

View File

@ -21,7 +21,7 @@ rootpw --iscrypted --lock locked
# SELinux configuration
selinux --disabled
# System services
services --enabled="NetworkManager"
services --enabled="NetworkManager,systemd-resolved"
# System timezone
timezone Europe/Paris --utc
# Use network installation
@ -104,10 +104,5 @@ util-linux
vim-minimal
wget
zram-generator-defaults
-fedora-logos
-fedora-release
-fedora-release-common
-fedora-release-identity-basic
-fedora-release-notes
%end

View File

@ -1,18 +1,10 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file provides a basic block to build a minimal and customized desktop-oriented operating system using GNOME Shell.
xconfig --startxonboot --defaultdesktop=GNOME # Start the display session on boot. Although it says --startx, which seems to imply xorg, it is actually generic and thus works also with Wayland.
%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak dependencies
gnome-shell # the version 3 of the GNOME desktop environment, without any presintalled applications
gnome-terminal # install the default terminal for GNOME Shell
gnome-control-center # Utilities to configure the GNOME desktop
-gnome-tour # delete GNOME Tour so it doesn't automatically launch on boot
mesa-dri-drivers # add mesa drivers otherwise there is a blank screen when first booting a desktop-based kickstart without virtualization tools
dejavu-sans-mono-fonts # the gnome-shell package doesn't include much fonts by default, resulting in weird spacings in GNOME Terminal. GNOME Terminal unfortunately doesn't automatically pick this font
@ -21,10 +13,13 @@ wpa_supplicant # WPA Supplicant for Linux. It is not packaged by default in GNOM
NetworkManager-wifi # Provides the plugin to manage Wireless networking within GNOME Shell
firefox # Internet browser
mozilla-ublock-origin.noarch # An efficient ad blocker for Firefox
pipewire-alsa # PipeWire media server ALSA support
pipewire-pulseaudio # PipeWire PulseAudio implementation
pipewire-jack-audio-connection-kit # PipeWire JACK implementation
%end # End of the packagages section
%post --nochroot --log=/mnt/sysimage/opt/base-desktop-gnome.log # Beginning of %post section. Those commands are executed outside the chroot environment
%post --nochroot --log=/mnt/sysimage/root/base-desktop-gnome.log # Beginning of %post section. Those commands are executed outside the chroot environment
# cat >> /mnt/sysimage/usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.override<< EOF
# [org.gnome.desktop.background]

View File

@ -1,19 +1,10 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file provides a virtual machine manager, sets it to auto-launch and tweaked it.
%packages --exclude-weakdeps # Beginning of the packages section. Excludes weak package dependencies
virt-manager # Install virt-manager, a graphical front-end for QEMU/KVM
%end
%post --nochroot --log=/mnt/sysimage/opt/base-desktop-gnome-virtual-machine-manager.log # Beginning of %post section. Those commands are executed outside the chroot environment. Add logging.
%post --nochroot --log=/mnt/sysimage/root/base-desktop-gnome-virtual-machine-manager.log # Beginning of %post section. Those commands are executed outside the chroot environment. Add logging.
# Create a file to autostart virt-manager
cat > /mnt/sysimage/etc/xdg/autostart/virt-manager.desktop << EOF

View File

@ -1,12 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file provides guest-agents, which are useful for virtual machines
%packages --exclude-weakdeps # Beginning of the packages section. Does not include weak dependencies.
qemu-guest-agent # "QEMU guest agent" The qemu-guest agent is unnecessary for a bare-metal system. However, it is included here to cover cases where this kickstart file is used to deploy a virtual machine

View File

@ -1,13 +1,4 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file preloads the vfio-pci driver for devices that are binded to it, activates IOMMU and enables nested-virtualization for AMD (tm) CPUs
%post --nochroot --log=/mnt/sysimage/opt/base-hypervisor-amdcpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting
%post --nochroot --log=/mnt/sysimage/root/base-hypervisor-amdcpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting
sed -i 's/\(quiet\)/\1 iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB.

View File

@ -1,13 +1,4 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file preloads the vfio-pci driver for devices that are binded to it, activates IOMMU and enables nested-virtualization for Intel(tm) CPUs
%post --nochroot --log=/mnt/sysimage/opt/base-hypervisor-intelcpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting
%post --nochroot --log=/mnt/sysimage/root/base-hypervisor-intelcpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting
sed -i 's/\(quiet\)/\1 intel_iommu=on iommu=pt rd.driver.pre=vfio-pci/i' /mnt/sysimage/etc/default/grub # Load kernel modules in GRUB.

View File

@ -1,14 +1,4 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file enables vfio-mdev and KVMGT for compatible Intel(tm) graphic cards, allowing a host to create virtual GPUs.
# The fifth generation of Broadwell-based SoC are compatible, up to the ninth generation (Cannon Lake and Whiskey Lake). Tiger Lake and later SoC based on the new Xe GPU architecture are not compatible, as they use SR/IOV instead.
%post --nochroot --log=/mnt/sysimage/opt/base-hypervisor-intelgpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installtion troubleshooting
%post --nochroot --log=/mnt/sysimage/root/base-hypervisor-intelgpu.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installtion troubleshooting
sed -i 's/\(vfio-pci\)/\1 i915.enable_gvt=1/i' /mnt/sysimage/etc/default/grub # Load kernel modules in grub.

View File

@ -1,13 +1,4 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file provides a basic, generic building block to build a virtualization host.
services --enabled="NetworkManager,libvirtd" # Without libvirtd here, it appears the service won't automatically start
services --enabled="NetworkManager,systemd-resolved,libvirtd" # Without libvirtd here, it appears the service won't automatically start
%packages --exclude-weakdeps # Beginning of the packages section. Does not include weak dependencies.
@ -24,7 +15,7 @@ guestfs-tools # Complementary tools useful for interacting with vith guest syste
%end # End of the packages section
%post --nochroot --log=/mnt/sysimage/opt/base-hypervisor.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting
%post --nochroot --log=/mnt/sysimage/root/base-hypervisor.log # Beginning of %post section. Those commands are executed outside the chroot environment. Logging is enabled to help with post-installation troubleshooting
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd
echo "vfio" > /mnt/sysimage/etc/modules-load.d/vfio.conf

View File

@ -1,18 +0,0 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# Provides hand-picked packages
%packages --exclude-weakdeps # Beginning of the package section. Does not include weak dependencies. Description courtesy of the Fedora project
pciutils # PCI bus related utilities
libusb # Library for accessing USB devices
usbutils # Linux USB utilities
wget # An advanced file and recursive website downloader
nano # A small text editor
%end # End of the packages section

View File

@ -1,14 +1,7 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# Provides the default but not necessary packages that are part of the core DNF group
%packages --exclude-weakdeps # Beginning of the package section. Does not include weak dependencies. Description courtesy of the Fedora project
# Default but not necessary packages that are part of the core DNF group
NetworkManager # Network connection manager and user applications
NetworkManager-config-connectivity-fedora # NetworkManager config file for connectivity checking via Fedora servers
dnf5-plugins # Plugins for dnf5
@ -20,4 +13,11 @@ prefixdevname # Udev helper utility that provides network interface naming using
systemd-resolved # Network Name Resolution manager
zram-generator-defaults # Default configuration for zram-generator
# Hand-picked packages
pciutils # PCI bus related utilities
libusb # Library for accessing USB devices
usbutils # Linux USB utilities
wget # An advanced file and recursive website downloader
nano # A small text editor
%end # End of the packages section

View File

@ -1,24 +0,0 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# Provides packages to make Phyllome OS a generic distro
# It removes Fedora logos to comply with Fedora Remix legal guidelines: https://fedoraproject.org/wiki/Remix
%packages --exclude-weakdeps # Beginning of the package section. Does not include weak dependencies. Description courtesy of the Fedora project
-fedora-logos # Fedora-related icons and pictures
-fedora-release # Fedora release files
-fedora-release-notes # Release Notes
-fedora-release-common # fedora-release-common
-fedora-release-identity-basic # Package providing the basic Fedora identity
fedora-remix-logos # Fedora Remix logos
generic-release # Generic release files
generic-logos # Icons and pictures
generic-release-common # Generic release files
generic-release-notes # Release Notes
%end # End of the packages section

View File

@ -46,4 +46,12 @@ systemd # System and Service Manager
util-linux # Collection of basic system utilities
vim-minimal # A minimal version of the VIM editor
# Packages to make Phyllome OS a generic distro
# Adds packages to comply with Fedora Remix legal guidelines: https://fedoraproject.org/wiki/Remix
fedora-remix-logos # Fedora Remix logos
generic-release # Generic release files
generic-logos # Icons and pictures
generic-release-common # Generic release files
generic-release-notes # Release Notes
%end # End of the packages section

View File

@ -1,13 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# What ? This kickstart file contains scripts made to be launched right after the system has been installed but before the first boot
# More information: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-6-post-installation-script
%post --nochroot --log=/mnt/sysimage/root/post-nochroot.log # Beginning of the post-installation section. Log all messages to a given file
%end # End of the %post section

View File

@ -1,13 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# What ? This kickstart file contains scripts made to be launched right after the system has been installed but before the first boot
# More information: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-6-post-installation-script
%post --log=/mnt/sysimage/root/post.log # Beginning of the post-installation section. Log all messages to a given file
localectl set-keymap ch-fr # Set keymap to `ch-fr`. Alternatively, `us` can be picked.

View File

@ -1,13 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# Script triggered just after the system storage has been set up
# More information: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-5-pre-install-script
%pre --log=/mnt/sysimage/root/pre-install.log Beginning of the pre-installation section. Log all messages to a given file
%end # End of the %post section

View File

@ -1,13 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# Script triggered just after the kickstart file has been parsed
# More information: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-4-pre-installation-script
%pre --log=/mnt/sysimage/root/pre.log Beginning of the pre section. Log all messages to a given file
%end # End of the %post section

View File

@ -1 +1 @@
services --enabled=NetworkManager # List of comma-separated systemd services that can be explicitly enabled
services --enabled=NetworkManager,systemd-resolved # List of comma-separated systemd services that can be explicitly enabled

View File

@ -1,10 +1 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart ingredient provides GNU GRUB for live systems
bootloader --location=none --timeout=1 # Set the GNU GRUB bootloader timeout to 1 and to location to none

View File

@ -1,12 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file provides a basic block to build a minimal, live system
%packages # Beginning of the package section. Include weak dependencies. Description courtesy of the Fedora project
@anaconda-tools

View File

@ -1,12 +1,3 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart ingredients allows for scripts to be executed after the installations
%post --log=/mnt/sysimage/root/post-live-session.log # Beginning of the post-installation section. Add logging.
# set livesys session type

View File

@ -1,13 +1,4 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart ingredients allows for scripts to be executed after the installation
%post --log=/mnt/sysimage/root/post.log # Beginning of the post-installation section. Add logging.
%post --log=/mnt/sysimage/root/post-live-core.log # Beginning of the post-installation section. Add logging.
# Enable livesys services
systemctl enable livesys.service

View File

@ -1,15 +1,5 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# What ? This kickstart file provides a basic partition layout for live systems, without encryption.
zerombr # WARNING : Dangerous command ! Will clear the Master Boot Record
clearpart --all --initlabel # Partition clearing information. This setup uses GPT by default.
bootloader --timeout=1 # Set the GNU GRUB bootloader timeout to 1
part / --fstype="ext4" --size=5120 # Create a root partition of around 7GB
part / --size=8576

View File

@ -1,12 +1 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
#
# What ? This kickstart ingredient defines the installation method for live systems
#text # Undefine an installation mode
poweroff # Shut down the system after a successful installation

View File

@ -6,7 +6,7 @@
# /_/ /____/
# The list of ingredients for composing Phyllome OS
# Uncomment to enable option
# Uncomment lines with "%include" to enable ingredient
# Installation method
# Exactly one option has to be picked
@ -47,55 +47,53 @@
# Repositories
# Exactly one option has to be picked
# %include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
# %include ../ingredients/core-fedora-repo-rawhide.cfg # Offical repositories for Fedora Rawhide
# %include ../ingredients/core-fedora-repo.cfg # Official repositories for Fedora
# %include ../ingredients/core-fedora-repo-rawhide.cfg # Official repositories for Fedora Rawhide
### Package selection ###
# Mandatory packages. Exactly one option has to be picked
# Packages
# Exactly one option has to be picked
# %include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
# %include ../ingredients/core-packages-mandatory-trimming-attempt.cfg # Trimming attempt for the mandatory packages
# Mandatory packages to make it a generic distribution. Required
# %include ../ingredients/core-packages-generic.cfg # Generic
# Mandatory packages for live edition. Required
# Mandatory packages for live editions
# %include ../ingredients/live-core-mandatory-packages.cfg # For live systems
# Other optional packages
# Recommended but not strictly required
# %include ../ingredients/core-packages-default.cfg # Recommended extra packages
# %include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support. Recommended for non-virtual systems
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-9-package-selection
# Other optional packages. Recommended but not stricly required
# %include ../ingredients/core-packages-default.cfg # Default but not necessary packages
# %include ../ingredients/core-packages-custom.cfg # Hand-picked packages
# %include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
### End of Package selection ###
### Pre and post section ###
# Scripts launched before the installation. Optionnal. Two options can be picked
# Pre- and post-installation sections
# Optional
# All options can be picked
# %include ../ingredients/pre.cfg # Triggered just after the kickstart file has been parsed
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-4-pre-installation-script
# %include ../ingredients/pre-install.cfg # Script triggered just after the system storage has been set up
# Scripts launched after the installation. Optionnal.
# %include ../ingredients/phyllomeos/ingredients/core-post-nochroot.cfg # Triggered after the installation no chroot
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-5-pre-install-script
# %include ../ingredients/core-post-nochroot.cfg # Triggered after the installation no chroot
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-6-post-installation-script
# %include ../ingredients/core-post.cfg # Triggered after the installation
# Documentation: https://pykickstart.readthedocs.io/en/latest/kickstart-docs.html#chapter-6-post-installation-script
# Two options have to be picked, for live systems only
# %include ../ingredients/live-core-post.cfg # Post configuration script for a live system only
# %include ../ingredients/live-core-post-live-session.cfg # Live session script
### End of pre and post section ###
### Pre and post section ###
# OEM setup
# Exactly one option has to be picked
# %include ../ingredients/core-desktop-initial-setup.cfg # Ensures that GNOME initial setup will launch on the first system start-up
# %include ../ingredients/core-desktop-initial-setup.cfg # Ensures that GNOME initial setup will launch on the first system start-up
# %include ../ingredients/core-server-initial-setup.cfg # For headless systems
# A GNOME Shell-based desktop environment.
# Optionnal
# A GNOME Shell-based desktop environment
# Optional
# %include ../ingredients/base-desktop-gnome.cfg # A GNOME Shell-based desktop environment
# Documentation: https://fedoraproject.org/wiki/InitialSetup
# Virtualization-related packages
# Optionnal
# Optional
# %include ../ingredients/base-desktop-virtual-machine-manager.cfg # Virtual Machine Manager
# %include ../ingredients/base-hypervisor.cfg # Base hypervisor
# %include ../ingredients/base-hypervisor.cfg # Generic building block to build a virtualization host
# Virtualization-related options
# Optionnal
# Optional
# %include ../ingredients/base-hypervisor-amdcpu.cfg # Virtualization configuration for AMD (tm) CPUs
# %include ../ingredients/base-hypervisor-intelcpu.cfg # Virtualization configuration for Intel (tm) CPUs
# %include ../ingredients/base-hypervisor-intelgpu.cfg # Virtualization configuration for Intel (tm) GPUs from 4th to the 9th generation (compatible with vfio-mdev)

View File

@ -16,8 +16,6 @@
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-generic.cfg # Make it a generic distribution
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Provides extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Post configuration script

View File

@ -16,9 +16,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation

View File

@ -15,9 +15,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation

View File

@ -15,9 +15,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation

23
recipes/desktop.cfg Normal file
View File

@ -0,0 +1,23 @@
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
# A recipe for a generic desktop hypervisor
%include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language
%include ../ingredients/core-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/core-initial-setup-desktop.cfg # OEM setup for GNOME Shell
%include ../ingredients/base-desktop-gnome.cfg # A GNOME Shell-based desktop environment

View File

@ -15,10 +15,8 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/live-core-mandatory-packages.cfg # For live systems
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation

View File

@ -15,10 +15,8 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/live-core-mandatory-packages.cfg # For live systems
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation

View File

@ -15,10 +15,8 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/live-core-mandatory-packages.cfg # For live systems
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-packages-hardware-support.cfg # Extended hardware support
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation

View File

@ -15,10 +15,8 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/live-core-mandatory-packages.cfg # For live systems
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/live-core-post.cfg # Post configuration script for a live system only

View File

@ -15,9 +15,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/core-initial-setup-desktop.cfg # OEM setup for GNOME Shell

View File

@ -15,9 +15,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/core-initial-setup-desktop.cfg # OEM setup for GNOME Shell

View File

@ -15,7 +15,6 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory-trimming-attempt.cfg # Trimming attempt for the mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/core-initial-setup-server.cfg # For headless systems

View File

@ -15,9 +15,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/core-initial-setup-server.cfg # For headless systems

View File

@ -15,9 +15,7 @@
%include ../ingredients/core-services.cfg # Required systemd services
%include ../ingredients/core-network.cfg # Network configuration
%include ../ingredients/core-packages-mandatory.cfg # Mandatory packages
%include ../ingredients/core-packages-generic.cfg # Generic
%include ../ingredients/core-packages-default.cfg # Default but not necessary packages
%include ../ingredients/core-packages-custom.cfg # Hand-picked packages
%include ../ingredients/core-fedora-repo.cfg # Offical repositories for Fedora
%include ../ingredients/core-post.cfg # Triggered after the installation
%include ../ingredients/core-initial-setup-server.cfg # For headless systems

13
scripts/core-count.sh Executable file
View File

@ -0,0 +1,13 @@
#!/bin/bash
# Get the core count using nproc --all
core_count=$(nproc --all)
# Check if nproc --all returns a numerical value greater than 2
if (( core_count > 2 )); then
echo "System has more than 2 core (nproc --all: $core_count)."
else
echo "Warning: System has only $core_count core)."
echo "The script requires at least four cores"
exit 1 # Exit with an error code to indicate the condition is not met
fi

122
scripts/deploy-distro.sh Executable file
View File

@ -0,0 +1,122 @@
#!/bin/bash
# Default values
DEFAULT_MEMORY=4096
DEFAULT_DISK_SIZE=10
# Prompt user for VM memory size
read -r -p "Provide memory desired VM memory in MB or press Enter to keep default value of $DEFAULT_MEMORY): " memory_size
memory_size=${memory_size:-$DEFAULT_MEMORY}
# Validate memory size
if ! [[ "$memory_size" =~ ^[0-9]+$ ]] || (( memory_size < 2048 )); then
echo "Invalid memory size. Must be a number greater than or equal to 2048. Using default value of $DEFAULT_MEMORY."
memory_size=$DEFAULT_MEMORY
fi
# Prompt user for VM disk size
read -r -p "Provide desired disk size of VM in GB or press Enter to use default disk size of $DEFAULT_DISK_SIZE: " disk_size
disk_size=${disk_size:-$DEFAULT_DISK_SIZE}
# Validate disk size
if ! [[ "$disk_size" =~ ^[0-9]+$ ]] || (( disk_size < 10 )); then
echo "Invalid disk size. Must be a number greater than or equal to 10 GiB. Using default value of $DEFAULT_DISK_SIZE."
disk_size=$DEFAULT_DISK_SIZE
fi
# Define URI options for qemu
uri_options=("qemu:///system" "qemu:///session")
# Prompt user to select URI
select uri in "${uri_options[@]}"; do
if [[ -n "$uri" ]]; then
break # Exit the select loop if a valid option is chosen
else
echo "Invalid selection. Please choose a valid URI."
fi
done
case "$uri" in
qemu:///session)
disk_path="$HOME/.local/share/libvirt/images/"
;;
qemu:///system)
disk_path="/var/lib/libvirt/images/"
;;
*)
echo "Invalid URI selected. Exiting."
exit 1
esac
case "$uri" in
qemu:///session)
network_type="user"
;;
qemu:///system)
network_type="default"
;;
*)
echo "Invalid URI selected. Exiting."
exit 1
esac
# Get a list of files in "dishes" directory, restricted to those starting with "virtual"
mapfile -t dish_name < <(find "dishes/" -maxdepth 1 -type f -printf "%f\n" | sed 's/\.[^.]*$//')
# Check if there are any files
if [ ${#dish_name[@]} -eq 0 ]; then
echo "No files found in the directory ../dishes."
exit 1
fi
# Display the files with numbered options
echo "Available files:"
for i in "${!dish_name[@]}"; do
echo "$((i + 1)). ${dish_name[$i]}"
done
# Prompt the user to select a file
read -r -p "Enter the number of the file you want to select: " choice
# Validate the user's choice
if ! [[ "$choice" =~ ^[0-9]+$ ]] || (( choice < 1 )) || (( choice > ${#dish_name[@]} )); then
echo "Invalid choice. Please enter a number from 1 to ${#dish_name[@]}."
exit 1
fi
# Get the selected filename
vm_name="${dish_name[$((choice - 1))]}"
# Output the selected filename
echo "You selected: $vm_name"
# virt-install command with user-defined VM name
virt-install \
--connect "$uri" \
--os-variant fedora41 \
--virt-type kvm \
--arch x86_64 \
--machine q35 \
--name "$vm_name" \
--boot uefi \
--cpu host-model,topology.sockets=1,topology.cores=2,topology.threads=2 \
--vcpus 4 \
--memory "$memory_size" \
--video virtio \
--channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \
--autoconsole none \
--console pty,target.type=virtio \
--sound virtio \
--network type="$network_type",model=virtio \
--controller type=virtio-serial \
--controller type=usb,model=none \
--controller type=scsi,model=virtio-scsi \
--input type=keyboard,bus=virtio \
--input type=mouse,bus=virtio \
--rng /dev/urandom,model=virtio \
--disk path="${disk_path}/${vm_name}.img",format=raw,bus=virtio,cache=writeback,size="$disk_size" \
--location=https://download.fedoraproject.org/pub/fedora/linux/releases/42/Everything/x86_64/os/ \
--initrd-inject ./dishes/"$vm_name".cfg \
--extra-args "inst.ks=file:/$vm_name.cfg"
echo "virt-install command executed with VM name: $vm_name"

14
scripts/system-memory.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# Read the total memory from /proc/meminfo in MiB
total_memory=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
# Convert to MiB by dividing by 1024 (since MemTotal is in KiB)
total_memory_mb=$(( total_memory / 1024 ))
if [[ "$total_memory_mb" -lt "4096" ]]; then
echo "Not enough RAM: The system has only ${total_memory_mb}MiB of RAM, but at least 4096 is required."
exit 1
else
echo "Sufficient memory available. System has ${total_memory_mb}MiB of RAM."
fi