Strumenti Utente

Strumenti Sito


doc:vbox_import_export_ova_issue

Questa è una vecchia versione del documento!


Importare in VirtualBox applicazioni virtuali di Mageia create con VirtualBox-OSE

Importare in VirtualBox applicazioni virtuali di Mageia create con VirtualBox-OSE
Autore Matteo (xquiet)
Data 30/11/2012 23:59
Livello * *

Premessa

VirtualBox è un'applicazione dedicata alla virtualizzazione per architetture x86 e x86_64 che viene distribuita in due modalità:

Questo breve howto illustra come esportare correttamente applicazioni virtuali (macchine virtuali) di Mageia realizzate con VirtualBox-OSE (comodamente installabile dai repositories di Mageia) affinché siano importabili nella versione di VirtualBox distribuita da Oracle.

Perché si rende necessario scrive questo howto? Per il semplice fatto che la versione di VirtualBox distribuita da Oracle non supporta nativamente Mageia come sistema operativo guest, mentre VirtualBox-OSE (versione 4.1.22_OSE disponibile su Mageia) sì.

Requisiti

  • Rudimenti di bash e text editing
  • Mageia 2 a 32bit o 64bit
  • Voglia di smanettare e un cervello funzionante, come sempre ;-)
  • Una macchina virtuale Mageia creata con VirtualBox-OSE

Il problema

Supponiamo che vogliate esportare la vostra macchina virtuale con Mageia per poterla distribuire ai vostri clienti o più semplicemente la vogliate passare a qualche amico durante un Install Fest di Mageia. Per fare questo VirtualBox-OSE (così come VirtualBox) mettono a disposizione la funzione Esporta applicazione accessibile dal menù File. Seguendo la procedura guidata otterrete un file con estensione .ova (d'ora in avanti per semplicità OVA).

Supponiamo, sempre per comodità, che la vostra macchina virtuale realizzata con VirtualBox-OSE debba essere importata in una VirtualBox di quelle che potete scaricare in forma binaria dal sito di Oracle, magari in esecuzione su una distribuzione diversa da Mageia.

Quello che succederà sarà grosso modo un messaggio di errore tipo:

Importazione dell'applicazione virtuale /home/matteo/Documenti/CentOS.ovf non riuscita.

Una digressione tecnica

Cosa sono i file OVA, come sono strutturati

Un file OVA non è altro che un archivio tar (d'ora in avanti tarball) contenente:

  • le immagini dei dischi
  • un file OVF
  • un manifesto (opzionale)

Cosa è un file OVF

I file OVF non sono altro che file xml contenenti la configurazione della vostra macchina virtuale. Questo file ha un ruolo chiave nella soluzione del problema qui proposto.

Un esempio:

<?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:href="CentOS-disk1.vmdk" ovf:id="file1"/> </References> <DiskSection> <Info>List of the virtual disks used in the package</Info> <Disk ovf:capacity="8589934592" ovf:diskId="vmdisk1" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" vbox:uuid="656d2cbe-8ed8-4fb2-99fd-c803d50d57d3"/> </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="CentOS"> <Info>A virtual machine</Info> <OperatingSystemSection ovf:id="79"> <Info>The kind of installed guest operating system</Info> <Description>GeronimoLOL</Description> <vbox:OSType ovf:required="false">GeronimoLOL</vbox:OSType> </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>CentOS</vssd:VirtualSystemIdentifier> <vssd:VirtualSystemType>virtualbox-2.2</vssd:VirtualSystemType> </System> <Item> <rasd:Caption>1 virtual CPU</rasd:Caption> <rasd:Description>Number of virtual CPUs</rasd:Description> <rasd:ElementName>1 virtual CPU</rasd:ElementName> <rasd:InstanceID>1</rasd:InstanceID> <rasd:ResourceType>3</rasd:ResourceType> <rasd:VirtualQuantity>1</rasd:VirtualQuantity> </Item> <Item> <rasd:AllocationUnits>MegaBytes</rasd:AllocationUnits> <rasd:Caption>512 MB of memory</rasd:Caption> <rasd:Description>Memory Size</rasd:Description> <rasd:ElementName>512 MB of memory</rasd:ElementName> <rasd:InstanceID>2</rasd:InstanceID> <rasd:ResourceType>4</rasd:ResourceType> <rasd:VirtualQuantity>512</rasd:VirtualQuantity> </Item> <Item> <rasd:Address>0</rasd:Address> <rasd:Caption>ideController0</rasd:Caption> <rasd:Description>IDE Controller</rasd:Description> <rasd:ElementName>ideController0</rasd:ElementName> <rasd:InstanceID>3</rasd:InstanceID> <rasd:ResourceSubType>PIIX4</rasd:ResourceSubType> <rasd:ResourceType>5</rasd:ResourceType> </Item> <Item> <rasd:Address>1</rasd:Address> <rasd:Caption>ideController1</rasd:Caption> <rasd:Description>IDE Controller</rasd:Description> <rasd:ElementName>ideController1</rasd:ElementName> <rasd:InstanceID>4</rasd:InstanceID> <rasd:ResourceSubType>PIIX4</rasd:ResourceSubType> <rasd:ResourceType>5</rasd:ResourceType> </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>5</rasd:InstanceID> <rasd:ResourceSubType>AHCI</rasd:ResourceSubType> <rasd:ResourceType>20</rasd:ResourceType> </Item> <Item> <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation> <rasd:Caption>Ethernet adapter on 'Bridged'</rasd:Caption> <rasd:Connection>Bridged</rasd:Connection> <rasd:ElementName>Ethernet adapter on 'Bridged'</rasd:ElementName> <rasd:InstanceID>6</rasd:InstanceID> <rasd:ResourceSubType>E1000</rasd:ResourceSubType> <rasd:ResourceType>10</rasd:ResourceType> </Item> <Item> <rasd:Address>0</rasd:Address> <rasd:Caption>usb</rasd:Caption> <rasd:Description>USB Controller</rasd:Description> <rasd:ElementName>usb</rasd:ElementName> <rasd:InstanceID>7</rasd:InstanceID> <rasd:ResourceType>23</rasd:ResourceType> </Item> <Item> <rasd:AddressOnParent>3</rasd:AddressOnParent> <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation> <rasd:Caption>sound</rasd:Caption> <rasd:Description>Sound Card</rasd:Description> <rasd:ElementName>sound</rasd:ElementName> <rasd:InstanceID>8</rasd:InstanceID> <rasd:ResourceSubType>ensoniq1371</rasd:ResourceSubType> <rasd:ResourceType>35</rasd:ResourceType> </Item> <Item> <rasd:AddressOnParent>0</rasd:AddressOnParent> <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation> <rasd:Caption>cdrom1</rasd:Caption> <rasd:Description>CD-ROM Drive</rasd:Description> <rasd:ElementName>cdrom1</rasd:ElementName> <rasd:InstanceID>9</rasd:InstanceID> <rasd:Parent>4</rasd:Parent> <rasd:ResourceType>15</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>10</rasd:InstanceID> <rasd:Parent>5</rasd:Parent> <rasd:ResourceType>17</rasd:ResourceType> </Item> </VirtualHardwareSection> <vbox:Machine ovf:required="false" version="1.12-linux" uuid="{4c393e19-4cde-4825-8abc-75c192f360b2}" name="CentOS" OSType="GeronimoLOL" snapshotFolder="Snapshots" lastStateChange="2012-11-08T14:57:10Z"> <ovf:Info>Complete VirtualBox machine configuration in VirtualBox format</ovf:Info> <ExtraData> <ExtraDataItem name="GUI/LastGuestSizeHint" value="720,400"/> <ExtraDataItem name="GUI/LastNormalWindowPosition" value="363,197,720,444"/> <ExtraDataItem name="GUI/MiniToolBarAlignment" value="bottom"/> <ExtraDataItem name="GUI/SaveMountedAtRuntime" value="yes"/> <ExtraDataItem name="GUI/ShowMiniToolBar" value="yes"/> </ExtraData> <Hardware version="2"> <CPU count="1" hotplug="false"> <HardwareVirtEx enabled="true" exclusive="true"/> <HardwareVirtExNestedPaging enabled="true"/> <HardwareVirtExVPID enabled="true"/> <PAE enabled="true"/> <HardwareVirtExLargePages enabled="false"/> <HardwareVirtForce enabled="false"/> </CPU> <Memory RAMSize="512" PageFusion="false"/> <HID Pointing="PS2Mouse" Keyboard="PS2Keyboard"/> <HPET enabled="false"/> <Chipset type="PIIX3"/> <Boot> <Order position="1" device="Floppy"/> <Order position="2" device="DVD"/> <Order position="3" device="HardDisk"/> <Order position="4" device="None"/> </Boot> <Display VRAMSize="32" monitorCount="1" accelerate3D="false" accelerate2DVideo="false"/> <RemoteDisplay enabled="false" authType="Null" authTimeout="5000"> <VRDEProperties> <Property name="TCP/Ports" value="3389"/> </VRDEProperties> </RemoteDisplay> <BIOS> <ACPI enabled="true"/> <IOAPIC enabled="true"/> <Logo fadeIn="true" fadeOut="true" displayTime="0"/> <BootMenu mode="MessageAndMenu"/> <TimeOffset value="0"/> <PXEDebug enabled="false"/> </BIOS> <USBController enabled="true" enabledEhci="true"/> <Network> <Adapter slot="0" enabled="true" MACAddress="080027A463E7" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> <BridgedInterface name="eth0"/> </Adapter> <Adapter slot="1" enabled="false" MACAddress="080027CA0E73" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> <Adapter slot="2" enabled="false" MACAddress="080027BEDB04" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> <Adapter slot="3" enabled="false" MACAddress="0800273DBDA9" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> <Adapter slot="4" enabled="false" MACAddress="0800276A9BED" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> <Adapter slot="5" enabled="false" MACAddress="08002707D3E0" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> <Adapter slot="6" enabled="false" MACAddress="080027769CDE" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> <Adapter slot="7" enabled="false" MACAddress="08002798549A" cable="true" speed="0" type="82540EM"> <DisabledModes> <NAT> <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/> <Alias logging="false" proxy-only="false" use-same-ports="false"/> </NAT> </DisabledModes> </Adapter> </Network> <UART> <Port slot="0" enabled="false" IOBase="0x3f8" IRQ="4" hostMode="Disconnected"/> <Port slot="1" enabled="false" IOBase="0x2f8" IRQ="3" hostMode="Disconnected"/> </UART> <LPT> <Port slot="0" enabled="false" IOBase="0x378" IRQ="4"/> <Port slot="1" enabled="false" IOBase="0x378" IRQ="4"/> </LPT> <AudioAdapter controller="AC97" driver="Pulse" enabled="true"/> <RTC localOrUTC="UTC"/> <SharedFolders/> <Clipboard mode="Disabled"/> <IO> <IoCache enabled="true" size="5"/> <BandwidthGroups/> </IO> <HostPci> <Devices/> </HostPci> <EmulatedUSB> <CardReader enabled="false"/> </EmulatedUSB> <Guest memoryBalloonSize="0"/> <GuestProperties/> </Hardware> <StorageControllers> <StorageController name="Controller IDE" type="PIIX4" PortCount="2" useHostIOCache="true" Bootable="true"> <AttachedDevice passthrough="false" type="DVD" port="1" device="0"/> </StorageController> <StorageController name="Controller SATA" type="AHCI" PortCount="1" useHostIOCache="false" Bootable="true" IDE0MasterEmulationPort="0" IDE0SlaveEmulationPort="1" IDE1MasterEmulationPort="2" IDE1SlaveEmulationPort="3"> <AttachedDevice type="HardDisk" port="0" device="0"> <Image uuid="{656d2cbe-8ed8-4fb2-99fd-c803d50d57d3}"/> </AttachedDevice> </StorageController> </StorageControllers> </vbox:Machine> </VirtualSystem> </Envelope>

Cosa è un manifesto

Il manifest non è altro che un file contenente gli hash dell'OVF e dell'immagine (o delle immagini) dei dischi. Il loro scopo è quello di consentire la verifica dell'integrità dell'OVA. Non è indispensabile alla risoluzione del nostro problema, ma qualora voleste riassemblare il file OVA a partire da OVF e immagini disco, allora è bene capire come funziona.

Un esempio:

SHA1 (Mageia01.ovf)= 5091b321c361f76c39b5d988947258e1741424aa SHA1 (Mageia01-disk1.vmdk)= 7b1e10f19b182a375f21b473abafeee9036e0fbd

La soluzione

doc/vbox_import_export_ova_issue.1354317858.txt.gz · Ultima modifica: 2019/01/27 10:39 (modifica esterna)