Index: /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 91716)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 91717)
@@ -390,4 +390,5 @@
     {
         case UIExtraDataMetaDefs::DialogType_VISOCreator: strResult = "VISOCreator"; break;
+        case UIExtraDataMetaDefs::DialogType_BootFailure: strResult = "BootFailure"; break;
         case UIExtraDataMetaDefs::DialogType_All:         strResult = "All"; break;
         default:
@@ -407,4 +408,5 @@
     QStringList keys;      QList<UIExtraDataMetaDefs::DialogType> values;
     keys << "VISOCreator"; values << UIExtraDataMetaDefs::DialogType_VISOCreator;
+    keys << "BootFailure"; values << UIExtraDataMetaDefs::DialogType_BootFailure;
     keys << "All";         values << UIExtraDataMetaDefs::DialogType_All;
     /* Invalid type for unknown words: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 91716)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 91717)
@@ -495,4 +495,5 @@
         DialogType_Invalid     = 0,
         DialogType_VISOCreator = RT_BIT(0),
+        DialogType_BootFailure = RT_BIT(1),
         DialogType_All         = 0xFFFF
     };
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIBootFailureDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIBootFailureDialog.cpp	(revision 91716)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIBootFailureDialog.cpp	(revision 91717)
@@ -18,4 +18,5 @@
 /* Qt includes: */
 #include <QAction>
+#include <QCheckBox>
 #include <QHeaderView>
 #include <QLabel>
@@ -28,16 +29,15 @@
 #include "QIToolButton.h"
 #include "QIRichTextLabel.h"
-
+#include "UIBootFailureDialog.h"
 #include "UICommon.h"
+#include "UIConverter.h"
 #include "UIDesktopWidgetWatchdog.h"
-
+#include "UIExtraDataManager.h"
 #include "UIFilePathSelector.h"
-#include "UIBootFailureDialog.h"
-
 #include "UIIconPool.h"
+#include "UIMessageCenter.h"
 #include "UIModalWindowManager.h"
-#include "UIMessageCenter.h"
-
-
+
+/* COM includes: */
 #include "CMediumAttachment.h"
 #include "CStorageController.h"
@@ -54,7 +54,19 @@
     , m_pBootImageSelector(0)
     , m_pBootImageLabel(0)
+    , m_pIconLabel(0)
+    , m_pSuppressDialogCheckBox(0)
     , m_comMachine(comMachine)
 {
     configure();
+}
+
+UIBootFailureDialog::~UIBootFailureDialog()
+{
+    if (m_pSuppressDialogCheckBox && m_pSuppressDialogCheckBox->isChecked())
+    {
+        QStringList suppressedMessageList = gEDataManager->suppressedMessages();
+        suppressedMessageList << gpConverter->toInternalString(UIExtraDataMetaDefs::DialogType_BootFailure);
+        gEDataManager->setSuppressedMessages(suppressedMessageList);
+    }
 }
 
@@ -79,4 +91,6 @@
     if (m_pBootImageLabel)
         m_pBootImageLabel->setText(tr("Boot DVD:"));
+    if (m_pSuppressDialogCheckBox)
+        m_pSuppressDialogCheckBox->setText(tr("Do not show this dialog again"));
 }
 
@@ -110,7 +124,18 @@
         return;
 
+    QHBoxLayout *pTopLayout = new QHBoxLayout;
+    pTopLayout->setContentsMargins(0, 0, 0, 0);
+
+    m_pIconLabel = new QLabel;
+    if (m_pIconLabel)
+    {
+        m_pIconLabel->setPixmap(iconPixmap());
+        m_pIconLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Minimum);
+        pTopLayout->addWidget(m_pIconLabel, Qt::AlignTop | Qt::AlignCenter);
+    }
+
     m_pLabel = new QIRichTextLabel;
     if (m_pLabel)
-        m_pMainLayout->addWidget(m_pLabel);
+        pTopLayout->addWidget(m_pLabel);
 
     QHBoxLayout *pSelectorLayout = new QHBoxLayout;
@@ -134,5 +159,12 @@
                 this, &UIBootFailureDialog::sltFileSelectorPathChanged);
     }
+
+    m_pMainLayout->addLayout(pTopLayout);
     m_pMainLayout->addLayout(pSelectorLayout);
+
+    m_pSuppressDialogCheckBox = new QCheckBox;
+    if (m_pSuppressDialogCheckBox)
+        m_pMainLayout->addWidget(m_pSuppressDialogCheckBox);
+
     m_pButtonBox = new QIDialogButtonBox;
     if (m_pButtonBox)
@@ -144,4 +176,5 @@
         m_pMainLayout->addWidget(m_pButtonBox);
     }
+
     m_pMainLayout->addStretch();
     retranslateUi();
@@ -184,5 +217,5 @@
     if (m_pParent)
         UIDesktopWidgetWatchdog::centerWidget(this, m_pParent, false);
-
+    QIWithRetranslateUI<QIMainDialog>::showEvent(pEvent);
 }
 
@@ -247,2 +280,11 @@
     insertBootMedium(uiCommon().openMedium(UIMediumDeviceType_DVD, strPath));
 }
+
+QPixmap UIBootFailureDialog::iconPixmap()
+{
+    QIcon icon = UIIconPool::defaultIcon(UIIconPool::UIDefaultIconType_MessageBoxWarning);
+    if (icon.isNull())
+        return QPixmap();
+    int iSize = QApplication::style()->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, 0);
+    return icon.pixmap(iSize, iSize);
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIBootFailureDialog.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIBootFailureDialog.h	(revision 91716)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIBootFailureDialog.h	(revision 91717)
@@ -30,4 +30,5 @@
 
 /* Forward declarations: */
+class QCheckBox;
 class QLabel;
 class QVBoxLayout;
@@ -58,10 +59,10 @@
 
     UIBootFailureDialog(QWidget *pParent, const CMachine &comMachine);
+    ~UIBootFailureDialog();
     QString bootMediumPath() const;
 
 protected:
 
-    void showEvent(QShowEvent *pEvent);
-
+    virtual void showEvent(QShowEvent *pEvent) /* override */;
 
 private slots:
@@ -74,4 +75,5 @@
 
     bool insertBootMedium(const QUuid &uMediumId);
+    QPixmap iconPixmap();
 
     /** @name Event-handling stuff.
@@ -100,4 +102,6 @@
     UIFilePathSelector   *m_pBootImageSelector;
     QLabel               *m_pBootImageLabel;
+    QLabel               *m_pIconLabel;
+    QCheckBox            *m_pSuppressDialogCheckBox;
     CMachine              m_comMachine;
 };
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 91716)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 91717)
@@ -667,5 +667,10 @@
         return askUserForTheDiskEncryptionPasswords();
     else if (strErrorId == "VMBootFail")
-        return showBootFailureDialog();
+    {
+        if (!gEDataManager->suppressedMessages().contains(gpConverter->toInternalString(UIExtraDataMetaDefs::DialogType_BootFailure)))
+            return showBootFailureDialog();
+        else
+            return;
+    }
 
     /* Show runtime error: */
@@ -3266,5 +3271,4 @@
     int iResult = pBootFailureDialog->exec(false);
 
-
     delete pBootFailureDialog;
 
