2021-07-02 12:21:13 +00:00
# __ ____ ____ _____
# ____ / /_ __ __/ / /___ ____ ___ ___ / __ \/ ___/
# / __ \/ __ \/ / / / / / __ \/ __ `__ \/ _ \ / / / /\__ \
# / /_/ / / / / /_/ / / / /_/ / / / / / / __/ / /_/ /___/ /
# / .___/_/ /_/\__, /_/_/\____/_/ /_/ /_/\___/ \____//____/
# /_/ /____/
2021-07-22 14:24:37 +00:00
# What ? This kickstart file bootstraps a minimal desktop-oriented nested-hypervisor.
2021-07-02 12:21:13 +00:00
# 'v' for virtual machine, 'e' for efi, 'm' for minimal, 'd' for desktop, 'h' for hypervisor, 'd' for development only.
# USAGE : Press the `tab` or 'e' key during POST and apend that after the 'quiet' string :
2021-07-22 14:24:37 +00:00
# inst.ks=https://git.phyllo.me/home/kickstart/raw/branch/master/leaves/vhdmd.cfg
2021-07-02 12:21:13 +00:00
# ATTENTION : this kickstart file will automatically DESTROY the main virtual disk 'vda' and all of its contents.
# Bye bye!
2021-07-22 14:24:37 +00:00
%include https://git.phyllo.me/home/kickstart/raw/branch/master/leafs/vdmd.cfg # Includes vemdd.cfg, the minimal GNOME-based desktop-oriented virtual machine ks file.
2021-07-02 12:21:13 +00:00
%post # Beginning of %post section
dnf install -y qemu-kvm libvirt libvirt-daemon-config-network libvirt-daemon-kvm # Install minimal tools dedicated to virtualization.
2021-07-23 07:11:42 +00:00
dnf install -y virt-install virt-top libguestfs-tools python3-libguestfs guestfs-tools # Complementary tools useful for interacting with virtual machines.
2021-07-02 12:21:13 +00:00
usermod -a -G libvirt test ## make user "test" part of the existing libvirt group to allow it to interact with the nested-hypervisor.
# Load kernel modules by adding vfio, vfio_pci, vfio_iommu_type1, vfio_virqfd, kvmgt, vfio-mdev
echo "vfio" > /etc/modules-load.d/vfio.conf
echo "vfio-pci" > /etc/modules-load.d/vfio-pci.conf
echo "vfio_iommu_type1" > /etc/modules-load.d/vfio_iommu_type1.conf
echo "vfio_virqfd" > /etc/modules-load.d/vfio_virqfd.conf
2021-07-22 14:24:37 +00:00
dracut --add-drivers "vfio vfio-pci vfio_iommu_type1 vfio_virqfd" --force # Instruct dracut to load the vfio drivers:
2021-07-02 12:21:13 +00:00
2021-07-22 14:24:37 +00:00
mkdir /var/lib/libvirt/iso # Create a directory to store iso images
chown test:test /var/lib/libvirt/iso # Make the user "test" the owner of this directory
virsh pool-create-as --name iso --type dir --target /var/lib/libvirt/iso # Make libvirt aware of this new directory by creating a so-called `pool` within this directory
mkdir /var/lib/libvirt/rom # Create a directory to store rom files
chown test:test /var/lib/libvirt/rom # Make the user "test" its owner
virsh pool-create-as --name iso --type dir --target /var/lib/libvirt/rom # Make libvirt aware of this new directory by creating a so-called `pool` within this directory
chown test:test /var/lib/libvirt/images # Make the user "test" the owner of this directory
2021-07-02 12:21:13 +00:00
2021-07-22 14:24:37 +00:00
nmcli con add ifname br0 type bridge con-name br0 # Add a network bridge
nmcli con add type bridge-slave ifname enp1s0 master br0
nmcli con up br0
2021-07-02 12:21:13 +00:00
%end # End of the %post section