16 Commits
main ... main

Author SHA1 Message Date
Lukas Greve
246fba3efa switch to systemd-boot 2025-09-07 20:17:05 +02:00
Lukas Greve
2e56372e6d new systemd-boot ingredient for live systems 2025-09-07 20:15:20 +02:00
Lukas Greve
515950daad move to root directory 2025-09-05 18:04:55 +02:00
Lukas Greve
1fecc5ea1b adjust list of packages
packages related to libvirt are explicitly picked
2025-09-05 18:04:01 +02:00
Lukas Greve
8c2b118c8e add curl 2025-07-13 20:53:28 +02:00
Lukas Greve
dd41bcb66b refine the package selection 2025-07-13 20:53:21 +02:00
Lukas Greve
e9e70c6ce3 add gitignore file, excluding aider 2025-07-13 20:53:09 +02:00
Lukas Greve
6a043dcd3d move and rename list of ingredients 2025-07-01 21:28:50 +02:00
Lukas Greve
cf3ff84a6d new script to install prerequisites on common Linux distribution 2025-07-01 21:28:33 +02:00
Lukas Greve
46bbe1d5e9 add a iommu device in the automated VM deployment and set memballon to disable 2025-06-17 14:51:14 +02:00
Lukas Greve
b98f41512d restore variables for setting specific path and networking for session and system URI 2025-06-15 17:14:31 +02:00
Lukas Greve
8c96623ad7 make selection or URI options for qemu more robust. Allow the user to just use Enter
Only allow selection of files that starts with virtual (this script is only used to deploy virtual machine)

Reworked some comments
2025-06-15 14:32:46 +02:00
Lukas Greve
358e67a041 remove whitespace 2025-06-15 14:31:00 +02:00
Lukas Greve
3b4724cf86 Removing information to the user when script goes through. 2025-06-15 14:30:48 +02:00
Lukas Greve
684a49af14 no need to echo when it succeeds 2025-06-15 14:30:00 +02:00
Lukas Greve
e1207278a3 Add possibility to pick URI, from session to system 2025-06-08 11:51:15 +02:00
35 changed files with 243 additions and 83 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.aider*

View File

@@ -17,7 +17,7 @@ chmod +x deploy-vm.sh
Executing: ./scripts/core-count.sh Executing: ./scripts/core-count.sh
System has more than 2 core (nproc --all: 6). System has more than 2 core (nproc --all: 6).
[...]] [...]
10. virtual-desktop-hypervisor 10. virtual-desktop-hypervisor
[...] [...]
Enter the number of the file you want to select: 10 Enter the number of the file you want to select: 10

View File

@@ -13,6 +13,7 @@ execute_script() {
# Array of scripts # Array of scripts
scripts=( scripts=(
"./scripts/install-prerequisites-on-linux.sh"
"./scripts/core-count.sh" "./scripts/core-count.sh"
"./scripts/system-memory.sh" "./scripts/system-memory.sh"
"./scripts/deploy-distro.sh" "./scripts/deploy-distro.sh"

View File

@@ -269,7 +269,6 @@ gnome-control-center
gnome-initial-setup gnome-initial-setup
gnome-shell gnome-shell
gnome-terminal gnome-terminal
guestfs-tools
hostname hostname
intel-audio-firmware intel-audio-firmware
intel-gpu-firmware intel-gpu-firmware
@@ -283,11 +282,22 @@ kbd
kernel kernel
less less
libertas-firmware libertas-firmware
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
man-db man-db
mesa-dri-drivers mesa-dri-drivers
mozilla-ublock-origin.noarch mozilla-ublock-origin.noarch
@@ -307,7 +317,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-kvm qemu-kvm
realtek-firmware realtek-firmware
rootfiles rootfiles
@@ -326,7 +335,6 @@ util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-manager virt-manager
virt-top
wget wget
wpa_supplicant wpa_supplicant
zram-generator-defaults zram-generator-defaults

View File

@@ -279,7 +279,6 @@ gnome-control-center
gnome-initial-setup gnome-initial-setup
gnome-shell gnome-shell
gnome-terminal gnome-terminal
guestfs-tools
hostname hostname
intel-audio-firmware intel-audio-firmware
intel-gpu-firmware intel-gpu-firmware
@@ -293,11 +292,22 @@ kbd
kernel kernel
less less
libertas-firmware libertas-firmware
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
man-db man-db
mesa-dri-drivers mesa-dri-drivers
mozilla-ublock-origin.noarch mozilla-ublock-origin.noarch
@@ -317,7 +327,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-kvm qemu-kvm
realtek-firmware realtek-firmware
rootfiles rootfiles
@@ -336,7 +345,6 @@ util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-manager virt-manager
virt-top
wget wget
wpa_supplicant wpa_supplicant
zram-generator-defaults zram-generator-defaults

View File

@@ -269,7 +269,6 @@ gnome-control-center
gnome-initial-setup gnome-initial-setup
gnome-shell gnome-shell
gnome-terminal gnome-terminal
guestfs-tools
hostname hostname
intel-audio-firmware intel-audio-firmware
intel-gpu-firmware intel-gpu-firmware
@@ -283,11 +282,22 @@ kbd
kernel kernel
less less
libertas-firmware libertas-firmware
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
man-db man-db
mesa-dri-drivers mesa-dri-drivers
mozilla-ublock-origin.noarch mozilla-ublock-origin.noarch
@@ -307,7 +317,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-kvm qemu-kvm
realtek-firmware realtek-firmware
rootfiles rootfiles
@@ -326,7 +335,6 @@ util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-manager virt-manager
virt-top
wget wget
wpa_supplicant wpa_supplicant
zram-generator-defaults zram-generator-defaults

View File

@@ -29,7 +29,7 @@ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$rele
# X Window System configuration information # X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration # System bootloader configuration
bootloader --location=mbr --timeout=1 bootloader --location=mbr --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information
@@ -261,7 +261,6 @@ gnome-control-center
gnome-initial-setup gnome-initial-setup
gnome-shell gnome-shell
gnome-terminal gnome-terminal
guestfs-tools
hostname hostname
intel-audio-firmware intel-audio-firmware
intel-gpu-firmware intel-gpu-firmware
@@ -275,11 +274,22 @@ kbd
kernel kernel
less less
libertas-firmware libertas-firmware
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
man-db man-db
mesa-dri-drivers mesa-dri-drivers
mozilla-ublock-origin.noarch mozilla-ublock-origin.noarch
@@ -299,7 +309,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-kvm qemu-kvm
realtek-firmware realtek-firmware
rootfiles rootfiles
@@ -318,7 +327,6 @@ util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-manager virt-manager
virt-top
wget wget
wpa_supplicant wpa_supplicant
zram-generator-defaults zram-generator-defaults

View File

@@ -29,7 +29,7 @@ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$rele
# X Window System configuration information # X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration # System bootloader configuration
bootloader --location=mbr --timeout=1 bootloader --location=mbr --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information

View File

@@ -27,7 +27,7 @@ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$rele
# X Window System configuration information # X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration # System bootloader configuration
bootloader --location=none --timeout=1 bootloader --location=none --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information
@@ -321,7 +321,6 @@ gnome-control-center
gnome-initial-setup gnome-initial-setup
gnome-shell gnome-shell
gnome-terminal gnome-terminal
guestfs-tools
hostname hostname
intel-audio-firmware intel-audio-firmware
intel-gpu-firmware intel-gpu-firmware
@@ -337,11 +336,22 @@ kernel-modules
kernel-modules-extra kernel-modules-extra
less less
libertas-firmware libertas-firmware
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
livesys-scripts livesys-scripts
man-db man-db
mesa-dri-drivers mesa-dri-drivers
@@ -362,7 +372,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-kvm qemu-kvm
realtek-firmware realtek-firmware
rootfiles rootfiles
@@ -381,7 +390,6 @@ util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-manager virt-manager
virt-top
wget wget
wpa_supplicant wpa_supplicant
zram-generator-defaults zram-generator-defaults

View File

@@ -27,7 +27,7 @@ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$rele
# X Window System configuration information # X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration # System bootloader configuration
bootloader --location=none --timeout=1 bootloader --location=none --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information

View File

@@ -25,7 +25,7 @@ timezone Europe/Paris --utc
# Use network installation # Use network installation
url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch" url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch"
# System bootloader configuration # System bootloader configuration
bootloader --location=none --timeout=1 bootloader --location=none --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information
@@ -165,7 +165,6 @@ generic-release-common
generic-release-notes generic-release-notes
glibc glibc
glibc-all-langpacks glibc-all-langpacks
guestfs-tools
hostname hostname
initial-setup initial-setup
intel-audio-firmware intel-audio-firmware
@@ -182,11 +181,22 @@ kernel-modules
kernel-modules-extra kernel-modules-extra
less less
libertas-firmware libertas-firmware
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
livesys-scripts livesys-scripts
man-db man-db
mt7xxx-firmware mt7xxx-firmware
@@ -202,7 +212,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-kvm qemu-kvm
realtek-firmware realtek-firmware
rootfiles rootfiles
@@ -220,7 +229,6 @@ usbutils
util-linux util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-top
wget wget
zram-generator-defaults zram-generator-defaults

View File

@@ -25,7 +25,7 @@ timezone Europe/Paris --utc
# Use network installation # Use network installation
url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch" url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch"
# System bootloader configuration # System bootloader configuration
bootloader --location=none --timeout=1 bootloader --location=none --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information

View File

@@ -29,7 +29,7 @@ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$rele
# X Window System configuration information # X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration # System bootloader configuration
bootloader --location=mbr --timeout=1 bootloader --location=mbr --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information
@@ -254,18 +254,28 @@ gnome-control-center
gnome-initial-setup gnome-initial-setup
gnome-shell gnome-shell
gnome-terminal gnome-terminal
guestfs-tools
hostname hostname
iproute iproute
iputils iputils
kbd kbd
kernel kernel
less less
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
man-db man-db
mesa-dri-drivers mesa-dri-drivers
mozilla-ublock-origin.noarch mozilla-ublock-origin.noarch
@@ -282,7 +292,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-guest-agent qemu-guest-agent
qemu-kvm qemu-kvm
rootfiles rootfiles
@@ -301,7 +310,6 @@ util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-manager virt-manager
virt-top
wget wget
wpa_supplicant wpa_supplicant
zram-generator-defaults zram-generator-defaults

View File

@@ -29,7 +29,7 @@ url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$rele
# X Window System configuration information # X Window System configuration information
xconfig --defaultdesktop=GNOME --startxonboot xconfig --defaultdesktop=GNOME --startxonboot
# System bootloader configuration # System bootloader configuration
bootloader --location=mbr --timeout=1 bootloader --location=mbr --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information

View File

@@ -27,7 +27,7 @@ timezone Europe/Paris --utc
# Use network installation # Use network installation
url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch" url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch"
# System bootloader configuration # System bootloader configuration
bootloader --location=mbr --timeout=1 bootloader --location=mbr --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information
@@ -98,7 +98,6 @@ generic-release
generic-release-common generic-release-common
generic-release-notes generic-release-notes
glibc glibc
guestfs-tools
hostname hostname
initial-setup initial-setup
iproute iproute
@@ -106,11 +105,22 @@ iputils
kbd kbd
kernel kernel
less less
libguestfs-tools
libusb libusb
libvirt libvirt
libvirt-client
libvirt-client-qemu
libvirt-daemon
libvirt-daemon-common
libvirt-daemon-config-network libvirt-daemon-config-network
libvirt-daemon-driver-ch
libvirt-daemon-driver-interface
libvirt-daemon-driver-network
libvirt-daemon-driver-qemu
libvirt-daemon-kvm libvirt-daemon-kvm
libvirt-daemon-log
libvirt-daemon-qemu
libvirt-dbus
libvirt-nss
man-db man-db
nano nano
ncurses ncurses
@@ -122,7 +132,6 @@ plymouth
policycoreutils policycoreutils
prefixdevname prefixdevname
procps-ng procps-ng
python3-libguestfs
qemu-guest-agent qemu-guest-agent
qemu-kvm qemu-kvm
rootfiles rootfiles
@@ -140,7 +149,6 @@ usbutils
util-linux util-linux
vim-minimal vim-minimal
virt-install virt-install
virt-top
wget wget
zram-generator-defaults zram-generator-defaults

View File

@@ -27,7 +27,7 @@ timezone Europe/Paris --utc
# Use network installation # Use network installation
url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch" url --mirrorlist="https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch"
# System bootloader configuration # System bootloader configuration
bootloader --location=mbr --timeout=1 bootloader --location=mbr --timeout=1 --sdboot
# Clear the Master Boot Record # Clear the Master Boot Record
zerombr zerombr
# Partition clearing information # Partition clearing information

View File

@@ -2,16 +2,23 @@ services --enabled="NetworkManager,systemd-resolved,libvirtd" # Without libvirtd
%packages --exclude-weakdeps # Beginning of the packages section. Does not include weak dependencies. %packages --exclude-weakdeps # Beginning of the packages section. Does not include weak dependencies.
qemu-kvm qemu-kvm # QEMU metapackage for KVM support
libvirt libvirt # Library providing a simple virtualization API
libvirt-daemon-config-network libvirt-client # Client side utilities of the libvirt library
libvirt-daemon-kvm libvirt-client-qemu # Additional client side utilities for QEMU. Used to interact with some QEMU specific features of libvirt.
# libvirt-daemon-driver-lxc libvirt-daemon # Server side daemon and supporting files for libvirt library
virt-install libvirt-daemon-common # Miscellaneous files and utilities used by other libvirt daemons
virt-top libvirt-daemon-config-network # Default configuration files for the libvirtd daemon. Provides NAT based networking
libguestfs-tools # Complementary tools useful for interacting with vith guest systems. Could probablby be removed libvirt-daemon-driver-interface # Interface driver plugin for the libvirtd daemon
python3-libguestfs # Complementary tools useful for interacting with vith guest systems. Could probablby be removed libvirt-daemon-driver-network # The network driver plugin for the libvirtd daemon, providing an implementation of the virtual network APIs using the Linux bridge capabilities.
guestfs-tools # Complementary tools useful for interacting with vith guest systems. Could probablby be removed libvirt-daemon-driver-qemu # QEMU driver plugin for the libvirtd daemon
libvirt-daemon-kvm # Server side daemon & driver required to run KVM guests
libvirt-daemon-log # Server side daemon for managing logs
libvirt-daemon-qemu # Server side daemon and driver required to manage the virtualization capabilities of the QEMU TCG emulators
libvirt-nss # Libvirt plugin for Name Service Switch
libvirt-dbus # libvirt D-Bus API binding
libvirt-daemon-driver-ch # Cloud-Hypervisor driver plugin for libvirtd daemon
virt-install # Utilities for installing virtual machines
%end # End of the packages section %end # End of the packages section

View File

@@ -17,6 +17,7 @@ zram-generator-defaults # Default configuration for zram-generator
pciutils # PCI bus related utilities pciutils # PCI bus related utilities
libusb # Library for accessing USB devices libusb # Library for accessing USB devices
usbutils # Linux USB utilities usbutils # Linux USB utilities
curl # transfer a URL
wget # An advanced file and recursive website downloader wget # An advanced file and recursive website downloader
nano # A small text editor nano # A small text editor

View File

@@ -0,0 +1 @@
bootloader --sdboot --location=none --timeout=1 # Use systemd-boot and set location to none

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/live-core.cfg # For live systems only %include ../ingredients/live-core.cfg # For live systems only
%include ../ingredients/live-core-storage.cfg # For live systems only %include ../ingredients/live-core-storage.cfg # For live systems only
%include ../ingredients/live-core-bootloader-grub.cfg # GNU GRUB for live systems %include ../ingredients/live-core-bootloader-systemd-boot.cfg # systemd bootloader
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/live-core.cfg # For live systems only %include ../ingredients/live-core.cfg # For live systems only
%include ../ingredients/live-core-storage.cfg # For live systems only %include ../ingredients/live-core-storage.cfg # For live systems only
%include ../ingredients/live-core-bootloader-grub.cfg # GNU GRUB for live systems %include ../ingredients/live-core-bootloader-systemd-boot.cfg # systemd bootloader
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/live-core.cfg # For live systems only %include ../ingredients/live-core.cfg # For live systems only
%include ../ingredients/live-core-storage.cfg # For live systems only %include ../ingredients/live-core-storage.cfg # For live systems only
%include ../ingredients/live-core-bootloader-grub.cfg # GNU GRUB for live systems %include ../ingredients/live-core-bootloader-systemd-boot.cfg # systemd bootloader
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/live-core.cfg # For live systems only %include ../ingredients/live-core.cfg # For live systems only
%include ../ingredients/live-core-storage.cfg # For live systems only %include ../ingredients/live-core-storage.cfg # For live systems only
%include ../ingredients/live-core-bootloader-grub.cfg # GNU GRUB for live systems %include ../ingredients/live-core-bootloader-systemd-boot.cfg # systemd bootloader
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services
@@ -22,4 +22,4 @@
%include ../ingredients/base-desktop-gnome.cfg # A GNOME Shell-based desktop environment %include ../ingredients/base-desktop-gnome.cfg # A GNOME Shell-based desktop environment
%include ../ingredients/base-desktop-virtual-machine-manager.cfg # Virtual Machine Manager %include ../ingredients/base-desktop-virtual-machine-manager.cfg # Virtual Machine Manager
%include ../ingredients/base-hypervisor.cfg # Base hypervisor %include ../ingredients/base-hypervisor.cfg # Base hypervisor
%include ../ingredients/base-guest-agents.cfg # Guest agents %include ../ingredients/base-guest-agents.cfg # Guest agents

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-systemd-boot.cfg # systemd-boot %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -9,7 +9,7 @@
%include ../ingredients/core.cfg # Text mode %include ../ingredients/core.cfg # Text mode
%include ../ingredients/core-storage.cfg # ext4-based storage configuration %include ../ingredients/core-storage.cfg # ext4-based storage configuration
%include ../ingredients/core-bootloader-grub.cfg # GNU GRUB %include ../ingredients/core-bootloader-systemd-boot.cfg # Set bootloader to systemd-boot
%include ../ingredients/core-locale.cfg # System locale set to Swiss French as keyboard layout and English as language %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-security-off.cfg # Lock root account, disable firewall and SELinux
%include ../ingredients/core-services.cfg # Required systemd services %include ../ingredients/core-services.cfg # Required systemd services

View File

@@ -4,9 +4,7 @@
core_count=$(nproc --all) core_count=$(nproc --all)
# Check if nproc --all returns a numerical value greater than 2 # Check if nproc --all returns a numerical value greater than 2
if (( core_count > 2 )); then 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 "Warning: System has only $core_count core)."
echo "The script requires at least four cores" echo "The script requires at least four cores"
exit 1 # Exit with an error code to indicate the condition is not met exit 1 # Exit with an error code to indicate the condition is not met

View File

@@ -4,18 +4,18 @@
DEFAULT_MEMORY=4096 DEFAULT_MEMORY=4096
DEFAULT_DISK_SIZE=10 DEFAULT_DISK_SIZE=10
# Prompt user for memory size # Prompt user for VM memory size
read -r -p "Enter memory size in MB or press Enter to keep default value: $DEFAULT_MEMORY): " memory_size read -r -p "Provide desired VM memory in MB or press Enter to keep default value of $DEFAULT_MEMORY MB): " memory_size
memory_size=${memory_size:-$DEFAULT_MEMORY} memory_size=${memory_size:-$DEFAULT_MEMORY}
# Validate memory size # Validate memory size
if ! [[ "$memory_size" =~ ^[0-9]+$ ]] || (( memory_size < 2048 )); then 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." echo "Invalid memory size. Must be a number greater than or equal to 2048. Using default value of $DEFAULT_MEMORY MB."
memory_size=$DEFAULT_MEMORY memory_size=$DEFAULT_MEMORY
fi fi
# Prompt user for disk size # Prompt user for VM disk size
read -r -p "Enter disk size in GB (default: $DEFAULT_DISK_SIZE): " 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 GB: " disk_size
disk_size=${disk_size:-$DEFAULT_DISK_SIZE} disk_size=${disk_size:-$DEFAULT_DISK_SIZE}
# Validate disk size # Validate disk size
@@ -24,8 +24,52 @@ if ! [[ "$disk_size" =~ ^[0-9]+$ ]] || (( disk_size < 10 )); then
disk_size=$DEFAULT_DISK_SIZE disk_size=$DEFAULT_DISK_SIZE
fi fi
# Get a list of files in the directory dishes without extensions # Set the choices
mapfile -t dish_name < <(find "dishes/" -maxdepth 1 -type f -printf "%f\n" | sed 's/\.[^.]*$//') CHOICE_SYSTEM="qemu:///system"
CHOICE_SESSION="qemu:///session"
# Display the choices to the user
echo "Please select an option or press Enter to keep default value of $CHOICE_SESSION):"
echo "1) $CHOICE_SYSTEM (system-based or rootfull virtual machine)"
echo "2) $CHOICE_SESSION (session-based or rootless virtual machine)"
# Prompt the user for input
IFS= read -r -p "Enter your choice (1 or 2): " user_choice
# Validate the user's input
if [[ ! "$user_choice" =~ ^[12]$ ]]; then
echo "Invalid choice. Defaulting to session-based VM."
uri="$CHOICE_SESSION" # Default to session-based if input is invalid
else
# Determine the selected option
case "$user_choice" in
1)
uri="$CHOICE_SYSTEM"
;;
2)
uri="$CHOICE_SESSION"
;;
*)
echo "Unexpected error: Invalid choice. This should not happen due to validation."
exit 1
;;
esac
# Conditional variable assignment based on URI
if [[ "$uri" == "qemu:///system" ]]; then
disk_path="/var/lib/libvirt/images/"
network_type="default"
elif [[ "$uri" == "qemu:///session" ]]; then
disk_path="$HOME/.local/share/libvirt/images/"
network_type="user"
fi
fi
# Display the selected option (optional)
echo "You selected: $uri"
# Get a list of files in "dishes" directory
mapfile -t dish_name < <(find "dishes/" -maxdepth 1 -type f \( -name "virtual*" \) -printf "%f\n" | sed 's/\.[^.]*$//')
# Check if there are any files # Check if there are any files
if [ ${#dish_name[@]} -eq 0 ]; then if [ ${#dish_name[@]} -eq 0 ]; then
@@ -56,7 +100,7 @@ echo "You selected: $vm_name"
# virt-install command with user-defined VM name # virt-install command with user-defined VM name
virt-install \ virt-install \
--connect qemu:///system \ --connect "$uri" \
--os-variant fedora41 \ --os-variant fedora41 \
--virt-type kvm \ --virt-type kvm \
--arch x86_64 \ --arch x86_64 \
@@ -70,15 +114,17 @@ virt-install \
--channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \ --channel unix,target.type=virtio,target.name=org.qemu.guest_agent.0 \
--autoconsole none \ --autoconsole none \
--console pty,target.type=virtio \ --console pty,target.type=virtio \
--sound none \ --sound virtio \
--network type=default,model=virtio \ --network type="$network_type",model=virtio \
--controller type=virtio-serial \ --controller type=virtio-serial \
--controller type=usb,model=none \ --controller type=usb,model=none \
--controller type=scsi,model=virtio-scsi \ --controller type=scsi,model=virtio-scsi \
--input type=keyboard,bus=virtio \ --input type=keyboard,bus=virtio \
--input type=tablet,bus=virtio \ --input type=mouse,bus=virtio \
--rng /dev/urandom,model=virtio \ --rng /dev/urandom,model=virtio \
--disk path=/var/lib/libvirt/images/"$vm_name".img,format=raw,bus=virtio,cache=writeback,size="$disk_size" \ --iommu model=virtio \
--memballoon none \
--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/ \ --location=https://download.fedoraproject.org/pub/fedora/linux/releases/42/Everything/x86_64/os/ \
--initrd-inject ./dishes/"$vm_name".cfg \ --initrd-inject ./dishes/"$vm_name".cfg \
--extra-args "inst.ks=file:/$vm_name.cfg" --extra-args "inst.ks=file:/$vm_name.cfg"

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Check if virt-manager is already installed
if command -v virt-manager &> /dev/null; then
exit 0
fi
# Detect the Linux distribution
if [[ -f /etc/os-release ]]; then
. /etc/os-release
DISTRO="$ID"
else
echo "Unable to determine Linux distribution. Exiting."
exit 1
fi
echo "Detected distribution: $DISTRO"
# Install prerequisites based on distribution
case "$DISTRO" in
ubuntu|debian)
echo "Installing prerequisites for Debian/Ubuntu..."
apt-get update
apt-get install -y qemu-system libvirt-daemon-system virt-manager
;;
fedora|rhel|centos)
echo "Installing prerequisites for Fedora/RHEL/CentOS..."
dnf install -y qemu-kvm libvirt virt-manager
;;
arch)
echo "Installing prerequisites for Arch Linux..."
pacman -S --noconfirm qemu-desktop libvirt virt-manager
;;
opensuse-tumbleweed)
echo "Installing prerequisites for openSUSE Tumbleweed..."
zypper -n install qemu libvirt virt-manager
;;
*)
echo "Unsupported distribution: $DISTRO. Manual installation required."
exit 1
;;
esac

View File

@@ -9,6 +9,4 @@ total_memory_mb=$(( total_memory / 1024 ))
if [[ "$total_memory_mb" -lt "4096" ]]; then 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." echo "Not enough RAM: The system has only ${total_memory_mb}MiB of RAM, but at least 4096 is required."
exit 1 exit 1
else fi
echo "Sufficient memory available. System has ${total_memory_mb}MiB of RAM."
fi