diff --git a/livebox.yml b/livebox.yml index 4f229fd..771607b 100644 --- a/livebox.yml +++ b/livebox.yml @@ -15,6 +15,7 @@ ## > menuentry 'Chainload Menu from LiveBox' { ## > configfile (tftp,livebox.lan)/d-i/n-a/grub/grub.cfg ## > } +## --- - name: apply configuration to the livebox hosts: all @@ -37,6 +38,12 @@ - iso: 'debian-live-11.3.0-amd64-standard+nonfree.iso' name: 'standard-cli' live_url: 'https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/11.3.0-live+nonfree/amd64/iso-hybrid/' + + # The edulive role generates customized Debian-Live images. + # Make sure you have sufficient disk space available (~30GiB?). + build_images: + - gnome-edu + di_dist: "{{ ansible_distribution_release }}" di_version: "{{ ansible_distribution_major_version }}" di_pkg: "debian-installer-{{ di_version }}-netboot-amd64" @@ -65,3 +72,4 @@ - netbootinstaller - aptcacher - debianlive + - edulive diff --git a/roles/debianlive/tasks/main.yml b/roles/debianlive/tasks/main.yml index 23dcd11..bdbdff8 100644 --- a/roles/debianlive/tasks/main.yml +++ b/roles/debianlive/tasks/main.yml @@ -38,11 +38,16 @@ line: "/var/lib/tftpboot/d-i/n-live/ *(ro,crossmnt,no_subtree_check)" notify: export nfs -- name: configure ipxe boot menu address +- name: configure ipxe boot menu address and headline replace: path: /etc/di-netboot-assistant/ipxemenu.HEAD - regexp: '^(set 210:string tftp://\${next-server}/)$' - replace: '#\1\nset 210:string http://{{ ansible_default_ipv4.address }}/' + regexp: "{{ item.reg }}" + replace: "{{ item.rep }}" + loop: + - reg: '^(set 210:string tftp://\${next-server}/)$' + rep: '#\1\nset 210:string http://{{ ansible_default_ipv4.address }}/' + - reg: '^#(item --gap -- -- Customized Boot Entries.*)$' + rep: '\1' notify: rebuild di-netboot menu - name: configure grub boot menu addresses @@ -57,7 +62,7 @@ - name: prepare debian live nfs boot entry title lineinfile: path: /etc/di-netboot-assistant/ipxemenu.HEAD - insertafter: '^menu iPXE Boot Menu' + insertafter: '-- Customized Boot Entries --' line: "item {{ item.name }} Debian GNU/Linux {{ item.name }} NFS" loop: "{{ live_images }}" diff --git a/roles/edulive/defaults/main.yml b/roles/edulive/defaults/main.yml new file mode 100644 index 0000000..5834054 --- /dev/null +++ b/roles/edulive/defaults/main.yml @@ -0,0 +1 @@ +build_dir: /opt/live-build/ diff --git a/roles/edulive/files/gnome-edu/README b/roles/edulive/files/gnome-edu/README new file mode 100644 index 0000000..83e60e3 --- /dev/null +++ b/roles/edulive/files/gnome-edu/README @@ -0,0 +1,2 @@ +This config space is based on: + https://salsa.debian.org/live-team/live-images/-/tree/debian/images/gnome-desktop \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/auto/build b/roles/edulive/files/gnome-edu/auto/build new file mode 100755 index 0000000..f8d8346 --- /dev/null +++ b/roles/edulive/files/gnome-edu/auto/build @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +lb build noauto "${@}" 2>&1 | tee build.log diff --git a/roles/edulive/files/gnome-edu/auto/clean b/roles/edulive/files/gnome-edu/auto/clean new file mode 100755 index 0000000..4b8ccaa --- /dev/null +++ b/roles/edulive/files/gnome-edu/auto/clean @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e + +lb clean noauto "${@}" + +rm -f config/binary config/bootstrap config/chroot config/common config/source +rm -f config/control + +rm -f build.log diff --git a/roles/edulive/files/gnome-edu/auto/config b/roles/edulive/files/gnome-edu/auto/config new file mode 100755 index 0000000..96e38d3 --- /dev/null +++ b/roles/edulive/files/gnome-edu/auto/config @@ -0,0 +1,18 @@ +#!/bin/sh + +set -e + +lb config noauto \ + --clean \ + --cache false \ + --net-tarball false \ + --ignore-system-defaults \ + --distribution bullseye \ + --binary-images netboot \ + --mode debian \ + --backports true \ + --linux-packages linux-image \ + --archive-areas "main contrib non-free" \ + --mirror-bootstrap http://localhost:3142/deb.debian.org/debian/ \ + --mirror-chroot-security http://localhost:3142/security.debian.org/debian-security/ \ +"${@}" diff --git a/roles/edulive/files/gnome-edu/config/hooks/0001-plymouth-theme.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/0001-plymouth-theme.hook.chroot new file mode 100755 index 0000000..16095e0 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/0001-plymouth-theme.hook.chroot @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +if [ -e /usr/sbin/plymouth-set-default-theme ] && [ -e /usr/share/plymouth/themes/lines ] +then + plymouth-set-default-theme lines +fi diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0010-disable-kexec-tools.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0010-disable-kexec-tools.hook.chroot new file mode 120000 index 0000000..996f766 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/live/0010-disable-kexec-tools.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/live/0010-disable-kexec-tools.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot new file mode 120000 index 0000000..5ddf090 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/live/0050-disable-sysvinit-tmpfs.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0500-desktop.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0500-desktop.hook.chroot new file mode 100755 index 0000000..a051368 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/live/0500-desktop.hook.chroot @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +echo 'pref("browser.startup.homepage", "https://www.startpage.com");' >> /etc/firefox-esr/firefox-esr.js +echo 'pref("network.proxy.type", 4);' >> /etc/firefox-esr/firefox-esr.js + +dconf update + +#sed -i "s/^/#/" /etc/xdg/user-dirs.defaults + +sed -i "s/^#WaylandEnable=false$/WaylandEnable=false/" /etc/gdm3/daemon.conf + +## workaround https://bugzilla.gnome.org/show_bug.cgi?id=730587 +#dpkg-divert --divert /usr/bin/gnome-keyring-daemon.bak --rename /usr/bin/gnome-keyring-daemon diff --git a/roles/edulive/files/gnome-edu/config/hooks/live/0600-wireshark.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/live/0600-wireshark.hook.chroot new file mode 100755 index 0000000..13ce126 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/live/0600-wireshark.hook.chroot @@ -0,0 +1,5 @@ +#!/bin/sh +set -e + +## allow everybody to run wireshark: +chmod 0755 /usr/bin/dumpcap diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0020-create-mtab-symlink.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0020-create-mtab-symlink.hook.chroot new file mode 120000 index 0000000..58123fc --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0020-create-mtab-symlink.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0020-create-mtab-symlink.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0030-enable-cryptsetup.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0030-enable-cryptsetup.hook.chroot new file mode 120000 index 0000000..c5ab625 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0030-enable-cryptsetup.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0030-enable-cryptsetup.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0040-create-locales-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0040-create-locales-files.hook.chroot new file mode 120000 index 0000000..036e7e0 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0040-create-locales-files.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0040-create-locales-files.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0100-remove-adjtime-configuration.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0100-remove-adjtime-configuration.hook.chroot new file mode 120000 index 0000000..b0ccdb6 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0100-remove-adjtime-configuration.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0100-remove-adjtime-configuration.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0110-remove-backup-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0110-remove-backup-files.hook.chroot new file mode 120000 index 0000000..8b68c5c --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0110-remove-backup-files.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0110-remove-backup-files.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0120-remove-dbus-machine-id.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0120-remove-dbus-machine-id.hook.chroot new file mode 120000 index 0000000..4d55b27 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0120-remove-dbus-machine-id.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0120-remove-dbus-machine-id.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot new file mode 120000 index 0000000..54f6a9b --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0130-remove-gnome-icon-cache.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0140-remove-log-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0140-remove-log-files.hook.chroot new file mode 120000 index 0000000..2b99cec --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0140-remove-log-files.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0140-remove-log-files.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0150-remove-mdadm-configuration.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0150-remove-mdadm-configuration.hook.chroot new file mode 120000 index 0000000..0c3cd2f --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0150-remove-mdadm-configuration.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0150-remove-mdadm-configuration.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot new file mode 120000 index 0000000..e57b8d2 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0160-remove-openssh-server-host-keys.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0170-remove-python-py.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0170-remove-python-py.hook.chroot new file mode 120000 index 0000000..858a942 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0170-remove-python-py.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0170-remove-python-py.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0180-remove-systemd-machine-id.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0180-remove-systemd-machine-id.hook.chroot new file mode 120000 index 0000000..6cecf66 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0180-remove-systemd-machine-id.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0180-remove-systemd-machine-id.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0190-remove-temporary-files.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0190-remove-temporary-files.hook.chroot new file mode 120000 index 0000000..ada76d9 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0190-remove-temporary-files.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0190-remove-temporary-files.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot new file mode 120000 index 0000000..9fc0723 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0195-remove-ssl-cert-snakeoil.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot new file mode 120000 index 0000000..f893dcc --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0200-remove-udev-persistent-cd-rules.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot new file mode 120000 index 0000000..a6ee33d --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0300-remove-udev-persistent-net-rules.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0400-update-apt-file-cache.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0400-update-apt-file-cache.hook.chroot new file mode 120000 index 0000000..380fdcf --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0400-update-apt-file-cache.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0400-update-apt-file-cache.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0410-update-apt-xapian-index.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0410-update-apt-xapian-index.hook.chroot new file mode 120000 index 0000000..dd7150e --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0410-update-apt-xapian-index.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0410-update-apt-xapian-index.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0420-update-glx-alternative.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0420-update-glx-alternative.hook.chroot new file mode 120000 index 0000000..4da25f8 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0420-update-glx-alternative.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0420-update-glx-alternative.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0430-update-mlocate-database.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0430-update-mlocate-database.hook.chroot new file mode 120000 index 0000000..13b49d7 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0430-update-mlocate-database.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0430-update-mlocate-database.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0440-update-nvidia-alternative.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0440-update-nvidia-alternative.hook.chroot new file mode 120000 index 0000000..0a65196 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0440-update-nvidia-alternative.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0440-update-nvidia-alternative.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/hooks/normal/0500-reproducible-glibc.hook.chroot b/roles/edulive/files/gnome-edu/config/hooks/normal/0500-reproducible-glibc.hook.chroot new file mode 120000 index 0000000..9d4f095 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/hooks/normal/0500-reproducible-glibc.hook.chroot @@ -0,0 +1 @@ +/usr/share/live/build/hooks/normal/0500-reproducible-glibc.hook.chroot \ No newline at end of file diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/gdm.d/00-login-screen b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/gdm.d/00-login-screen new file mode 100644 index 0000000..23408bc --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/gdm.d/00-login-screen @@ -0,0 +1,8 @@ +[org/gnome/login-screen] +disable-user-list=true +logo='/usr/share/desktop-base/debian-logos/logo-text-64.png' + +[org/gnome/settings-daemon/plugins/power] +power-button-action='interactive' +sleep-inactive-ac-timeout=600 +sleep-inactive-ac-type='interactive' diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/local.d/defaults b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/local.d/defaults new file mode 100644 index 0000000..ffde793 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/db/local.d/defaults @@ -0,0 +1,34 @@ +[org/gnome/shell] +enabled-extensions=['apps-menu@gnome-shell-extensions.gcampax.github.com', 'window-list@gnome-shell-extensions.gcampax.github.com', 'places-menu@gnome-shell-extensions.gcampax.github.com', 'drive-menu@gnome-shell-extensions.gcampax.github.com', 'dash-to-dock@micxgx.gmail.com'] + +[org/gnome/desktop/input-sources] +sources=[('xkb', 'de'), ('xkb', 'us')] + +[org/gnome/desktop/wm/preferences] +button-layout='appmenu:minimize,maximize,close' + +[org/gnome/desktop/peripherals/touchpad] +natural-scroll=false +edge-scrolling-enabled=true +tap-to-click=true + +[org/gnome/nautilus/preferences] +default-folder-viewer='list-view' + +[org/gnome/nautilus/list-view] +use-tree-view=true + +[org/gnome/settings-daemon/plugins/power] +power-button-action='interactive' +sleep-inactive-battery-timeout=600 +sleep-inactive-battery-type='hibernate' +sleep-inactive-ac-timeout=6000 +sleep-inactive-ac-type='nothing' + +[org/gnome/desktop/screensaver] +lock-enabled=false + +[org/gnome/desktop/interface] +clock-show-date=true +clock-show-seconds=true +clock-show-weekday=true diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/gdm b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/gdm new file mode 100644 index 0000000..c165d75 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/gdm @@ -0,0 +1,3 @@ +user-db:user +system-db:gdm +file-db:/usr/share/gdm/greeter.dconf-defaults diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/user b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/user new file mode 100644 index 0000000..aca0641 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/dconf/profile/user @@ -0,0 +1,2 @@ +user-db:user +system-db:local diff --git a/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/netboot.xml b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/netboot.xml new file mode 100644 index 0000000..6a993f9 --- /dev/null +++ b/roles/edulive/files/gnome-edu/config/includes.chroot/etc/libvirt/qemu/netboot.xml @@ -0,0 +1,151 @@ + + + + netboot + 60ea84db-de6c-493c-8e3f-8e9a99ee19c2 + + + + + + 2097152 + 2097152 + 2 + + hvm + /usr/share/OVMF/OVMF_CODE.fd + /var/lib/libvirt/qemu/nvram/netboot_VARS.fd + + + + + + + + + + + + + + + + destroy + restart + destroy + + + + + + /usr/bin/qemu-system-x86_64 + +
+ + +
+ + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + + +
+ + + + + +
+ + + + + +
+ + + + + + + + + + + +
+ + + +
+ + +
+ + + + + + + + +
+ +