<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>The Wombelix Post - Proxmox</title><link href="https://dominik.wombacher.cc/" rel="alternate"/><link href="/feeds/tag_proxmox.atom.xml" rel="self"/><id>https://dominik.wombacher.cc/</id><updated>2023-07-02T00:00:00+02:00</updated><entry><title>Customized openSUSE Images, to run on Proxmox VE out of the box, build on OBS</title><link href="https://dominik.wombacher.cc/posts/customized_opensuse_images_to_run_on_proxmox_ve_out_of_the_box_build_on_obs.html" rel="alternate"/><published>2022-04-26T00:00:00+02:00</published><updated>2023-07-02T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2022-04-26:/posts/customized_opensuse_images_to_run_on_proxmox_ve_out_of_the_box_build_on_obs.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I'm using openSUSE whenever possible but had some trouble to use the official images on &lt;a class="reference external" href="https://proxmox.com"&gt;Proxmox&lt;/a&gt;.
There is mostly a &lt;code&gt;kvm-and-xen&lt;/code&gt; image available, but that doesn't contain &lt;code&gt;cloud-init&lt;/code&gt;
and / or  ... &lt;a class="read-more" href="/posts/customized_opensuse_images_to_run_on_proxmox_ve_out_of_the_box_build_on_obs.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I'm using openSUSE whenever possible but had some trouble to use the official images on &lt;a class="reference external" href="https://proxmox.com"&gt;Proxmox&lt;/a&gt;.
There is mostly a &lt;code&gt;kvm-and-xen&lt;/code&gt; image available, but that doesn't contain &lt;code&gt;cloud-init&lt;/code&gt;
and / or &lt;code&gt;qemu-guest-agent&lt;/code&gt;, but for my use case, automated IPv6-only deployments, both are mandatory.&lt;/p&gt;
&lt;p&gt;Proxmox supports &lt;em&gt;cloud-init&lt;/em&gt; to configure basics like search domain, nameserver, user, password and ssh key.
If the &lt;em&gt;qemu-guest-agent&lt;/em&gt; is installed, the IPv6 address configured via SLAAC is available through the
API as soon the VM was booted.&lt;/p&gt;
&lt;p&gt;In regards to openSUSE MicroOS the situation was even worse, only the &lt;code&gt;OpenStack-Cloud&lt;/code&gt; image
includes &lt;em&gt;cloud-init&lt;/em&gt; but relies on the package &lt;code&gt;cloud-init-config-MicroOS&lt;/code&gt; which installs a
&lt;code&gt;/etc/cloud/cloud.cfg&lt;/code&gt; without a &lt;em&gt;default_user&lt;/em&gt; section and enabled root user.&lt;/p&gt;
&lt;p&gt;That way configuring a User account with sudo permissions via &lt;em&gt;cloud-init&lt;/em&gt; will just not work.&lt;/p&gt;
&lt;p&gt;So after some playing around with different approaches and especially due to the fact that I use a lot of different
openSUSE Images, I decided to branch the relevant projects / packages on &lt;a class="reference external" href="https://build.opensuse.org"&gt;https://build.opensuse.org&lt;/a&gt; and let OBS do the
heavy lifting for me to build and publish the different images.&lt;/p&gt;
&lt;p&gt;Leap 15.3 and 15.4 required also an adjustment of the OBS Project Config, most important for automation was
&lt;em&gt;staticlinks&lt;/em&gt; to ensure the same link will work even after a new build.&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
%if &amp;quot;%_repository&amp;quot; == &amp;quot;images&amp;quot;
Type: kiwi
Repotype: staticlinks
Patterntype: none
%endif

# slsaprovenance - as described at https://slsa.dev/provenance/v0.2
BuildFlags: slsaprovenance

&lt;/pre&gt;
&lt;p&gt;After some further testing, let's see which of my changes might be possible to get included upstream.&lt;/p&gt;
&lt;p&gt;I'm also working on Proxmox VE &amp;quot;optimized&amp;quot; images for other Distributions like Rocky Linux or Debian,
I will probably pick a different approach to customize them, but that's something for another Post some day.&lt;/p&gt;
&lt;div class="contents local topic" id="contents"&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference internal" href="#opensuse-microos" id="toc-entry-1"&gt;openSUSE MicroOS&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#open-build-service-obs-project" id="toc-entry-2"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#download" id="toc-entry-3"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#customizations" id="toc-entry-4"&gt;Customizations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#opensuse-tubmleweed-jeos" id="toc-entry-5"&gt;openSUSE Tubmleweed JeOS&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#open-build-service-obs-project-1" id="toc-entry-6"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#download-1" id="toc-entry-7"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#customizations-1" id="toc-entry-8"&gt;Customizations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#opensuse-leap-15-3-jeos" id="toc-entry-9"&gt;openSUSE Leap 15.3 JeOS&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#open-build-service-obs-project-2" id="toc-entry-10"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#download-2" id="toc-entry-11"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#customizations-2" id="toc-entry-12"&gt;Customizations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#opensuse-leap-15-4-jeos" id="toc-entry-13"&gt;openSUSE Leap 15.4 JeOS&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="reference internal" href="#open-build-service-obs-project-3" id="toc-entry-14"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#download-3" id="toc-entry-15"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference internal" href="#customizations-3" id="toc-entry-16"&gt;Customizations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="opensuse-microos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-1"&gt;openSUSE MicroOS&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="open-build-service-obs-project"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-2"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://build.opensuse.org/package/show/home:wombelix:branches:devel:kubic:images/openSUSE-MicroOS"&gt;https://build.opensuse.org/package/show/home:wombelix:branches:devel:kubic:images/openSUSE-MicroOS&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="download"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-3"&gt;Download&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;openSUSE Mirror (Automatic Build / Sync): &lt;a class="reference external" href="https://download.opensuse.org/repositories/home:/wombelix:/branches:/devel:/kubic:/images/openSUSE_Tumbleweed/"&gt;https://download.opensuse.org/repositories/home:/wombelix:/branches:/devel:/kubic:/images/openSUSE_Tumbleweed/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="customizations"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-4"&gt;Customizations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Please be aware: The below diff should give you an idea about the changes, it will not be updated, please check the OBS Project for the latest revision&lt;/p&gt;
&lt;pre class="code diff literal-block"&gt;
&lt;span class="pygments-gh"&gt;Index: _multibuild&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- _multibuild (revision 105)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ _multibuild (revision 8)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -1,8 +1,15 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;flavor&amp;gt;pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;flavor&amp;gt;ContainerHost-pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;flavor&amp;gt;Kubic-kubeadm-pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;flavor&amp;gt;k3s-pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Special case: Pi2, VBox and onie only get plain MicroOS --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;!--&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;RaspberryPi2&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;VirtualBox&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;onie&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!--&lt;span class="pygments-w"&gt;
 &lt;/span&gt;                for a in kvm-and-xen VMware MS-HyperV OpenStack-Cloud Pine64 Rock64 RaspberryPi Vagrant hardware; do&lt;span class="pygments-w"&gt;
 &lt;/span&gt;                        for f in &amp;quot;&amp;quot; &amp;quot;ContainerHost-&amp;quot; &amp;quot;Kubic-kubeadm-&amp;quot;; do&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -10,6 +17,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;                        done&lt;span class="pygments-w"&gt;
 &lt;/span&gt;                done&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;!--&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;kvm-and-xen&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;ContainerHost-kvm-and-xen&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;Kubic-kubeadm-kvm-and-xen&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -48,4 +56,5 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;k3s-Vagrant&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;k3s-SelfInstall&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;flavor&amp;gt;k3s-DigitalOcean-Cloud&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;/multibuild&amp;gt;&lt;span class="pygments-w"&gt;


&lt;/span&gt;&lt;span class="pygments-gh"&gt;Index: config.sh&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- config.sh (revision 105)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ config.sh (revision 8)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -157,6 +157,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;

 &lt;/span&gt;ignition_platform='metal'&lt;span class="pygments-w"&gt;
 &lt;/span&gt;case &amp;quot;${kiwi_profiles}&amp;quot; in&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+     *pve*) ignition_platform='qemu' ;;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;     *kvm*) ignition_platform='qemu' ;;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;     *DigitalOcean*) ignition_platform='digitalocean' ;;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;     *VMware*) ignition_platform='vmware' ;;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -281,3 +282,21 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        chmod 0600 /home/vagrant/.ssh/authorized_keys&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        chown -R vagrant /home/vagrant&lt;span class="pygments-w"&gt;
 &lt;/span&gt;fi&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+#======================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+# Configure PVE specifics&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+#--------------------------------------&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+if [[ &amp;quot;$kiwi_profiles&amp;quot; == *&amp;quot;pve&amp;quot;* ]]; then&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+     cat &amp;gt; /etc/cloud/cloud.cfg.d/default_user.cfg &amp;lt;&amp;lt;-EOF&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+             users:&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+               - default&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+             disable_root: true&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+             system_info:&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+               default_user:&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                 name: geeko&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                 lock_passwd: True&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                 groups: [cdrom, users]&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                 sudo: [&amp;quot;ALL=(ALL) NOPASSWD:ALL&amp;quot;]&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                 shell: /bin/bash&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+     EOF&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+fi&lt;/span&gt;&lt;span class="pygments-w"&gt;


&lt;/span&gt;&lt;span class="pygments-gh"&gt;Index: openSUSE-MicroOS.kiwi&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- openSUSE-MicroOS.kiwi (revision 105)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ openSUSE-MicroOS.kiwi (revision 8)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -13,6 +13,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;k3s&amp;quot; description=&amp;quot;MicroOS with k3s&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;Kubic-kubeadm&amp;quot; description=&amp;quot;MicroOS with CRI-O and kubeadm&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Platforms --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;pve&amp;quot; description=&amp;quot;Proxmox VE (pve) for x86_64&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;kvm-and-xen&amp;quot; description=&amp;quot;kvm-and-xen&amp;quot; arch=&amp;quot;x86_64,aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;VMware&amp;quot; description=&amp;quot;VMware for x86_64&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;MS-HyperV&amp;quot; description=&amp;quot;Hyper-V for x86_64&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -27,6 +28,10 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;SelfInstall&amp;quot; description=&amp;quot;Self Installing Image&amp;quot; arch=&amp;quot;x86_64,aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;onie&amp;quot; description=&amp;quot;ONIE Installer Image&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Images (flavor + platform) --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;ContainerHost-pve&amp;quot; description=&amp;quot;MicroOS with Podman for Proxmox VE (pve)&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;requires profile=&amp;quot;pve&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;requires profile=&amp;quot;ContainerHost&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/profile&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;ContainerHost-kvm-and-xen&amp;quot; description=&amp;quot;MicroOS with Podman for KVM and HVM Xen&amp;quot; arch=&amp;quot;x86_64,aarch64&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;kvm-and-xen&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;ContainerHost&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -59,6 +64,10 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;Vagrant&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;ContainerHost&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;/profile&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;Kubic-kubeadm-pve&amp;quot; description=&amp;quot;kubeadm with CRI-O for Proxmox VE (pve)&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;requires profile=&amp;quot;pve&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;requires profile=&amp;quot;Kubic-kubeadm&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/profile&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;Kubic-kubeadm-kvm-and-xen&amp;quot; description=&amp;quot;kubeadm with CRI-O for KVM and HVM Xen&amp;quot; arch=&amp;quot;x86_64,aarch64&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;kvm-and-xen&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;Kubic-kubeadm&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -103,6 +112,10 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;SelfInstall&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;Kubic-kubeadm&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;/profile&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;k3s-pve&amp;quot; description=&amp;quot;MicroOS with k3s for Proxmox VE (pve)&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;requires profile=&amp;quot;pve&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;requires profile=&amp;quot;k3s&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/profile&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;k3s-kvm-and-xen&amp;quot; description=&amp;quot;MicroOS with k3s for KVM and HVM Xen&amp;quot; arch=&amp;quot;x86_64,aarch64&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;kvm-and-xen&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;k3s&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -144,6 +157,39 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;            &amp;lt;requires profile=&amp;quot;k3s&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;/profile&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;preferences profiles=&amp;quot;pve&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;version&amp;gt;16.0.0&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;bootloader-theme&amp;gt;openSUSE&amp;lt;/bootloader-theme&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;rpm-excludedocs&amp;gt;true&amp;lt;/rpm-excludedocs&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;locale&amp;gt;en_US&amp;lt;/locale&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;type&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            image=&amp;quot;vmx&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            filesystem=&amp;quot;btrfs&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            format=&amp;quot;qcow2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            firmware=&amp;quot;uefi&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootpartition=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootkernel=&amp;quot;custom&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            devicepersistency=&amp;quot;by-uuid&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_root_is_snapshot=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_root_is_readonly_snapshot=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_quota_groups=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            spare_part=&amp;quot;5G&amp;quot; spare_part_mountpoint=&amp;quot;/var&amp;quot; spare_part_fs=&amp;quot;btrfs&amp;quot; spare_part_is_last=&amp;quot;true&amp;quot; spare_part_fs_attributes=&amp;quot;no-copy-on-write&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;bootloader name=&amp;quot;grub2&amp;quot; console=&amp;quot;gfxterm&amp;quot; /&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;home&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;root&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;opt&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;srv&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/i386-pc&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/x86_64-efi&amp;quot; mountpoint=&amp;quot;boot/grub2/x86_64-efi&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/writable&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;usr/local&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;/systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;size unit=&amp;quot;G&amp;quot;&amp;gt;20&amp;lt;/size&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/type&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/preferences&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;preferences profiles=&amp;quot;kvm-and-xen&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;version&amp;gt;16.0.0&amp;lt;/version&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -720,6 +766,10 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;patterns-containers-kubic_loadbalancer&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;patterns-containers-kubic_worker&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;qemu-guest-agent&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;patterns-microos-cloud&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/packages&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- KVM and Xen specific packages --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xen-tools-domU&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="opensuse-tubmleweed-jeos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-5"&gt;openSUSE Tubmleweed JeOS&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="open-build-service-obs-project-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-6"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://build.opensuse.org/package/show/home:wombelix:branches:Virtualization:Appliances:Images:openSUSE-Tumbleweed/kiwi-templates-JeOS"&gt;https://build.opensuse.org/package/show/home:wombelix:branches:Virtualization:Appliances:Images:openSUSE-Tumbleweed/kiwi-templates-JeOS&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="download-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-7"&gt;Download&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;openSUSE Mirror (Automatic Build / Sync): &lt;a class="reference external" href="https://download.opensuse.org/repositories/home:/wombelix:/branches:/Virtualization:/Appliances:/Images:/openSUSE-Tumbleweed/images/"&gt;https://download.opensuse.org/repositories/home:/wombelix:/branches:/Virtualization:/Appliances:/Images:/openSUSE-Tumbleweed/images/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="customizations-1"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-8"&gt;Customizations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Please be aware: The below diff should give you an idea about the changes, it will not be updated, please check the OBS Project for the latest revision&lt;/p&gt;
&lt;pre class="code diff literal-block"&gt;
&lt;span class="pygments-gh"&gt;Index: JeOS.kiwi&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- JeOS.kiwi (revision 70)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ JeOS.kiwi (revision 2)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -9,6 +9,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;specification&amp;gt;openSUSE Tumbleweed JeOS&amp;lt;/specification&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/description&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;pve&amp;quot; description=&amp;quot;JeOS for Proxmox VE (pve)&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Those two are only used as deps --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;kvm-and-xen&amp;quot; description=&amp;quot;JeOS for KVM and Xen&amp;quot; arch=&amp;quot;aarch64,x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;VMware&amp;quot; description=&amp;quot;JeOS for VMware&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -17,6 +18,39 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;OpenStack-Cloud&amp;quot; description=&amp;quot;JeOS for OpenStack Cloud&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;RaspberryPi&amp;quot; description=&amp;quot;JeOS for the Raspberry Pi&amp;quot; arch=&amp;quot;aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;preferences profiles=&amp;quot;pve&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;version&amp;gt;15.1.0&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;bootloader-theme&amp;gt;openSUSE&amp;lt;/bootloader-theme&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;rpm-excludedocs&amp;gt;true&amp;lt;/rpm-excludedocs&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;type&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            image=&amp;quot;vmx&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            filesystem=&amp;quot;btrfs&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            format=&amp;quot;qcow2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootloader=&amp;quot;grub2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            firmware=&amp;quot;uefi&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            efipartsize=&amp;quot;33&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            kernelcmdline=&amp;quot;rw quiet systemd.show_status=1 console=ttyS0,115200 console=tty0&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootpartition=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootkernel=&amp;quot;custom&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            devicepersistency=&amp;quot;by-uuid&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_quota_groups=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_root_is_snapshot=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;home&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;root&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;opt&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;srv&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/i386-pc&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/x86_64-efi&amp;quot; mountpoint=&amp;quot;boot/grub2/x86_64-efi&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;usr/local&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;var&amp;quot; copy_on_write=&amp;quot;false&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;/systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;size unit=&amp;quot;G&amp;quot;&amp;gt;24&amp;lt;/size&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/type&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/preferences&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;preferences profiles=&amp;quot;kvm-and-xen&amp;quot; arch=&amp;quot;x86_64&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;version&amp;gt;15.1.0&amp;lt;/version&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -284,6 +318,15 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;zypper-needs-restarting&amp;quot;/&amp;gt; &amp;lt;!-- Some deployment script use this (bsc#1173548) --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;btrfsprogs&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;btrfsmaintenance&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;grub2-snapper-plugin&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;snapper-zypp-plugin&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;snapper&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;firewalld&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/packages&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;!-- Not needed in OpenStack as it uses XFS and cloud-init --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,VMware,MS-HyperV,RaspberryPi&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Only for btrfs --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -305,7 +348,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;firewalld&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,VMware,MS-HyperV,OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,VMware,MS-HyperV,OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Shim for secure boot everywhere except for RPi --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;shim&amp;quot; arch=&amp;quot;aarch64,x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -315,14 +358,14 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xen-libs&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;kernel-default-base&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;qemu-guest-agent&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;VMware&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;open-vm-tools&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;kernel-default-base&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;cloud-init&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;cloud-init-config-suse&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xfsprogs&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -360,7 +403,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;gzip&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;kvm-and-xen&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;kvm-and-xen,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;openSUSE-release-appliance-kvm&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;OpenStack-Cloud&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;


&lt;/span&gt;&lt;span class="pygments-gh"&gt;Index: _multibuild&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- _multibuild (revision 70)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ _multibuild (revision 2)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -1,7 +1,10 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  &amp;lt;flavor&amp;gt;pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  &amp;lt;!--&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;kvm-and-xen&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;VMware&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;MS-HyperV&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;OpenStack-Cloud&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;RaspberryPi&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;/multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="opensuse-leap-15-3-jeos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-9"&gt;openSUSE Leap 15.3 JeOS&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="open-build-service-obs-project-2"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-10"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://build.opensuse.org/package/show/home:wombelix:branches:Virtualization:Appliances:Images:openSUSE-Leap-15.3/kiwi-templates-JeOS"&gt;https://build.opensuse.org/package/show/home:wombelix:branches:Virtualization:Appliances:Images:openSUSE-Leap-15.3/kiwi-templates-JeOS&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="download-2"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-11"&gt;Download&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;openSUSE Mirror (Automatic Build / Sync): &lt;a class="reference external" href="https://download.opensuse.org/repositories/home:/wombelix:/branches:/Virtualization:/Appliances:/Images:/openSUSE-Leap-15.3/images/"&gt;https://download.opensuse.org/repositories/home:/wombelix:/branches:/Virtualization:/Appliances:/Images:/openSUSE-Leap-15.3/images/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="customizations-2"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-12"&gt;Customizations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Please be aware: The below diff should give you an idea about the changes, it will not be updated, please check the OBS Project for the latest revision&lt;/p&gt;
&lt;pre class="code diff literal-block"&gt;
&lt;span class="pygments-gh"&gt;Index: JeOS.kiwi&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- JeOS.kiwi (revision 13)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ JeOS.kiwi (revision 3)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -9,6 +9,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;specification&amp;gt;openSUSE Leap 15.3 JeOS&amp;lt;/specification&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/description&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;pve&amp;quot; description=&amp;quot;JeOS for Proxmox VE (pve)&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;kvm-and-xen&amp;quot; description=&amp;quot;JeOS for KVM and Xen&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;kvm&amp;quot; description=&amp;quot;JeOS for KVM&amp;quot; arch=&amp;quot;aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;VMware&amp;quot; description=&amp;quot;JeOS for VMware&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -16,6 +17,47 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;OpenStack-Cloud&amp;quot; description=&amp;quot;JeOS for OpenStack Cloud&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;RaspberryPi&amp;quot; description=&amp;quot;JeOS for the Raspberry Pi&amp;quot; arch=&amp;quot;aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;preferences profiles=&amp;quot;pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;version&amp;gt;15.3&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;bootsplash-theme&amp;gt;openSUSE&amp;lt;/bootsplash-theme&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;bootloader-theme&amp;gt;openSUSE&amp;lt;/bootloader-theme&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;!-- those settings are applied by suseConfig in config.sh&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;locale&amp;gt;en_US&amp;lt;/locale&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;keytable&amp;gt;us.map.gz&amp;lt;/keytable&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;timezone&amp;gt;Europe/Berlin&amp;lt;/timezone&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;hwclock&amp;gt;utc&amp;lt;/hwclock&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;rpm-excludedocs&amp;gt;true&amp;lt;/rpm-excludedocs&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;type&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            image=&amp;quot;vmx&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            filesystem=&amp;quot;btrfs&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            format=&amp;quot;qcow2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootloader=&amp;quot;grub2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            firmware=&amp;quot;uefi&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            efipartsize=&amp;quot;33&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            kernelcmdline=&amp;quot;systemd.show_status=1 console=ttyS0,115200 console=tty0 quiet&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootpartition=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootkernel=&amp;quot;custom&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            devicepersistency=&amp;quot;by-uuid&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_quota_groups=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_root_is_snapshot=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;home&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;root&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;tmp&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;opt&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;srv&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/i386-pc&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/x86_64-efi&amp;quot; mountpoint=&amp;quot;boot/grub2/x86_64-efi&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;usr/local&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;var&amp;quot; copy_on_write=&amp;quot;false&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;/systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;size unit=&amp;quot;G&amp;quot;&amp;gt;24&amp;lt;/size&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/type&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/preferences&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;preferences profiles=&amp;quot;kvm-and-xen&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;version&amp;gt;15.3&amp;lt;/version&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -296,10 +338,19 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

 &lt;/span&gt;    &amp;lt;!-- Shim for secure boot everywhere except for RPi --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,VMware,MS-HyperV,OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,VMware,MS-HyperV,OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;shim&amp;quot; arch=&amp;quot;aarch64,x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;btrfsprogs&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;btrfsmaintenance&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;grub2-snapper-plugin&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;snapper-zypp-plugin&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;snapper&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;firewalld&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/packages&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;!-- Not needed in OpenStack as it uses XFS and cloud-init --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,VMware,MS-HyperV,RaspberryPi&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Only for btrfs --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -322,17 +373,17 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xen-tools-domU&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xen-libs&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;kernel-default-base&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;qemu-guest-agent&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;VMware&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;open-vm-tools&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;kernel-default-base&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;cloud-init&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;cloud-init-config-suse&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xfsprogs&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -363,7 +414,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;openSUSE-release&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;kvm,kvm-and-xen&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;kvm,kvm-and-xen,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;openSUSE-release-appliance-kvm&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;OpenStack-Cloud&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;


&lt;/span&gt;&lt;span class="pygments-gh"&gt;Index: _multibuild&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- _multibuild (revision 13)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ _multibuild (revision 3)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -1,8 +1,11 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  &amp;lt;flavor&amp;gt;pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  &amp;lt;!--&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;kvm-and-xen&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;kvm&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;VMware&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;MS-HyperV&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;OpenStack-Cloud&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;RaspberryPi&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;/multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="opensuse-leap-15-4-jeos"&gt;
&lt;h2&gt;&lt;a class="toc-backref" href="#toc-entry-13"&gt;openSUSE Leap 15.4 JeOS&lt;/a&gt;&lt;/h2&gt;
&lt;div class="section" id="open-build-service-obs-project-3"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-14"&gt;Open Build Service (OBS) Project&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a class="reference external" href="https://build.opensuse.org/package/show/home:wombelix:branches:Virtualization:Appliances:Images:openSUSE-Leap-15.4/kiwi-templates-JeOS"&gt;https://build.opensuse.org/package/show/home:wombelix:branches:Virtualization:Appliances:Images:openSUSE-Leap-15.4/kiwi-templates-JeOS&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="download-3"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-15"&gt;Download&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;openSUSE Mirror (Automatic Build / Sync): &lt;a class="reference external" href="https://download.opensuse.org/repositories/home:/wombelix:/branches:/Virtualization:/Appliances:/Images:/openSUSE-Leap-15.4/images/"&gt;https://download.opensuse.org/repositories/home:/wombelix:/branches:/Virtualization:/Appliances:/Images:/openSUSE-Leap-15.4/images/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="customizations-3"&gt;
&lt;h3&gt;&lt;a class="toc-backref" href="#toc-entry-16"&gt;Customizations&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Please be aware: The below diff should give you an idea about the changes, it will not be updated, please check the OBS Project for the latest revision&lt;/p&gt;
&lt;pre class="code diff literal-block"&gt;
&lt;span class="pygments-gh"&gt;Index: JeOS.kiwi&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- JeOS.kiwi (revision 2)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ JeOS.kiwi (revision 3)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -9,6 +9,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;specification&amp;gt;openSUSE Leap 15.4 JeOS&amp;lt;/specification&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/description&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;profile name=&amp;quot;pve&amp;quot; description=&amp;quot;JeOS for Proxmox VE (pve)&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;kvm-and-xen&amp;quot; description=&amp;quot;JeOS for KVM and Xen&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;kvm&amp;quot; description=&amp;quot;JeOS for KVM&amp;quot; arch=&amp;quot;aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;VMware&amp;quot; description=&amp;quot;JeOS for VMware&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -16,6 +17,47 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;OpenStack-Cloud&amp;quot; description=&amp;quot;JeOS for OpenStack Cloud&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;profile name=&amp;quot;RaspberryPi&amp;quot; description=&amp;quot;JeOS for the Raspberry Pi&amp;quot; arch=&amp;quot;aarch64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/profiles&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;preferences profiles=&amp;quot;pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;version&amp;gt;15.4&amp;lt;/version&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;bootsplash-theme&amp;gt;openSUSE&amp;lt;/bootsplash-theme&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;bootloader-theme&amp;gt;openSUSE&amp;lt;/bootloader-theme&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;!-- those settings are applied by suseConfig in config.sh&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;locale&amp;gt;en_US&amp;lt;/locale&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;keytable&amp;gt;us.map.gz&amp;lt;/keytable&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;timezone&amp;gt;Europe/Berlin&amp;lt;/timezone&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;hwclock&amp;gt;utc&amp;lt;/hwclock&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;rpm-excludedocs&amp;gt;true&amp;lt;/rpm-excludedocs&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;type&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            image=&amp;quot;vmx&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            filesystem=&amp;quot;btrfs&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            format=&amp;quot;qcow2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootloader=&amp;quot;grub2&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            firmware=&amp;quot;uefi&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            efipartsize=&amp;quot;33&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            kernelcmdline=&amp;quot;rw systemd.show_status=1 console=ttyS0,115200 console=tty0 quiet&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootpartition=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            bootkernel=&amp;quot;custom&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            devicepersistency=&amp;quot;by-uuid&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_quota_groups=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            btrfs_root_is_snapshot=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;home&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;root&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;tmp&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;opt&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;srv&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/i386-pc&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;boot/grub2/x86_64-efi&amp;quot; mountpoint=&amp;quot;boot/grub2/x86_64-efi&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;usr/local&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+                &amp;lt;volume name=&amp;quot;var&amp;quot; copy_on_write=&amp;quot;false&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;/systemdisk&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+            &amp;lt;size unit=&amp;quot;G&amp;quot;&amp;gt;24&amp;lt;/size&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;/type&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/preferences&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;preferences profiles=&amp;quot;kvm-and-xen&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;version&amp;gt;15.4&amp;lt;/version&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;packagemanager&amp;gt;zypper&amp;lt;/packagemanager&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -298,10 +340,19 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

 &lt;/span&gt;    &amp;lt;!-- Shim for secure boot everywhere except for RPi --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,VMware,MS-HyperV,OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,VMware,MS-HyperV,OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;shim&amp;quot; arch=&amp;quot;aarch64,x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;btrfsprogs&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;btrfsmaintenance&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;grub2-snapper-plugin&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;snapper-zypp-plugin&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;snapper&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+        &amp;lt;package name=&amp;quot;firewalld&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;/packages&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;!-- Not needed in OpenStack as it uses XFS and cloud-init --&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,VMware,MS-HyperV,RaspberryPi&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;!-- Only for btrfs --&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -324,17 +375,17 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xen-tools-domU&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xen-libs&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;kernel-default-base&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;kvm-and-xen,kvm,OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;qemu-guest-agent&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;VMware&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;open-vm-tools&amp;quot; arch=&amp;quot;x86_64&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;kernel-default-base&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;OpenStack-Cloud&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;image&amp;quot; profiles=&amp;quot;OpenStack-Cloud,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;cloud-init&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;cloud-init-config-suse&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;xfsprogs&amp;quot; /&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -365,7 +416,7 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;openSUSE-release&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-gd"&gt;-    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;kvm,kvm-and-xen&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;kvm,kvm-and-xen,pve&amp;quot;&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;        &amp;lt;package name=&amp;quot;openSUSE-release-appliance-kvm&amp;quot;/&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;/packages&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;    &amp;lt;packages type=&amp;quot;bootstrap&amp;quot; profiles=&amp;quot;OpenStack-Cloud&amp;quot;&amp;gt;&lt;span class="pygments-w"&gt;


&lt;/span&gt;&lt;span class="pygments-gh"&gt;Index: _multibuild&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gh"&gt;===================================================================&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gd"&gt;--- _multibuild (revision 2)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+++ _multibuild (revision 3)&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gu"&gt;&amp;#64;&amp;#64; -1,8 +1,11 &amp;#64;&amp;#64;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  &amp;lt;flavor&amp;gt;pve&amp;lt;/flavor&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  &amp;lt;!--&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;kvm-and-xen&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;kvm&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;VMware&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;MS-HyperV&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;OpenStack-Cloud&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;  &amp;lt;flavor&amp;gt;RaspberryPi&amp;lt;/flavor&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-gi"&gt;+  --&amp;gt;&lt;/span&gt;&lt;span class="pygments-w"&gt;
 &lt;/span&gt;&amp;lt;/multibuild&amp;gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Getting started with OBS took a while but then it's really amazing how easy it is to branch existing
packages, doesn't matter if it's classic rpm, vm or container images, apply changes and get results.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><category term="Linux"/><category term="openSUSE"/><category term="OBS"/><category term="Proxmox"/><category term="Linux"/><category term="cloud-init"/></entry><entry><title>Import 'protective MBR' GPT disk images like SUSE or openSUSE to LVM-Thin with disabled zeroing cause corruption</title><link href="https://dominik.wombacher.cc/posts/import_protective-mbr_gpt_disk_images_like_suse_or_opensuse_to_lvm-thin_with_disabled_zeroing_cause_corruption.html" rel="alternate"/><published>2022-04-14T00:00:00+02:00</published><updated>2022-04-15T00:00:00+02:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2022-04-14:/posts/import_protective-mbr_gpt_disk_images_like_suse_or_opensuse_to_lvm-thin_with_disabled_zeroing_cause_corruption.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Any available SUSE and openSUSE KVM Image I tried, ended in a VM that stuck on boot
with the message "a start job is running for /dev/disk/by-uuid"
or  ... &lt;a class="read-more" href="/posts/import_protective-mbr_gpt_disk_images_like_suse_or_opensuse_to_lvm-thin_with_disabled_zeroing_cause_corruption.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;Any available SUSE and openSUSE KVM Image I tried, ended in a VM that stuck on boot
with the message &amp;quot;a start job is running for /dev/disk/by-uuid&amp;quot;
or dropped into the dracut emergency shell after a timeout.&lt;/p&gt;
&lt;p&gt;No partitions could be found, only &amp;quot;/dev/sda&amp;quot; was visible from inside the VM,
gdisk dropped a lot of warnings and errors as well:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
Caution! After loading partitions, the CRC doesn't check out!
Warning! Main and backup partition tables differ! Use the 'c' and 'e' options
on the recovery &amp;amp; transformation menu to examine the two tables.

Warning! One or more CRCs don't match. You should repair the disk!
Main header: OK
Backup header: OK
Main partition table: ERROR
Backup partition table: ERROR

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: damaged

****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************

Warning! Secondary partition table overlaps the last partition by
18315034227491254276 blocks!
You will need to delete this partition or resize it in another utility.

&lt;/pre&gt;
&lt;p&gt;I tried it on a Proxmox VE Host with a LVM-Thin Datastore, a closer look at the
LVM-Thin Device of one of the affected VMs confirmed the missing partitions:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
fdisk -l /dev/mapper/pve-vm--9181--disk--0
Disk /dev/mapper/pve-vm--9181--disk--0: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 524288 bytes
Disklabel type: dos
Disk identifier: 0x406b6f28

Device                                  Boot Start      End  Sectors Size Id Type
/dev/mapper/pve-vm--9181--disk--0-part1          1 50331647 50331647  24G ee GPT

Partition 1 does not start on physical sector boundary.

&lt;/pre&gt;
&lt;p&gt;I chased that issue down for weeks and almost gave up because I didn't found any clue,
it just felt like no one ever faced a similar issue before.
After lot of different tests on multiple systems and configurations,
my LVM-Thin Storage seemed to cause the issue and by accident I finally found a hint in the
&lt;a class="reference external" href="https://forum.proxmox.com/threads/corrupt-gpt-after-restore-on-pve-7-0-from-backup-on-pve-6-4-qemu-vm-lvm-thin-storage-ovmf.94785/"&gt;Proxmox Forum&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220414194037/https://forum.proxmox.com/threads/corrupt-gpt-after-restore-on-pve-7-0-from-backup-on-pve-6-4-qemu-vm-lvm-thin-storage-ovmf.94785/"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.04.14-194050/https://forum.proxmox.com/threads/corrupt-gpt-after-restore-on-pve-7-0-from-backup-on-pve-6-4-qemu-vm-lvm-thin-storage-ovmf.94785/"&gt;[2]&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Indeed, no Idea why but I disabled zeroing on the LV during conversion to Thin:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
lvconvert --type thin-pool pve/lv_test -Zn -y

&lt;/pre&gt;
&lt;p&gt;The official &lt;a class="reference external" href="https://pve.proxmox.com/wiki/Storage:_LVM_Thin"&gt;Proxmox Documentation&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220312200416/https://pve.proxmox.com/wiki/Storage:_LVM_Thin"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.04.14-194733/https://pve.proxmox.com/wiki/LVM2"&gt;[2]&lt;/a&gt;)
doesn't mention the Parameter &lt;code&gt;-Zn&lt;/code&gt;, obviously because of very good reasons.&lt;/p&gt;
&lt;p&gt;Tests with a new LVM-Thin with enabled zeroing (default) confirmed that all issues I faced earlier seem to be caused by that.
A new VM based on the same &lt;code&gt;qcow2&lt;/code&gt; image as before is now starting without any issue,
delay or timeout, just as expected, also the partition table looks way better:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
fdisk -l /dev/mapper/pve-vm--9181--disk--0
Disk /dev/mapper/pve-vm--9181--disk--0: 24 GiB, 25769803776 bytes, 50331648 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 0D13903E-0408-4963-9C0D-A455B37C6062

Device                                  Start      End  Sectors Size Type
/dev/mapper/pve-vm--9181--disk--0-part1  2048     6143     4096   2M BIOS boot
/dev/mapper/pve-vm--9181--disk--0-part2  6144    73727    67584  33M EFI System
/dev/mapper/pve-vm--9181--disk--0-part3 73728 50331614 50257887  24G Linux filesystem

&lt;/pre&gt;
&lt;p&gt;I installed some VMs &amp;quot;normally&amp;quot; by booting a .iso files, also importing qcow2 images with a &amp;quot;flat&amp;quot; / &amp;quot;oldschool&amp;quot; Partition Layout,
like the Rocky Linux Generic Cloud Image, which comes with a single XFS formatted MBR Partition, was working without the above problems.&lt;/p&gt;
&lt;p&gt;So it looks like that's something specific to disk images with 'protective MBR' GPT and EFI Partitions.
So far only SUSE and openSUSE Images seem to use such a Layout by default.&lt;/p&gt;
&lt;p&gt;To be perfectly honest, I didn't have a fully technical explanation why disabled zeroing on LVM-Thin
has such an impact when importing PMBR disks. I can only assume that during the LV creation and &lt;code&gt;qcow2&lt;/code&gt;
import as well as conversion to &lt;code&gt;raw&lt;/code&gt; there is some messing around with the first few sectors.&lt;/p&gt;
&lt;p&gt;Fact is: I enabled zeroing on the LVM-Thin LV, everything got back to normal and the pre-build images behave now as they are supposed to.&lt;/p&gt;
</content><category term="Linux"/><category term="Linux"/><category term="Proxmox"/><category term="SUSE"/><category term="openSUSE"/><category term="LVM. GPT"/></entry><entry><title>EMail Notification to Unlock LUKS encrypted disk via Dropbear SSH</title><link href="https://dominik.wombacher.cc/posts/email_notification_to_unlock_luks_encrypted_disk_via_dropbear_ssh.html" rel="alternate"/><published>2022-03-16T00:00:00+01:00</published><updated>2022-03-16T00:00:00+01:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2022-03-16:/posts/email_notification_to_unlock_luks_encrypted_disk_via_dropbear_ssh.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I'm running Proxmox VE Hosts with full encrypted disks and Dropbear SSH to unlock them remotely.
I wanted to get notified when I have to login and enter the key  ... &lt;a class="read-more" href="/posts/email_notification_to_unlock_luks_encrypted_disk_via_dropbear_ssh.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I'm running Proxmox VE Hosts with full encrypted disks and Dropbear SSH to unlock them remotely.
I wanted to get notified when I have to login and enter the key, e.g. in case of an unexpected reboot.&lt;/p&gt;
&lt;p&gt;My setup is based on the &lt;a class="reference external" href="https://www.mailjet.com"&gt;mailjet&lt;/a&gt; Free Tier (6000 Mails / Month, 200 Mails / Day)
and some initramfs customizing to include curl, a few other required libraries and
a simple script to send an API request, tested on PVE 7.1 / Debian 11 (bullseye)&lt;/p&gt;
&lt;p&gt;I will enclose placeholder in &lt;strong&gt;&amp;lt; &amp;gt;&lt;/strong&gt;, please replace them with appropriate values based on your Environment.&lt;/p&gt;
&lt;p&gt;The hook script &lt;code&gt;/etc/initramfs-tools/hooks/curl&lt;/code&gt; take care that &lt;em&gt;curl&lt;/em&gt;,
&lt;em&gt;libnss_dns&lt;/em&gt; and a &lt;em&gt;resolv.conf&lt;/em&gt; are included in the initramfs:&lt;/p&gt;
&lt;pre class="code bash literal-block"&gt;
&lt;span class="pygments-ch"&gt;#!/bin/sh
&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-nv"&gt;PREREQ&lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;prereqs&lt;span class="pygments-o"&gt;()&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
        &lt;/span&gt;&lt;span class="pygments-nb"&gt;echo&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="pygments-nv"&gt;$PREREQ&lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-k"&gt;case&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nv"&gt;$1&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-k"&gt;in&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;prereqs&lt;span class="pygments-o"&gt;)&lt;/span&gt;&lt;span class="pygments-w"&gt;
        &lt;/span&gt;prereqs&lt;span class="pygments-w"&gt;
        &lt;/span&gt;&lt;span class="pygments-nb"&gt;exit&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-m"&gt;0&lt;/span&gt;&lt;span class="pygments-w"&gt;
        &lt;/span&gt;&lt;span class="pygments-p"&gt;;;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-k"&gt;esac&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;.&lt;span class="pygments-w"&gt; &lt;/span&gt;/usr/share/initramfs-tools/hook-functions&lt;span class="pygments-w"&gt;

&lt;/span&gt;copy_exec&lt;span class="pygments-w"&gt; &lt;/span&gt;/usr/bin/curl&lt;span class="pygments-w"&gt; &lt;/span&gt;/bin&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-c1"&gt;# Fix DNS resolver
&lt;/span&gt;cp&lt;span class="pygments-w"&gt; &lt;/span&gt;-a&lt;span class="pygments-w"&gt; &lt;/span&gt;/usr/lib/x86_64-linux-gnu/libnss_dns*&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nv"&gt;$DESTDIR&lt;/span&gt;/usr/lib/x86_64-linux-gnu/&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-nb"&gt;printf&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;nameserver &amp;lt;dns_server1_ipv4_address&amp;gt;\nnameserver &amp;lt;dns_server2_ipv4_address&amp;gt;\n&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&amp;gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nv"&gt;$DESTDIR&lt;/span&gt;/etc/resolv.conf&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;The actual notification will be send by &lt;code&gt;/etc/initramfs-tools/scripts/init-premount/notification&lt;/code&gt; through the mailjet API.
You shouldn't have a problem to adjust it to use any other Service as long you can trigger a API via curl :)&lt;/p&gt;
&lt;pre class="code bash literal-block"&gt;
&lt;span class="pygments-ch"&gt;#!/bin/sh
&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-nv"&gt;PREREQ&lt;/span&gt;&lt;span class="pygments-o"&gt;=&lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;prereqs&lt;span class="pygments-o"&gt;()&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;{&lt;/span&gt;&lt;span class="pygments-w"&gt;
        &lt;/span&gt;&lt;span class="pygments-nb"&gt;echo&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="pygments-nv"&gt;$PREREQ&lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-o"&gt;}&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;&lt;span class="pygments-k"&gt;case&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-nv"&gt;$1&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-k"&gt;in&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;prereqs&lt;span class="pygments-o"&gt;)&lt;/span&gt;&lt;span class="pygments-w"&gt;
        &lt;/span&gt;prereqs&lt;span class="pygments-w"&gt;
        &lt;/span&gt;&lt;span class="pygments-nb"&gt;exit&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-m"&gt;0&lt;/span&gt;&lt;span class="pygments-w"&gt;
        &lt;/span&gt;&lt;span class="pygments-p"&gt;;;&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;&lt;span class="pygments-k"&gt;esac&lt;/span&gt;&lt;span class="pygments-w"&gt;

&lt;/span&gt;.&lt;span class="pygments-w"&gt; &lt;/span&gt;/scripts/functions&lt;span class="pygments-w"&gt;

&lt;/span&gt;configure_networking&lt;span class="pygments-w"&gt;

&lt;/span&gt;/bin/curl&lt;span class="pygments-w"&gt; &lt;/span&gt;--insecure&lt;span class="pygments-w"&gt; &lt;/span&gt;-s&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-se"&gt;\
&lt;/span&gt;-X&lt;span class="pygments-w"&gt; &lt;/span&gt;POST&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-se"&gt;\
&lt;/span&gt;--user&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s2"&gt;&amp;quot;&amp;lt;mailjet_api_user&amp;gt;:&amp;lt;mailjet_api_pass&amp;gt;&amp;quot;&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-se"&gt;\
&lt;/span&gt;https://api.mailjet.com/v3.1/send&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-se"&gt;\
&lt;/span&gt;-H&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s1"&gt;'Content-Type: application/json'&lt;/span&gt;&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-se"&gt;\
&lt;/span&gt;-d&lt;span class="pygments-w"&gt; &lt;/span&gt;&lt;span class="pygments-s1"&gt;'{
  &amp;quot;Messages&amp;quot;:[
    {
      &amp;quot;From&amp;quot;: {
        &amp;quot;Email&amp;quot;: &amp;quot;&amp;lt;sender_email&amp;gt;&amp;quot;,
        &amp;quot;Name&amp;quot;: &amp;quot;&amp;lt;sender_name&amp;gt;&amp;quot;
      },
      &amp;quot;To&amp;quot;: [
        {
          &amp;quot;Email&amp;quot;: &amp;quot;&amp;lt;recipient_mail&amp;gt;&amp;quot;,
          &amp;quot;Name&amp;quot;: &amp;quot;&amp;lt;recipient_name&amp;gt;&amp;quot;
        },
        {
          &amp;quot;Email&amp;quot;: &amp;quot;&amp;lt;recipient2_mail&amp;gt;&amp;quot;,
          &amp;quot;Name&amp;quot;: &amp;quot;Pushover&amp;quot;
        }
      ],
      &amp;quot;Subject&amp;quot;: &amp;quot;Action required: Unlock &amp;lt;fqdn&amp;gt;!&amp;quot;,
      &amp;quot;TextPart&amp;quot;: &amp;quot;Server &amp;lt;fqdn&amp;gt; was restarted and need to be unlocked to proceed boot sequence.&amp;quot;,
      &amp;quot;CustomID&amp;quot;: &amp;quot;DropbearUnlockRequest&amp;quot;
    }
  ]
}'&lt;/span&gt;&lt;span class="pygments-w"&gt;
&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;I'm also using &lt;a class="reference external" href="https://pushover.net"&gt;Pushover&lt;/a&gt; to receive notifications on my mobile, they offer mail2push,
so I just added my personal pushover address as second recipient to get notified by Mail and Pushover.&lt;/p&gt;
&lt;p&gt;Make both scripts executable:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
chmod +x /etc/initramfs-tools/hooks/curl`
chmod +x /etc/initramfs-tools/scripts/init-premount/notification

&lt;/pre&gt;
&lt;p&gt;Run &lt;code&gt;update-initramfs -u&lt;/code&gt; and you are good to go, during the next reboot you should receive
an Email Notification to enter your LUKS Key and unlock your disk.&lt;/p&gt;
</content><category term="Linux"/><category term="Debian"/><category term="Proxmox"/><category term="Dropbear"/><category term="SSH"/><category term="LUKS"/><category term="EMail"/></entry><entry><title>Proxmox and NAT64 - jool seems incompatible with PVE Firewall, Tayga to rescue</title><link href="https://dominik.wombacher.cc/posts/proxmox_and_nat64_jool_seems_incompatible_with_pve_firewall_tayga_to_rescue.html" rel="alternate"/><published>2022-03-03T00:00:00+01:00</published><updated>2022-03-03T00:00:00+01:00</updated><author><name>Dominik Wombacher</name></author><id>tag:dominik.wombacher.cc,2022-03-03:/posts/proxmox_and_nat64_jool_seems_incompatible_with_pve_firewall_tayga_to_rescue.html</id><summary type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I'm using IPv6-only whenever possible, but some sites like github.com are still not reachable via IPv6.
In such a case NAT64 is the way to go and to simplify  ... &lt;a class="read-more" href="/posts/proxmox_and_nat64_jool_seems_incompatible_with_pve_firewall_tayga_to_rescue.html"&gt; [read more]&lt;/a&gt;&lt;/p&gt;</summary><content type="html">&lt;!-- SPDX-FileCopyrightText: 2023 Dominik Wombacher &lt;dominik@wombacher.cc&gt; --&gt;
&lt;!--  --&gt;
&lt;!-- SPDX-License-Identifier: CC-BY-SA-4.0 --&gt;
&lt;p&gt;I'm using IPv6-only whenever possible, but some sites like github.com are still not reachable via IPv6.
In such a case NAT64 is the way to go and to simplify the setup as well as to avoid wasting further IPv4 addresses,
I wantend to configure it directly on my Proxmox PVE Hosts instead a separate Router VM or similar.&lt;/p&gt;
&lt;p&gt;After some research I decided to give &lt;a class="reference external" href="https://www.jool.mx/en/index.html"&gt;Jool&lt;/a&gt; a try, it's running as Kernel
module, what's promising from a performance perspective and is still under some sort of active development.&lt;/p&gt;
&lt;p&gt;Compared to &lt;a class="reference external" href="http://www.litech.org/tayga/"&gt;Tayga&lt;/a&gt;, which is running in the userland and had the last release in June 2011.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Spoiler: Due to issues in combination with the PVE Firewall, I had to use Tayga at the end, keep reading for the details.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I just wanted to use stateful NAT64, so the setup on my Proxmox Host, which is running Debian 11, was quite easy
but it's necessary to install a lot of devel packages and a compiler to build the kernel module,
also the module will be rebuild during every kernel upgrade, that might not in all Environments acceptable.&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
apt install -y pve-headers-$(uname -r)
apt install -y jool-dkms jool-tools

mkdir /etc/jool

/etc/jool/jool.conf
```
{
      &amp;quot;instance&amp;quot;: &amp;quot;default&amp;quot;,
      &amp;quot;framework&amp;quot;: &amp;quot;netfilter&amp;quot;,
      &amp;quot;global&amp;quot;: {
              &amp;quot;pool6&amp;quot;: &amp;quot;64:ff9b::/96&amp;quot;
      }
}
```

systemctl enable --now jool

&lt;/pre&gt;
&lt;p&gt;That's it, was working as a charme and I thought this will be my new standard setup, until I enabled the Proxmox Firewall,
which immediately dropped any NAT64 traffic. But nothing was blocked by the Firewall also nothing showed up in the logs.&lt;/p&gt;
&lt;p&gt;There wasn't much I could find online, doesn't look like a widely used or even evaluated setup,
&lt;em&gt;jool&lt;/em&gt; has 0 search results in the Proxmox Forum for example.&lt;/p&gt;
&lt;p&gt;After a few hours, I was able to track it down and from my understanding about the implementation of
&lt;em&gt;jool&lt;/em&gt; as well as the Proxmox PVE Firewall, both just seem to be incompatible.&lt;/p&gt;
&lt;p&gt;Debug output of a successful routed package with deactivated firewall:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
Jool NAT64/8fee3fc0/default: Packet: 140.82.121.4-&amp;gt;78.46.88.247
Jool NAT64/8fee3fc0/default: ICMPv4 type:0 code:0 id:63596
Jool NAT64/8fee3fc0/default: Step 1: Determining the Incoming Tuple
Jool NAT64/8fee3fc0/default: Tuple: 140.82.121.4#63596 -&amp;gt; 78.46.88.247#63596 (ICMP)
Jool NAT64/8fee3fc0/default: Done step 1.
Jool NAT64/8fee3fc0/default: Step 2: Filtering and Updating
Jool NAT64/8fee3fc0/default: BIB entry: 2a01:4f8:120:2700:7864:c5ff:fead:4d8c#1547 - 78.46.88.247#63596 (ICMP)
Jool NAT64/8fee3fc0/default: Session entry: 2a01:4f8:120:2700:7864:c5ff:fead:4d8c#1547 - 64:ff9b::8c52:7904#1547 | 78.46.88.247#63596 - 140.82.121.4#63596 (ICMP)
Jool NAT64/8fee3fc0/default: Done: Step 2.
Jool NAT64/8fee3fc0/default: Step 3: Computing the Outgoing Tuple
Jool NAT64/8fee3fc0/default: Tuple: 64:ff9b::8c52:7904#1547 -&amp;gt; 2a01:4f8:120:2700:7864:c5ff:fead:4d8c#1547 (ICMP)
Jool NAT64/8fee3fc0/default: Done step 3.
Jool NAT64/8fee3fc0/default: Step 4: Translating the Packet
Jool NAT64/8fee3fc0/default: Routing: 64:ff9b::8c52:7904-&amp;gt;2a01:4f8:120:2700:7864:c5ff:fead:4d8c
Jool NAT64/8fee3fc0/default: Packet routed via device 'vlan10'.
Jool NAT64/8fee3fc0/default: Done step 4.
Jool NAT64/8fee3fc0/default: Sending packet.
Jool NAT64/8fee3fc0/default: Success.

&lt;/pre&gt;
&lt;p&gt;Debug output of a dropped package, error &lt;em&gt;Hairpinning loop&lt;/em&gt;, with enabled firewall:&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
Jool NAT64/8fee3fc0/default: ===============================================
Jool NAT64/8fee3fc0/default: Packet: 64:ff9b::8c52:7904-&amp;gt;2a01:4f8:120:2700:7864:c5ff:fead:4d8c
Jool NAT64/8fee3fc0/default: ICMPv6 type:129 code:0 id:1551
Jool NAT64/8fee3fc0/default: Step 1: Determining the Incoming Tuple
Jool NAT64/8fee3fc0/default: Tuple: 64:ff9b::8c52:7904#1551 -&amp;gt; 2a01:4f8:120:2700:7864:c5ff:fead:4d8c#1551 (ICMP)
Jool NAT64/8fee3fc0/default: Done step 1.
Jool NAT64/8fee3fc0/default: Step 2: Filtering and Updating
Jool NAT64/8fee3fc0/default: Hairpinning loop. Dropping...

&lt;/pre&gt;
&lt;p&gt;First things first, why was it dropped? Because Jool doesn't allow packages, where the source is in the same IPv6 range as the configured pool.
Even though the problem is different, the behavior regarding the source IP was explained quite well in this Post on the
&lt;a class="reference external" href="https://mail-lists.nic.mx/pipermail/jool-list/2017-April/000116.html"&gt;Jool-list&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220303001523/https://mail-lists.nic.mx/pipermail/jool-list/2017-April/000116.html"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.03-001555/https://mail-lists.nic.mx/pipermail/jool-list/2017-April/000116.html"&gt;[2]&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Well, but why does packages with source IPs from the Jool Pool come up at all, when the Firewall on the NIC of a Virtual Machine is enabled?
I learned that three additional interfaces will be created per NIC and PVE VM - &lt;a class="reference external" href="https://forum.proxmox.com/threads/unknown-devices-ifconfig.42407/#post-203988"&gt;Source&lt;/a&gt;
(Archive: &lt;a class="reference external" href="https://web.archive.org/web/20220303001612/https://forum.proxmox.com/threads/unknown-devices-ifconfig.42407/"&gt;[1]&lt;/a&gt;,
&lt;a class="reference external" href="https://archive.today/2022.03.03-001714/https://forum.proxmox.com/threads/unknown-devices-ifconfig.42407/%23post-203988"&gt;[2]&lt;/a&gt;):&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
fwbr&amp;lt;VMID&amp;gt;i&amp;lt;network interface X&amp;gt; is the firewall bridge where the filtering happens.
fwpr&amp;lt;VMID&amp;gt;i&amp;lt;network interface X&amp;gt; is the bridge in device.
fwln&amp;lt;VMID&amp;gt;i&amp;lt;network interface X&amp;gt; is the bridge out device.

&lt;/pre&gt;
&lt;p&gt;So the traffic flow changes, packages passing further bridges and devices and packages with NAT64 pool addresses as source start
to show up, but are dropped by the Jool Kernel Module before they are further routed or filtered by the PVE Firewall.&lt;/p&gt;
&lt;p&gt;I understand why it's happening but not how to solve it, my Google Fu wasn't strong enough and
I just couldn't find any useful hints how to tackel this problem.&lt;/p&gt;
&lt;p&gt;So I decided to replace Jool, even though it feels like the right solution for NAT64, with Tayga,
which is using a own TAP device to route the traffic and perform the actual 6&amp;lt;&amp;gt;4 translation.
The Setup was, to be fair, as simple as Jool, with the benefit that I didn't had to install devel and compiler packages at all.&lt;/p&gt;
&lt;pre class="code text literal-block"&gt;
apt install -y tayga

/etc/tayga.conf
```
tun-device nat64
ipv4-addr 192.168.255.1
ipv6-addr 2a01:4f8:120:225e::64
prefix 64:ff9b::/96
dynamic-pool 192.168.255.0/24
data-dir /var/spool/tayga
```

systemctl enable --now tayga

&lt;/pre&gt;
&lt;p&gt;VMs with enabled Firewall could reach targets via NAT64 right away after starting the tayga service.
Also all rules where applied as expected and for my scenario, the performance was more than sufficient.&lt;/p&gt;
&lt;p&gt;At the end I have to admit that Tayga does a great job and is the better fit in
a scenario like running on a Hypervisor which also provides Firewalling.
This just seem to be something where it can get quite complicated, frustrating
and maybe even more or less impossible to use Jool.&lt;/p&gt;
&lt;p&gt;I'm still a little concerned about the fact that Tayga doesn't seem to be maintained anymore and might end as abandonware.
But as long the package is available in the regular Debian Repository and no
critical security issue comes up, I will stick with Tayga for NAT64.&lt;/p&gt;
</content><category term="Linux"/><category term="proxmox"/><category term="nat64"/><category term="jool"/><category term="tayga"/><category term="pve"/><category term="firewall"/></entry></feed>