Index: /trunk/src/VBox/Main/include/ovfreader.h
===================================================================
--- /trunk/src/VBox/Main/include/ovfreader.h	(revision 35535)
+++ /trunk/src/VBox/Main/include/ovfreader.h	(revision 35536)
@@ -217,4 +217,5 @@
     iprt::MiniString strOtherResourceType;
     iprt::MiniString strResourceSubType;
+    bool fResourceRequired;
 
     iprt::MiniString strHostResource;   // "Abstractly specifies how a device shall connect to a resource on the deployment platform.
Index: /trunk/src/VBox/Main/xml/ovfreader.cpp
===================================================================
--- /trunk/src/VBox/Main/xml/ovfreader.cpp	(revision 35535)
+++ /trunk/src/VBox/Main/xml/ovfreader.cpp	(revision 35536)
@@ -423,4 +423,11 @@
                         pelmItemChild->copyValue(ulType);
                         i.resourceType = (ResourceType_T)ulType;
+                        i.fResourceRequired = true;
+                        const char *pcszAttValue;
+                        if (pelmItem->getAttributeValue("required", pcszAttValue))
+                        {
+                            if (!strcmp(pcszAttValue, "false"))
+                                i.fResourceRequired = false;
+                        }
                     }
                     else if (!strcmp(pcszItemChildName, "OtherResourceType"))
@@ -691,8 +698,14 @@
 
                     default:
-                        throw OVFLogicError(N_("Error reading \"%s\": Unknown resource type %d in hardware item, line %d"),
-                                            m_strPath.c_str(),
-                                            i.resourceType,
-                                            i.ulLineNumber);
+                    {
+                        /* If this unknown resource type isn't required, we simply skip it. */
+                        if (i.fResourceRequired)
+                        {
+                            throw OVFLogicError(N_("Error reading \"%s\": Unknown resource type %d in hardware item, line %d"),
+                                                m_strPath.c_str(),
+                                                i.resourceType,
+                                                i.ulLineNumber);
+                        }
+                    }
                 } // end switch
             }
