Create OVA file from release (#636)

* Create OVA file from release

* Fix name & add boot flag

* revert name

* style cleanup

* Fix script

* Add cleanup
This commit is contained in:
Pascal Vizeli 2020-04-26 01:09:51 +02:00 committed by GitHub
parent 34b7bbd68d
commit 6a49aa1c2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 160 additions and 3 deletions

View File

@ -15,10 +15,27 @@ function hassos_pre_image() {
function hassos_post_image() {
local HDD_IMG="$(hassos_image_name img)"
local HDD_OVA="$(hassos_image_name ova)"
local OVA_DATA="${BINARIES_DIR}/ova"
# Virtual Disk images
convert_disk_image_virtual
convert_disk_image_gz vmdk
convert_disk_image_gz vhdx
convert_disk_image_gz vdi
}
convert_disk_image_gz qcow2
# OVA
mkdir -p "${OVA_DATA}"
rm -f "${HDD_OVA}"
cp -a ${BOARD_DIR}/home-assistant.ovf "${OVA_DATA}/home-assistant.ovf"
qemu-img convert -O vmdk -o subformat=streamOptimized "${HDD_IMG}" "${OVA_DATA}/home-assistant.vmdk"
(cd "${OVA_DATA}"; sha256sum --tag home-assistant.* >home-assistant.mf)
tar -C "${OVA_DATA}" --owner=root --group=root -cf "${HDD_OVA}" home-assistant.ovf home-assistant.vmdk home-assistant.mf
# Cleanup
rm -f "${HDD_IMG}"
}

View File

@ -0,0 +1,139 @@
<?xml version="1.0"?>
<Envelope ovf:version="1.0" xml:lang="en-US" xmlns="http://schemas.dmtf.org/ovf/envelope/1" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vbox="http://www.virtualbox.org/ovf/machine">
<References>
<File ovf:id="file1" ovf:href="home-assistant.vmdk"/>
</References>
<DiskSection>
<Info>List of the virtual disks used in the package</Info>
<Disk ovf:capacity="6442450944" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" ovf:boot="True" vbox:uuid="5f042839-c478-43d9-9eb0-fd8a902146ec"/>
</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="Home Assistant">
<Info>A virtual machine</Info>
<ProductSection>
<Info>Meta-information about the installed software</Info>
<Product>Operating-System</Product>
<ProductUrl>https://home-assistant.io</ProductUrl>
</ProductSection>
<OperatingSystemSection ovf:id="102" vmw:osType="otherLinux64Guest" ovf:required="false">
<Info>The kind of installed guest operating system</Info>
<Description>Linux</Description>
</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>Home Assistant</vssd:VirtualSystemIdentifier>
<vssd:VirtualSystemType>vmx-10</vssd:VirtualSystemType>
</System>
<Item>
<rasd:Caption>2 virtual CPU</rasd:Caption>
<rasd:Description>Number of virtual CPUs</rasd:Description>
<rasd:ElementName>2 virtual CPU</rasd:ElementName>
<rasd:InstanceID>1</rasd:InstanceID>
<rasd:ResourceType>3</rasd:ResourceType>
<rasd:VirtualQuantity>2</rasd:VirtualQuantity>
<vmw:CoresPerSocket ovf:required="false">2</vmw:CoresPerSocket>
</Item>
<Item>
<rasd:AllocationUnits>MegaBytes</rasd:AllocationUnits>
<rasd:Caption>2048 MB of memory</rasd:Caption>
<rasd:Description>Memory Size</rasd:Description>
<rasd:ElementName>2048 MB of memory</rasd:ElementName>
<rasd:InstanceID>2</rasd:InstanceID>
<rasd:ResourceType>4</rasd:ResourceType>
<rasd:VirtualQuantity>2048</rasd:VirtualQuantity>
</Item>
<Item>
<rasd:Address>0</rasd:Address>
<rasd:Caption>sataController0</rasd:Caption>
<rasd:Description>SATA Controller</rasd:Description>
<rasd:ElementName>sataController0</rasd:ElementName>
<rasd:InstanceID>3</rasd:InstanceID>
<rasd:ResourceSubType>AHCI</rasd:ResourceSubType>
<rasd:ResourceType>20</rasd:ResourceType>
</Item>
<Item ovf:required="false">
<rasd:Address>0</rasd:Address>
<rasd:Caption>usb</rasd:Caption>
<rasd:Description>USB Controller (EHCI)</rasd:Description>
<rasd:ElementName>usb</rasd:ElementName>
<rasd:InstanceID>4</rasd:InstanceID>
<rasd:ResourceType>23</rasd:ResourceType>
</Item>
<Item>
<rasd:AddressOnParent>0</rasd:AddressOnParent>
<rasd:Caption>disk1</rasd:Caption>
<rasd:Description>Disk Image</rasd:Description>
<rasd:ElementName>disk1</rasd:ElementName>
<rasd:HostResource>/disk/vmdisk1</rasd:HostResource>
<rasd:InstanceID>5</rasd:InstanceID>
<rasd:Parent>3</rasd:Parent>
<rasd:ResourceType>17</rasd:ResourceType>
<vmw:Config ovf:required="false" vmw:key="backing.writeThrough" vmw:value="false"/>
</Item>
<Item>
<rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
<rasd:Caption>eth0</rasd:Caption>
<rasd:Description>Ethernet adapter</rasd:Description>
<rasd:Connection>Bridged</rasd:Connection>
<rasd:ElementName>eth0</rasd:ElementName>
<rasd:InstanceID>6</rasd:InstanceID>
<rasd:ResourceSubType>E1000</rasd:ResourceSubType>
<rasd:ResourceType>10</rasd:ResourceType>
</Item>
<vmw:Config ovf:required="false" vmw:key="firmware" vmw:value="efi"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="cpuid.coresPerSocket" vmw:value="2"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="svga.present" vmw:value="TRUE"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:1.speed" vmw:value="2"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:1.present" vmw:value="TRUE"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:1.deviceType" vmw:value="hub"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:1.port" vmw:value="1"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:1.parent" vmw:value="-1"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="ctkEnabled" vmw:value="TRUE"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="sata0:0.ctkEnabled" vmw:value="TRUE"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:0.present" vmw:value="TRUE"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:0.deviceType" vmw:value="hid"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:0.port" vmw:value="0"/>
<vmw:ExtraConfig ovf:required="false" vmw:key="usb:0.parent" vmw:value="-1"/>
</VirtualHardwareSection>
<vbox:Machine ovf:required="false" version="1.16-windows" uuid="{cab1600e-df75-47c2-a237-cfb10215b42b}" name="Home Assistant" OSType="Linux_64">
<ovf:Info>Complete VirtualBox machine configuration in VirtualBox format</ovf:Info>
<Hardware>
<CPU count="2"/>
<Memory RAMSize="2048"/>
<Firmware type="EFI"/>
<Display VRAMSize="16"/>
<BIOS>
<IOAPIC enabled="true"/>
</BIOS>
<USB>
<Controllers>
<Controller name="OHCI" type="OHCI"/>
<Controller name="EHCI" type="EHCI"/>
</Controllers>
</USB>
<Network>
<Adapter slot="0" enabled="true" type="82540EM">
<BridgedInterface />
</Adapter>
</Network>
<AudioAdapter driver="Null" enabled="false"/>
<RTC localOrUTC="UTC"/>
</Hardware>
<StorageControllers>
<StorageController name="SATA" type="AHCI" PortCount="1">
<AttachedDevice type="HardDisk" hotpluggable="false" port="0" device="0">
<Image uuid="{5f042839-c478-43d9-9eb0-fd8a902146ec}"/>
</AttachedDevice>
</StorageController>
</StorageControllers>
</vbox:Machine>
</VirtualSystem>
</Envelope>

View File

@ -298,16 +298,17 @@ function convert_disk_image_virtual() {
local hdd_vmdk="$(hassos_image_name vmdk)"
local hdd_vhdx="$(hassos_image_name vhdx)"
local hdd_vdi="$(hassos_image_name vdi)"
local hdd_qcow2="$(hassos_image_name qcow2)"
rm -f "${hdd_vmdk}"
rm -f "${hdd_vhdx}"
rm -f "${hdd_vdi}"
rm -f "${hdd_qcow2}"
qemu-img convert -O vmdk "${hdd_img}" "${hdd_vmdk}"
qemu-img convert -O vhdx "${hdd_img}" "${hdd_vhdx}"
qemu-img convert -O vdi "${hdd_img}" "${hdd_vdi}"
rm -f "${hdd_img}"
qemu-img convert -O qcow2 "${hdd_img}" "${hdd_qcow2}"
}