*: Remove support for niftycloud OEM

This commit is contained in:
Krzesimir Nowak 2023-07-05 14:26:43 +02:00
parent ad0360e744
commit 00ac7586a4
13 changed files with 14 additions and 363 deletions

View File

@ -1,116 +0,0 @@
#!/bin/bash
SCRIPT_ROOT=$(readlink -f $(dirname "$0")/..)
. "${SCRIPT_ROOT}/common.sh" || exit 1
DEFINE_string vm_name "CoreOS" "Name for this VM"
DEFINE_string disk_vmdk "" "Disk image to reference, only basename is used."
DEFINE_integer memory_size 1024 "Memory size in MB"
DEFINE_string output_ovf "" "Path to write ofv file to, required."
# Parse command line
FLAGS "$@" || exit 1
eval set -- "${FLAGS_ARGV}"
# Die on any errors.
switch_to_strict_mode
if [[ ! -e "${FLAGS_disk_vmdk}" ]]; then
echo "No such disk image '${FLAGS_disk_vmdk}'" >&2
exit 1
fi
DISK_NAME=$(basename "${FLAGS_disk_vmdk}")
DISK_UUID=$(uuidgen)
DISK_SIZE_BYTES=$(qemu-img info -f vmdk "${FLAGS_disk_vmdk}" \
| gawk 'match($0, /^virtual size:.*\(([0-9]+) bytes\)/, a) {print a[1]}')
DISK_FILE_SIZE_BYTES=$(ls -l ${FLAGS_disk_vmdk} | awk '{print $5}')
if [[ -z "${DISK_SIZE_BYTES}" ]]; then
echo "Unable to determine virtual size of ${FLAGS_disk_vmdk}" >&2
exit 1
fi
# Date format as used in ovf
datez() {
date -u "+%Y-%m-%dT%H:%M:%SZ"
}
if [[ -n "${FLAGS_output_ovf}" ]]; then
cat >"${FLAGS_output_ovf}" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:cim="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<References>
<File ovf:href="${DISK_NAME}" ovf:id="file1" ovf:size="${DISK_FILE_SIZE_BYTES}"/>
</References>
<DiskSection>
<Info>List of the virtual disks used in the package</Info>
<Disk ovf:capacity="30" ovf:capacityAllocationUnits="byte * 2^30" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:populatedSize="${DISK_SIZE_BYTES}"/>
</DiskSection>
<NetworkSection>
<Info>Logical networks used in the package</Info>
<Network ovf:name="bridged">
<Description>Logical network used by this appliance.</Description>
</Network>
</NetworkSection>
<VirtualSystem ovf:id="${FLAGS_vm_name}">
<Info>A virtual machine</Info>
<Name>${FLAGS_vm_name}</Name>
<OperatingSystemSection ovf:id="1" vmw:osType="*other26xLinux64Guest">
<Info>The kind of installed guest operating system</Info>
</OperatingSystemSection>
<VirtualHardwareSection>
<Info>Virtual hardware requirements for a virtual machine</Info>
<System>
<vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
<vssd:InstanceID>0</vssd:InstanceID>
<vssd:VirtualSystemIdentifier>${FLAGS_vm_name}</vssd:VirtualSystemIdentifier>
<vssd:VirtualSystemType>vmx-08</vssd:VirtualSystemType>
</System>
<Item>
<rasd:AllocationUnits>hertz * 10^6</rasd:AllocationUnits>
<rasd:Description>Number of virtual CPUs</rasd:Description>
<rasd:ElementName>1 virtual CPU(s)</rasd:ElementName>
<rasd:InstanceID>1</rasd:InstanceID>
<rasd:ResourceType>3</rasd:ResourceType>
<rasd:VirtualQuantity>1</rasd:VirtualQuantity>
</Item>
<Item>
<rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
<rasd:Description>Memory Size</rasd:Description>
<rasd:ElementName>${FLAGS_memory_size} MB of memory</rasd:ElementName>
<rasd:InstanceID>2</rasd:InstanceID>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>${FLAGS_memory_size}</rasd:VirtualQuantity>
</Item>
<Item>
<rasd:Address>0</rasd:Address>
<rasd:Description>SCSI Controller</rasd:Description>
<rasd:ElementName>scsiController0</rasd:ElementName>
<rasd:InstanceID>3</rasd:InstanceID>
<rasd:ResourceSubType>VirtualSCSI</rasd:ResourceSubType>
<rasd:ResourceType>6</rasd:ResourceType>
</Item>
<Item>
<rasd:AddressOnParent>0</rasd:AddressOnParent>
<rasd:ElementName>disk0</rasd:ElementName>
<rasd:HostResource>ovf:/disk/vmdisk1</rasd:HostResource>
<rasd:InstanceID>4</rasd:InstanceID>
<rasd:Parent>3</rasd:Parent>
<rasd:ResourceType>17</rasd:ResourceType>
</Item>
<Item>
<rasd:AddressOnParent>2</rasd:AddressOnParent>
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
<rasd:Connection>bridged</rasd:Connection>
<rasd:Description>VmxNet3 ethernet adapter on &quot;bridged&quot;</rasd:Description>
<rasd:ElementName>ethernet0</rasd:ElementName>
<rasd:InstanceID>5</rasd:InstanceID>
<rasd:ResourceSubType>VmxNet3</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
</Item>
</VirtualHardwareSection>
</VirtualSystem>
</Envelope>
EOF
fi

View File

@ -18,7 +18,6 @@ VALID_IMG_TYPES=(
gce gce
hyperv hyperv
iso iso
niftycloud
openstack openstack
openstack_mini openstack_mini
packet packet
@ -52,7 +51,6 @@ VALID_OEM_PACKAGES=(
exoscale exoscale
gce gce
hyperv hyperv
niftycloud
packet packet
qemu qemu
rackspace rackspace
@ -291,12 +289,6 @@ IMG_azure_OEM_SYSEXT=oem-azure
IMG_hyperv_DISK_FORMAT=vhd IMG_hyperv_DISK_FORMAT=vhd
IMG_hyperv_OEM_PACKAGE=oem-hyperv IMG_hyperv_OEM_PACKAGE=oem-hyperv
## niftycloud
IMG_niftycloud_DISK_FORMAT=vmdk_stream
IMG_niftycloud_DISK_LAYOUT=vm
IMG_niftycloud_CONF_FORMAT=niftycloud
IMG_niftycloud_OEM_PACKAGE=oem-niftycloud
## cloudsigma ## cloudsigma
IMG_cloudsigma_DISK_FORMAT=qcow2 IMG_cloudsigma_DISK_FORMAT=qcow2
IMG_cloudsigma_OEM_PACKAGE=oem-cloudsigma IMG_cloudsigma_OEM_PACKAGE=oem-cloudsigma
@ -1114,26 +1106,6 @@ _write_gce_conf() {
VM_GENERATED_FILES=( "${tar_path}" ) VM_GENERATED_FILES=( "${tar_path}" )
} }
_write_niftycloud_conf() {
local vm_mem="${1:-$(_get_vm_opt MEM)}"
local src_name=$(basename "$VM_SRC_IMG")
local dst_name=$(basename "$VM_DST_IMG")
local ovf="$(_dst_dir)/$(_src_to_dst_name "${src_name}" ".ovf")"
"${BUILD_LIBRARY_DIR}/niftycloud_ovf.sh" \
--vm_name "$VM_NAME" \
--disk_vmdk "$VM_DST_IMG" \
--memory_size "$vm_mem" \
--output_ovf "$ovf"
local ovf_name=$(basename "${ovf}")
cat > "${VM_README}" <<EOF
Import ${ovf_name} and ${dst_name} to NIFTY Cloud.
EOF
VM_GENERATED_FILES+=( "$ovf" )
}
_write_ovf_vmware_conf() { _write_ovf_vmware_conf() {
local vm_mem="${1:-$(_get_vm_opt MEM)}" local vm_mem="${1:-$(_get_vm_opt MEM)}"
local vm_cpus="$(_get_vm_opt CPUS)" local vm_cpus="$(_get_vm_opt CPUS)"

View File

@ -1,57 +0,0 @@
#cloud-config
coreos:
units:
- name: oem-ens192.network
content: |
[Match]
Name=ens192
[Network]
DHCP=v4
DNS=8.8.8.8
DNS=8.8.4.4
- name: vmtoolsd.service
command: start
content: |
[Unit]
Description=VMware Tools Agent
Documentation=http://open-vm-tools.sourceforge.net/
ConditionVirtualization=vmware
[Service]
ExecStartPre=/usr/bin/ln -sfT /oem/vmware-tools /etc/vmware-tools
ExecStart=/oem/bin/vmtoolsd
ExecStartPost=/oem/bin/vmware-toolbox-cmd timesync enable
TimeoutStopSec=5
- name: niftycloud-coreos-cloudinit.service
command: restart
runtime: yes
content: |
[Unit]
After=flatcar-setup-environment.service
After=vmtoolsd.service
Requires=flatcar-setup-environment.service
Requires=vmtoolsd.service
[Service]
Type=oneshot
EnvironmentFile=/etc/environment
ExecStart=/oem/bin/niftycloud-coreos-cloudinit
- name: niftycloud-ssh-key.service
command: restart
runtime: yes
content: |
[Unit]
Description=Sets SSH key from vmtoolsd
[Service]
Type=oneshot
StandardOutput=journal+console
ExecStart=/oem/bin/niftycloud-ssh-key
oem:
id: niftycloud
name: NIFTY Cloud
version-id: @@OEM_VERSION_ID@@
home-url: http://cloud.nifty.com/
bug-report-url: https://issues.flatcar.org

View File

@ -1,35 +0,0 @@
#!/bin/bash -e
ENV=$1
if [ -z "$ENV" ]; then
echo usage: $0 /etc/environment
exit 1
fi
# test for rw
touch $ENV
if [ $? -ne 0 ]; then
echo exiting, unable to modify: $ENV
exit 1
fi
sed -i -e '/^COREOS_PUBLIC_IPV4=/d' \
-e '/^COREOS_PRIVATE_IPV4=/d' \
"${ENV}"
function get_ip () {
IF=$1
IP=
while [ 1 ]; do
IP=$(ip addr show $IF | awk '/inet /{print $2}' | awk -F'/' '{print $1}')
if [ "$IP" != "" ]; then
break
fi
sleep .1
done
echo $IP
}
echo COREOS_PUBLIC_IPV4=$(get_ip ens192) >> $ENV
echo COREOS_PRIVATE_IPV4=$(get_ip ens224) >> $ENV

View File

@ -1,3 +0,0 @@
# Flatcar GRUB settings
set oem_id="niftycloud"

View File

@ -1,30 +0,0 @@
#!/bin/bash
VMTOOLSD=""
if [ -x /oem/bin/vmtoolsd ]; then
VMTOOLSD="/oem/bin/vmtoolsd"
else
exit 1
fi
USER_DATA_DIR=/var/lib/flatcar-niftycloud
USER_DATA_PATH=${USER_DATA_DIR}/user-data
USER_DATA_FLAG=$(${VMTOOLSD} --cmd 'info-get guestinfo.set_user_data')
if [ "$USER_DATA_FLAG" == "1" ]; then
TMPFILE=$(mktemp /tmp/XXXXXX-cloud-init)
${VMTOOLSD} --cmd 'info-get guestinfo.user_data' | openssl enc -d -base64 > "${TMPFILE}"
if [ -s "${TMPFILE}" ]; then
coreos-cloudinit --from-file="${TMPFILE}" || exit $?
if [ "$(head -n 1 ${TMPFILE} | tr -d '\r' | tr -d '\n')" = "#cloud-config" ]; then
mkdir -p ${USER_DATA_DIR}
cp -p ${TMPFILE} ${USER_DATA_PATH}
fi
else
echo "guestinfo.user_data undefined." >&2
exit 1
fi
${VMTOOLSD} --cmd 'info-set guestinfo.set_user_data 0'
elif [ -f ${USER_DATA_PATH} ]; then
coreos-cloudinit --from-file="${USER_DATA_PATH}" || exit $?
fi

View File

@ -1,25 +0,0 @@
#!/bin/bash -e
set -e
VMTOOLSD=""
if [ -x /oem/bin/vmtoolsd ]; then
VMTOOLSD="/oem/bin/vmtoolsd"
else
exit 1
fi
INIT=$(${VMTOOLSD} --cmd 'info-get guestinfo.init' 2>&1)
if [ $? -ne 0 ]; then
echo "guestinfo.init undefined."
${VMTOOLSD} --cmd 'info-set guestinfo.init_result 9999'
exit 0
fi
echo "guestinfo.init: $INIT"
if [ $INIT == "1" ]; then
${VMTOOLSD} --cmd 'info-get guestinfo.ssh_authorized_key' | update-ssh-keys -a "niftycloud" -
${VMTOOLSD} --cmd 'info-set guestinfo.init 0'
fi
${VMTOOLSD} --cmd 'info-set guestinfo.init_result 1'

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
</pkgmetadata>

View File

@ -1,38 +0,0 @@
# Copyright (c) 2014 NIFTY Corp.. All rights reserved.
# Distributed under the terms of the GNU General Public License v2
EAPI=7
DESCRIPTION="OEM suite for NIFTY Cloud images"
HOMEPAGE=""
SRC_URI=""
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE=""
# no source directory
S="${WORKDIR}"
DEPEND="
app-emulation/open-vm-tools
"
RDEPEND="${DEPEND}"
src_prepare() {
default
sed -e "s\\@@OEM_VERSION_ID@@\\${PVR}\\g" \
"${FILESDIR}/cloud-config.yml" > "${T}/cloud-config.yml" || die
}
src_install() {
into "/oem"
dobin "${FILESDIR}/niftycloud-ssh-key"
dobin "${FILESDIR}/niftycloud-coreos-cloudinit"
dobin "${FILESDIR}/flatcar-setup-environment"
insinto "/oem"
doins "${T}/cloud-config.yml"
doins "${FILESDIR}/grub.cfg"
}

View File

@ -1,4 +1,4 @@
From 31b8b62de7c0b617d03fc85b7190fb99048d941f Mon Sep 17 00:00:00 2001 From 8e7ad5ef7ea79d541d8f960f2647a5cd17e72751 Mon Sep 17 00:00:00 2001
From: Mathieu Tortuyaux <mtortuyaux@microsoft.com> From: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
Date: Wed, 21 Dec 2022 17:25:02 +0100 Date: Wed, 21 Dec 2022 17:25:02 +0100
Subject: [PATCH 18/21] revert: internal/oem: drop noop OEMs Subject: [PATCH 18/21] revert: internal/oem: drop noop OEMs
@ -7,11 +7,11 @@ This reverts: https://github.com/coreos/ignition/commit/26828f92e00060aa8ebf2197
Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com> Signed-off-by: Mathieu Tortuyaux <mtortuyaux@microsoft.com>
--- ---
internal/platform/platform.go | 24 ++++++++++++++++++++++++ internal/platform/platform.go | 20 ++++++++++++++++++++
1 file changed, 24 insertions(+) 1 file changed, 20 insertions(+)
diff --git a/internal/platform/platform.go b/internal/platform/platform.go diff --git a/internal/platform/platform.go b/internal/platform/platform.go
index 51bf5174..64f6d364 100644 index 51bf5174..5ed36663 100644
--- a/internal/platform/platform.go --- a/internal/platform/platform.go
+++ b/internal/platform/platform.go +++ b/internal/platform/platform.go
@@ -132,6 +132,10 @@ func init() { @@ -132,6 +132,10 @@ func init() {
@ -36,18 +36,7 @@ index 51bf5174..64f6d364 100644
configs.Register(Config{ configs.Register(Config{
name: "ibmcloud", name: "ibmcloud",
fetch: ibmcloud.FetchConfig, fetch: ibmcloud.FetchConfig,
@@ -164,6 +172,10 @@ func init() { @@ -185,6 +193,18 @@ func init() {
name: "metal",
fetch: noop.FetchConfig,
})
+ configs.Register(Config{
+ name: "niftycloud",
+ fetch: noop.FetchConfig,
+ })
configs.Register(Config{
name: "nutanix",
fetch: nutanix.FetchConfig,
@@ -185,6 +197,18 @@ func init() {
name: "qemu", name: "qemu",
fetch: qemu.FetchConfig, fetch: qemu.FetchConfig,
}) })

View File

@ -1,17 +1,17 @@
From 2325c44516e3a1e7ecadc0f0a04ad438d69319af Mon Sep 17 00:00:00 2001 From 8848eb28f78750b16cd503f64279847a5e2681ae Mon Sep 17 00:00:00 2001
From: Krzesimir Nowak <knowak@microsoft.com> From: Krzesimir Nowak <knowak@microsoft.com>
Date: Fri, 14 Apr 2023 11:37:20 +0200 Date: Fri, 14 Apr 2023 11:37:20 +0200
Subject: [PATCH 19/21] docs: Add re-added platforms to docs to pass tests Subject: [PATCH 19/21] docs: Add re-added platforms to docs to pass tests
--- ---
docs/supported-platforms.md | 6 ++++++ docs/supported-platforms.md | 5 +++++
1 file changed, 6 insertions(+) 1 file changed, 5 insertions(+)
diff --git a/docs/supported-platforms.md b/docs/supported-platforms.md diff --git a/docs/supported-platforms.md b/docs/supported-platforms.md
index f7bb4b40..242296d0 100644 index f7bb4b40..eb5db00f 100644
--- a/docs/supported-platforms.md --- a/docs/supported-platforms.md
+++ b/docs/supported-platforms.md +++ b/docs/supported-platforms.md
@@ -12,18 +12,24 @@ Ignition is currently only supported for the following platforms: @@ -12,10 +12,12 @@ Ignition is currently only supported for the following platforms:
* [Microsoft Azure Stack] (`azurestack`) - Ignition will read its configuration from the custom data provided to the instance. Cloud SSH keys are handled separately. * [Microsoft Azure Stack] (`azurestack`) - Ignition will read its configuration from the custom data provided to the instance. Cloud SSH keys are handled separately.
* Bare Metal - Use the `ignition.config.url` kernel parameter to provide a URL to the configuration. The URL can use the `http://`, `https://`, `tftp://`, `s3://`, or `gs://` schemes to specify a remote config or the `oem://` scheme to specify a local config, rooted in `/usr/share/oem`. * Bare Metal - Use the `ignition.config.url` kernel parameter to provide a URL to the configuration. The URL can use the `http://`, `https://`, `tftp://`, `s3://`, or `gs://` schemes to specify a remote config or the `oem://` scheme to specify a local config, rooted in `/usr/share/oem`.
* [Brightbox] (`brightbox`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately. * [Brightbox] (`brightbox`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
@ -24,9 +24,7 @@ index f7bb4b40..242296d0 100644
* [IBM Cloud] (`ibmcloud`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately. * [IBM Cloud] (`ibmcloud`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
* [KubeVirt] (`kubevirt`) - Ignition will read its configuration from the instance userdata via config drive. Cloud SSH keys are handled separately. * [KubeVirt] (`kubevirt`) - Ignition will read its configuration from the instance userdata via config drive. Cloud SSH keys are handled separately.
* Bare Metal (`metal`) - Use the `ignition.config.url` kernel parameter to provide a URL to the configuration. The URL can use the `http://`, `https://`, `tftp://`, `s3://`, `arn:`, or `gs://` schemes to specify a remote config. * Bare Metal (`metal`) - Use the `ignition.config.url` kernel parameter to provide a URL to the configuration. The URL can use the `http://`, `https://`, `tftp://`, `s3://`, `arn:`, or `gs://` schemes to specify a remote config.
+* `niftycloud` - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately. @@ -24,6 +26,9 @@ Ignition is currently only supported for the following platforms:
* [Nutanix] (`nutanix`) - Ignition will read its configuration from the instance userdata via config drive. Cloud SSH keys are handled separately.
* [OpenStack] (`openstack`) - Ignition will read its configuration from the instance userdata via either metadata service or config drive. Cloud SSH keys are handled separately.
* [Equinix Metal] (`packet`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately. * [Equinix Metal] (`packet`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
* [IBM Power Systems Virtual Server] (`powervs`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately. * [IBM Power Systems Virtual Server] (`powervs`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
* [QEMU] (`qemu`) - Ignition will read its configuration from the 'opt/com.coreos/config' key on the QEMU Firmware Configuration Device (available in QEMU 2.4.0 and higher). * [QEMU] (`qemu`) - Ignition will read its configuration from the 'opt/com.coreos/config' key on the QEMU Firmware Configuration Device (available in QEMU 2.4.0 and higher).

View File

@ -1,4 +1,4 @@
From b366b5c0e1e30e0743d387d6f5f100214149293e Mon Sep 17 00:00:00 2001 From 6f80f077330d91ee9bab5ece26dceb5b4a12939a Mon Sep 17 00:00:00 2001
From: Krzesimir Nowak <knowak@microsoft.com> From: Krzesimir Nowak <knowak@microsoft.com>
Date: Tue, 4 Apr 2023 12:12:42 +0200 Date: Tue, 4 Apr 2023 12:12:42 +0200
Subject: [PATCH 20/21] /usr/share/oem -> /oem Subject: [PATCH 20/21] /usr/share/oem -> /oem
@ -23,7 +23,7 @@ index 347d148c..d4c057b2 100644
// generate a new path // generate a new path
fsMap[name] = "/tmp/" + name + "-ign" + strconv.FormatUint(addedSuffixCounter, 10) fsMap[name] = "/tmp/" + name + "-ign" + strconv.FormatUint(addedSuffixCounter, 10)
diff --git a/docs/supported-platforms.md b/docs/supported-platforms.md diff --git a/docs/supported-platforms.md b/docs/supported-platforms.md
index 242296d0..4ba98af5 100644 index eb5db00f..d79c3bf2 100644
--- a/docs/supported-platforms.md --- a/docs/supported-platforms.md
+++ b/docs/supported-platforms.md +++ b/docs/supported-platforms.md
@@ -10,7 +10,7 @@ Ignition is currently only supported for the following platforms: @@ -10,7 +10,7 @@ Ignition is currently only supported for the following platforms:

View File

@ -1,4 +1,4 @@
From 0fe25f0aae40f2fe273dd48bdc9fe9c051471af8 Mon Sep 17 00:00:00 2001 From 3adef6a01c987ed2156636fab1791e534f770621 Mon Sep 17 00:00:00 2001
From: Krzesimir Nowak <knowak@microsoft.com> From: Krzesimir Nowak <knowak@microsoft.com>
Date: Tue, 16 May 2023 17:43:43 +0200 Date: Tue, 16 May 2023 17:43:43 +0200
Subject: [PATCH 21/21] internal/exec/stages/mount: Mount /oem Subject: [PATCH 21/21] internal/exec/stages/mount: Mount /oem