Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37037572
en ru br
Репозитории ALT
S:7.0.10-alt2
5.1: 4.0.12-alt0.M51.1
4.1: 2.1.4-alt0.M41.5
4.0:
+backports:1.6.6-alt0.M40.2
www.altlinux.org/Changes

Группа :: Эмуляторы
Пакет: virtualbox

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: virtualbox-6.1.34-alt.patch
Скачать


 Config.kmk                                         | 12 ++++--
 configure                                          |  3 +-
 doc/manual/en_US/user_Introduction.xml             |  4 +-
 include/VBox/ostypes.h                             |  2 +
 include/VBox/vmm/vmm.h                             |  2 +-
 .../Additions/common/VBoxGuest/lib/Makefile.kmk    |  6 ---
 src/VBox/Additions/x11/Installer/98vboxadd-xclient |  4 ++
 src/VBox/Additions/x11/Makefile.kmk                |  4 ++
 src/VBox/Devices/Makefile.kmk                      |  2 +-
 src/VBox/Devices/testcase/Makefile.kmk             |  4 ++
 .../onnv/lib/libdtrace/common/dt_printf.c          |  2 +-
 src/VBox/ExtPacks/VNC/Makefile.kmk                 |  3 +-
 src/VBox/Frontends/VBoxFB/Makefile.kmk             |  1 +
 src/VBox/Frontends/VBoxManage/Makefile.kmk         |  1 +
 src/VBox/Frontends/VBoxSDL/Makefile.kmk            |  1 +
 src/VBox/Frontends/VirtualBox/Makefile.kmk         |  1 +
 src/VBox/Frontends/VirtualBox/VirtualBox2.qrc      |  2 +
 .../src/extradata/UIExtraDataManager.cpp           |  4 +-
 .../VirtualBox/src/globals/UIActionPool.cpp        |  5 +--
 .../VirtualBox/src/globals/UIActionPool.h          |  1 -
 .../VirtualBox/src/globals/UIActionPoolManager.cpp |  6 ---
 .../Frontends/VirtualBox/src/globals/UICommon.cpp  |  4 +-
 .../src/manager/chooser/UIChooserModel.cpp         |  2 -
 .../VirtualBox/src/medium/UIMediumManager.cpp      |  2 +-
 .../VirtualBox/src/medium/UIMediumSelector.cpp     |  2 +-
 .../VirtualBox/src/net/UIUpdateManager.cpp         |  2 +
 .../src/settings/UISettingsDialogSpecific.cpp      |  4 ++
 .../settings/global/UIGlobalSettingsExtension.cpp  |  3 +-
 .../settings/machine/UIMachineSettingsStorage.cpp  |  2 +-
 .../src/widgets/UIEmptyFilePathSelector.cpp        |  6 +--
 .../VirtualBox/src/widgets/UIFilePathSelector.cpp  |  6 +--
 .../VirtualBox/src/widgets/UILineTextEdit.cpp      |  2 +-
 src/VBox/Installer/common/virtualbox.desktop.in    |  1 +
 src/VBox/Installer/linux/VBoxCreateUSBNode.sh      | 14 +++++--
 src/VBox/Main/Makefile.kmk                         |  5 +++
 src/VBox/Main/src-all/Global.cpp                   | 11 +++++
 src/VBox/Main/src-server/ApplianceImpl.cpp         |  2 +
 src/VBox/Main/src-server/VirtualBoxImpl.cpp        |  4 +-
 src/VBox/Runtime/r0drv/linux/the-linux-kernel.h    | 16 ++++++--
 src/VBox/VMM/VMMR0/VMMR0.cpp                       |  2 +-
 src/VBox/VMM/testcase/Makefile.kmk                 | 10 +++--
 src/libs/xpcom18a4/Makefile.kmk                    |  3 ++
 src/libs/xpcom18a4/python/Makefile.kmk             | 47 ++++++++++++++++++++++
 src/libs/xpcom18a4/python/gen_python_deps.py       |  2 +-
 src/libs/xpcom18a4/python/src/PyXPCOM.h            |  3 --
 src/libs/xpcom18a4/python/src/module/_xpcom.cpp    |  6 ++-
 46 files changed, 169 insertions(+), 62 deletions(-)
diff --git a/Config.kmk b/Config.kmk
index 3df197404..644b8a0b1 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -1911,8 +1911,9 @@ ifndef VBOX_BLD_PYTHON
   VBOX_BLD_PYTHON := $(firstword $(rsort $(wildcard $(KBUILD_DEVTOOLS)/win.x86/python/v*/python$(HOSTSUFF_EXE))) \
   				   python-not-found.exe)
  else
-  VBOX_BLD_PYTHON := $(firstword $(which python2.7$(HOSTSUFF_EXE)) $(which python2.6$(HOSTSUFF_EXE)) \
-                                 $(which python$(HOSTSUFF_EXE)) $(which python3$(HOSTSUFF_EXE)) \
+  VBOX_BLD_PYTHON := $(firstword $(which python3.10$(HOSTSUFF_EXE)) \
+  				 $(which python3.9$(HOSTSUFF_EXE)) $(which python3.8$(HOSTSUFF_EXE)) \
+                                 $(which python3.7$(HOSTSUFF_EXE)) $(which python3$(HOSTSUFF_EXE)) \
 				   python-not-found)
  endif
 endif
@@ -4502,11 +4503,14 @@ ifeq ($(VBOX_LDR_FMT),elf)
 TEMPLATE_VBoxR0_TOOL                = $(VBOX_GCC_TOOL)
 TEMPLATE_VBoxR0_CFLAGS              = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_C) \
 	$(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions \
-	$(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK)
+	$(VBOX_GCC_fno-stack-protector) -fno-common -ffreestanding $(VBOX_GCC_fvisibility-hidden) -std=gnu99 $(VBOX_GCC_IPRT_FMT_CHECK)
 TEMPLATE_VBoxR0_CXXFLAGS            = -fno-pie -nostdinc -g $(VBOX_GCC_pipe) $(VBOX_GCC_WERR) $(VBOX_GCC_PEDANTIC_CXX) \
 	$(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) -fno-strict-aliasing -fno-exceptions \
 	$(VBOX_GCC_fno-stack-protector) -fno-common $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) \
-	-fno-rtti $(VBOX_GCC_IPRT_FMT_CHECK)
+	-fno-rtti $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK)
+ if $(VBOX_GCC_VERSION_CC) >= 40500 # 4.1.2 complains, 4.5.2 is okay, didn't check which version inbetween made it okay with g++.
+TEMPLATE_VBoxR0_CXXFLAGS           += -ffreestanding
+ endif
 TEMPLATE_VBoxR0_CFLAGS.amd64        = -m64 -mno-red-zone -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables -ffreestanding
 TEMPLATE_VBoxR0_CXXFLAGS.amd64      = -m64 -mno-red-zone -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fasynchronous-unwind-tables
 TEMPLATE_VBoxR0_CXXFLAGS.freebsd    = -ffreestanding
diff --git a/configure b/configure
index 8b8830f2a..460f9700e 100755
--- a/configure
+++ b/configure
@@ -1641,6 +1641,7 @@ EOF
           done
         else
           # Strip .../QtCore as we add components ourself:
+          INCQT5=`echo "$INCQT5"|$KBUILD_SED 's|\([^ ]*\)/QtGui|\1|g; s| $||g'`
           INCQT5=`echo "$INCQT5"|$KBUILD_SED 's|\([^ ]*\)/QtCore|\1|g; s| $||g'`
           # store only the first path, remove all other paths
           # most likely pkg-config gave us -I/usr/include/qt5 -I/usr/include/qt5/QtCore
@@ -2027,7 +2028,7 @@ extern "C" int main(void)
 }
 EOF
   found=
-  SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.8m python3.9 python3.9m"
+  SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.4m python3.5 python3.5m python3.6 python3.6m python3.7 python3.7m python3.8 python3.8m python3.9 python3.9m python3.10 python3.10m"
   for p in $PYTHONDIR; do
     for d in $SUPPYTHONLIBS; do
       for b in lib/x86_64-linux-gnu lib/i386-linux-gnu lib64 lib/64 lib; do
diff --git a/doc/manual/en_US/user_Introduction.xml b/doc/manual/en_US/user_Introduction.xml
index a75280ebb..a234fe433 100644
--- a/doc/manual/en_US/user_Introduction.xml
+++ b/doc/manual/en_US/user_Introduction.xml
@@ -4405,14 +4405,14 @@
           <xref linkend="specialcharacters"/>.
         </para>
       </listitem>
-
+<!--
       <listitem>
         <para>
           <emphasis role="bold">Update.</emphasis> Enables the user to
           specify various settings for Automatic Updates.
         </para>
       </listitem>
-
+-->
       <listitem>
         <para>
           <emphasis role="bold">Language.</emphasis> Enables the user to
diff --git a/include/VBox/ostypes.h b/include/VBox/ostypes.h
index bb2ed81de..e20af7122 100644
--- a/include/VBox/ostypes.h
+++ b/include/VBox/ostypes.h
@@ -119,6 +119,8 @@ typedef enum VBOXOSTYPE
     VBOXOSTYPE_Xandros_x64      = 0x5D100,
     VBOXOSTYPE_Oracle           = 0x5E000,
     VBOXOSTYPE_Oracle_x64       = 0x5E100,
+    VBOXOSTYPE_ALTLinux         = 0x5F000,
+    VBOXOSTYPE_ALTLinux_x64     = 0x5F100,
     VBOXOSTYPE_FreeBSD          = 0x60000,
     VBOXOSTYPE_FreeBSD_x64      = 0x60100,
     VBOXOSTYPE_OpenBSD          = 0x61000,
diff --git a/include/VBox/vmm/vmm.h b/include/VBox/vmm/vmm.h
index 7273fe369..25d4f3730 100644
--- a/include/VBox/vmm/vmm.h
+++ b/include/VBox/vmm/vmm.h
@@ -383,7 +383,7 @@ typedef enum VMMR0OPERATION
     /** Call IntNetR0IfAbortWait(). */
     VMMR0_DO_INTNET_IF_ABORT_WAIT,
 
-#if 0
+#if VBOX_WITH_PCI_PASSTHROUGH
     /** Forward call to the PCI driver */
     VMMR0_DO_PCIRAW_REQ = 512,
 #endif
diff --git a/src/VBox/Additions/common/VBoxGuest/lib/Makefile.kmk b/src/VBox/Additions/common/VBoxGuest/lib/Makefile.kmk
index cdfc9b67d..6f5039213 100644
--- a/src/VBox/Additions/common/VBoxGuest/lib/Makefile.kmk
+++ b/src/VBox/Additions/common/VBoxGuest/lib/Makefile.kmk
@@ -39,12 +39,6 @@ LIBRARIES += \
 	VBoxGuestR3Lib \
 	VBoxGuestR3LibShared
 ifndef VBOX_ONLY_VALIDATIONKIT
- if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd)
- ifndef VBOX_USE_SYSTEM_XORG_HEADERS
-  LIBRARIES += \
-  	VBoxGuestR3LibXFree86
- endif
- endif
  if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
   LIBRARIES += \
   	VBoxGuestR3LibXOrg
diff --git a/src/VBox/Additions/x11/Installer/98vboxadd-xclient b/src/VBox/Additions/x11/Installer/98vboxadd-xclient
index 1497c9397..34b1a6e3b 100755
--- a/src/VBox/Additions/x11/Installer/98vboxadd-xclient
+++ b/src/VBox/Additions/x11/Installer/98vboxadd-xclient
@@ -15,6 +15,9 @@
 # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 #
 
+# Do not start if it's not a VirtualBox VM.
+if test -f /proc/bus/pci/devices && grep -q -e 80eebeef -e 80eecafe /proc/bus/pci/devices; then
+
 # Sanity check: if non-writeable PID-files are present in the user home
 # directory VBoxClient will fail to start.
 for i in $HOME/.vboxclient-*.pid; do
@@ -36,3 +39,4 @@ elif test -z "${SSH_CONNECTION}"; then
   /usr/bin/VBoxClient --draganddrop
   /usr/bin/VBoxClient --vmsvga  # In case VMSVGA emulation is enabled
 fi
+fi
diff --git a/src/VBox/Additions/x11/Makefile.kmk b/src/VBox/Additions/x11/Makefile.kmk
index 7da71c5a7..d1541967e 100644
--- a/src/VBox/Additions/x11/Makefile.kmk
+++ b/src/VBox/Additions/x11/Makefile.kmk
@@ -18,6 +18,10 @@
 SUB_DEPTH = ../../../..
 include $(KBUILD_PATH)/subheader.kmk
 
+ifn1of ($(XSERVER_VERSION), 13 14 15 16 17 18 19 110 111 112)
+ XSERVER_VERSION := 112
+endif
+
 # Include sub-makefiles.
 if1of ($(KBUILD_TARGET), freebsd linux netbsd openbsd solaris)
  include $(PATH_SUB_CURRENT)/VBoxClient/Makefile.kmk
diff --git a/src/VBox/Devices/Makefile.kmk b/src/VBox/Devices/Makefile.kmk
index bd64e790d..e4f036318 100644
--- a/src/VBox/Devices/Makefile.kmk
+++ b/src/VBox/Devices/Makefile.kmk
@@ -1275,7 +1275,7 @@ endif
 	$(if $(VBOX_WITH_NAT_SERVICE),VBOX_WITH_NAT_SERVICE,)
  ServicesR0_SOURCES   = \
  	Network/SrvIntNetR0.cpp \
-#        $(if $(VBOX_WITH_PCI_PASSTHROUGH),Bus/SrvPciRawR0.cpp,)
+        $(if $(VBOX_WITH_PCI_PASSTHROUGH),Bus/SrvPciRawR0.cpp,)
  Network/SrvIntNetR0.cpp_CXXFLAGS := $(if-expr $(KBUILD_TARGET) == "win",,$(VBOX_GCC_Wno-array_bounds))
 
 
diff --git a/src/VBox/Devices/testcase/Makefile.kmk b/src/VBox/Devices/testcase/Makefile.kmk
index 317a0b39a..a1b116ead 100644
--- a/src/VBox/Devices/testcase/Makefile.kmk
+++ b/src/VBox/Devices/testcase/Makefile.kmk
@@ -69,9 +69,11 @@ ifdef VBOX_WITH_RAW_MODE
  #
  # The testcase generator.
  #
+ifndef VBOX_WITHOUT_BIARCH
  PROGRAMS += tstDeviceStructSizeRC
  tstDeviceStructSizeRC_TEMPLATE  = VBoxRcExe
  tstDeviceStructSizeRC_DEFS      = $(VBOX_DEVICES_TESTS_FEATURES)
+endif
  tstDeviceStructSizeRC_SOURCES   = tstDeviceStructSizeRC.cpp
  tstDeviceStructSizeRC_INCS      = \
  	$(VBOX_PATH_DEVICES_SRC)/build \
@@ -84,7 +86,9 @@ endif # VBOX_WITH_RAW_MODE
 #
 # The testcase it self.
 #
+ifndef VBOX_WITHOUT_BIARCH
 PROGRAMS += tstDeviceStructSize
+endif
 tstDeviceStructSize_TEMPLATE = VBOXR3AUTOTST
 tstDeviceStructSize_DEFS     = $(VBOX_DEVICES_TESTS_FEATURES)
 tstDeviceStructSize_INCS     = \
diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_printf.c b/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_printf.c
index 9813291f9..3a4616061 100644
--- a/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_printf.c
+++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/lib/libdtrace/common/dt_printf.c
@@ -1605,7 +1605,7 @@ dt_printf_format(dtrace_hdl_t *dtp, FILE *fp, const dt_pfargv_t *pfv,
 			width = 0;
 
 		if (width != 0)
-			f += snprintf(f, sizeof (format) - (f - format), "%d", ABS(width));
+                	f += snprintf(f,(((sizeof (format)-(f-format))>0) ? sizeof(format) - (f-format):0), "%d", ABS(width));
 
 		if (prec > 0)
 			f += snprintf(f, sizeof (format) - (f - format), ".%d", prec);
diff --git a/src/VBox/ExtPacks/VNC/Makefile.kmk b/src/VBox/ExtPacks/VNC/Makefile.kmk
index b616c9266..f8fbdadd5 100644
--- a/src/VBox/ExtPacks/VNC/Makefile.kmk
+++ b/src/VBox/ExtPacks/VNC/Makefile.kmk
@@ -51,13 +51,14 @@ DLLS += VBoxVNCMain
 VBoxVNCMain_TEMPLATE = VBoxR3ExtPackVNC
 VBoxVNCMain_SOURCES = VBoxVNCMain.cpp
 VBoxVNCMain_DEFS =
-
+VBoxVNCMain_LDFLAGS     = -Wl,-rpath,$(VBOXDIR)
 #
 # VBoxVNC - The VNC VRDE module.
 #
 DLLS += VBoxVNC
 VBoxVNC_TEMPLATE = VBoxR3ExtPackVNC
 VBoxVNC_SOURCES = VBoxVNC.cpp
+VBoxVNC_LDFLAGS     = -Wl,-rpath,$(VBOXDIR)
 # NOTE: vncserver is covered by GPL, so the extpack must be GPL, too.
 VBoxVNC_LIBS = vncserver
 VBoxVNC_DEFS =
diff --git a/src/VBox/Frontends/VBoxFB/Makefile.kmk b/src/VBox/Frontends/VBoxFB/Makefile.kmk
index 76d80ebab..469cbbe0c 100644
--- a/src/VBox/Frontends/VBoxFB/Makefile.kmk
+++ b/src/VBox/Frontends/VBoxFB/Makefile.kmk
@@ -36,6 +36,7 @@ VBoxFB_INCS     = $(VBOX_XPCOM_INCS) /usr/include/directfb
 VBoxFB_LIBPATH  = $(LIBPATH_XPCOM)
 VBoxFB_LIBS     = $(LIB_XPCOM) $(LIB_RUNTIME) directfb
 VBoxFB_DEPS     = $(VBOX_PATH_SDK)/bindings/xpcom/include/VirtualBox_XPCOM.h
+VBoxFB_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR)
 
 # generate rules.
 include $(FILE_KBUILD_SUB_FOOTER)
diff --git a/src/VBox/Frontends/VBoxManage/Makefile.kmk b/src/VBox/Frontends/VBoxManage/Makefile.kmk
index c1f7c1272..4cdf35ff6 100644
--- a/src/VBox/Frontends/VBoxManage/Makefile.kmk
+++ b/src/VBox/Frontends/VBoxManage/Makefile.kmk
@@ -120,6 +120,7 @@ ifneq ($(KBUILD_TARGET),win)
 	$(if $(VBOX_GCC_VERSION_CXX),$(if-expr $(VBOX_GCC_VERSION_CXX) < 40300 || $(VBOX_GCC_VERSION_CXX) > 40301,,--param max-fields-for-field-sensitive=0),)
  VBoxManageHelp_CXXFLAGS.release = $(VBoxManage_CXXFLAGS.release)
 endif
+VBoxManage_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR)
 
 
 #
diff --git a/src/VBox/Frontends/VBoxSDL/Makefile.kmk b/src/VBox/Frontends/VBoxSDL/Makefile.kmk
index 8987acdfd..146d5321e 100644
--- a/src/VBox/Frontends/VBoxSDL/Makefile.kmk
+++ b/src/VBox/Frontends/VBoxSDL/Makefile.kmk
@@ -96,6 +96,7 @@ endif
 
 VBoxSDL_LDFLAGS.darwin = \
 	-framework Foundation -framework AppKit
+VBoxSDL_LDFLAGS.linux  = -Wl,-rpath,$(VBOXDIR)
 
 VBoxSDL_CLEAN = $(VBoxSDL_0_OUTDIR)/Ico64x01.h
 VBoxSDL_INTERMEDIATES = $(VBoxSDL_0_OUTDIR)/Ico64x01.h
diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk
index e89e632cd..0b5a08040 100644
--- a/src/VBox/Frontends/VirtualBox/Makefile.kmk
+++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk
@@ -1558,6 +1558,7 @@ endif
 
 
 # Pull in the ui files
+VirtualBox_LDFLAGS.linux  = -Wl,-rpath,$(VBOXDIR)
 $(eval VirtualBox_SOURCES += $(FORMS))
 $(eval VirtualBoxVM_SOURCES += $(FORMS))
 $(eval UICommon_SOURCES += $(FORMS))
diff --git a/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc b/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
index ba2d3944c..5135b90f9 100644
--- a/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
+++ b/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
@@ -41,6 +41,8 @@
         <file alias="nw_warning_16px.png">images/nw_warning_16px.png</file>
         <file alias="nw_write_16px.png">images/nw_write_16px.png</file>
         <file alias="ok_16px.png">images/ok_16px.png</file>
+        <file alias="os_altlinux.png">images/os_altlinux.png</file>
+        <file alias="os_altlinux_64.png">images/os_altlinux_64.png</file>
         <file alias="os_archlinux.png">images/os_archlinux.png</file>
         <file alias="os_archlinux_64.png">images/os_archlinux_64.png</file>
         <file alias="os_cloud.png">images/os_cloud.png</file>
diff --git a/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp b/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
index 4ad5d865c..a8fb5bb9e 100644
--- a/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
@@ -1176,7 +1176,7 @@ void UIExtraDataManagerWindow::sltSave()
     /* Compose initial file-name: */
     const QString strInitialFileName = QDir(uiCommon().homeFolder()).absoluteFilePath(QString("%1_ExtraData.xml").arg(currentChooserName()));
     /* Open file-save dialog to choose file to save extra-data into: */
-    const QString strFileName = QIFileDialog::getSaveFileName(strInitialFileName, "XML files (*.xml)", this,
+    const QString strFileName = QIFileDialog::getSaveFileName(strInitialFileName, "XML files (*.xml)", QApplication::activeWindow(),
                                                               "Choose file to save extra-data into..", 0, true, true);
     /* Make sure file-name was chosen: */
     if (strFileName.isEmpty())
@@ -1263,7 +1263,7 @@ void UIExtraDataManagerWindow::sltLoad()
     /* Compose initial file-name: */
     const QString strInitialFileName = QDir(uiCommon().homeFolder()).absoluteFilePath(QString("%1_ExtraData.xml").arg(currentChooserName()));
     /* Open file-open dialog to choose file to open extra-data into: */
-    const QString strFileName = QIFileDialog::getOpenFileName(strInitialFileName, "XML files (*.xml)", this,
+    const QString strFileName = QIFileDialog::getOpenFileName(strInitialFileName, "XML files (*.xml)", QApplication::activeWindow(),
                                                               "Choose file to load extra-data from..");
     /* Make sure file-name was chosen: */
     if (strFileName.isEmpty())
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
index 7cdc07e01..18c502cf3 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
@@ -2434,7 +2434,6 @@ void UIActionPool::preparePool()
     m_pool[UIActionIndex_M_Application_S_Preferences] = new UIActionSimplePreferences(this);
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
     m_pool[UIActionIndex_M_Application_S_NetworkAccessManager] = new UIActionSimpleNetworkAccessManager(this);
-    m_pool[UIActionIndex_M_Application_S_CheckForUpdates] = new UIActionSimpleCheckForUpdates(this);
 #endif
     m_pool[UIActionIndex_M_Application_S_ResetWarnings] = new UIActionSimpleResetWarnings(this);
     m_pool[UIActionIndex_M_Application_S_Close] = new UIActionSimplePerformClose(this);
@@ -2532,8 +2531,6 @@ void UIActionPool::prepareConnections()
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
     connect(action(UIActionIndex_M_Application_S_NetworkAccessManager), &UIAction::triggered,
             gNetworkManager, &UINetworkManager::show, Qt::UniqueConnection);
-    connect(action(UIActionIndex_M_Application_S_CheckForUpdates), &UIAction::triggered,
-            gUpdateManager, &UIUpdateManager::sltForceCheck, Qt::UniqueConnection);
 #endif
     connect(action(UIActionIndex_M_Application_S_ResetWarnings), &UIAction::triggered,
             &msgCenter(), &UIMessageCenter::sltResetSuppressedMessages, Qt::UniqueConnection);
@@ -2614,7 +2611,7 @@ void UIActionPool::updateConfiguration()
     if (!fUpdateAllowed)
     {
         m_restrictedActionsMenuApplication[UIActionRestrictionLevel_Base] = (UIExtraDataMetaDefs::MenuApplicationActionType)
-            (m_restrictedActionsMenuApplication[UIActionRestrictionLevel_Base] | UIExtraDataMetaDefs::MenuApplicationActionType_CheckForUpdates);
+            (m_restrictedActionsMenuApplication[UIActionRestrictionLevel_Base]);
     }
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
 
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
index 10987ed00..869442557 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
@@ -68,7 +68,6 @@ enum UIActionIndex
     UIActionIndex_M_Application_S_Preferences,
 #ifdef VBOX_GUI_WITH_NETWORK_MANAGER
     UIActionIndex_M_Application_S_NetworkAccessManager,
-    UIActionIndex_M_Application_S_CheckForUpdates,
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
     UIActionIndex_M_Application_S_ResetWarnings,
     UIActionIndex_M_Application_S_Close,
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
index 0301bbebd..c79e2de18 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolManager.cpp
@@ -3040,9 +3040,6 @@ void UIActionPoolManager::updateMenuFile()
     /* 'About' action goes to Application menu: */
     pMenu->addAction(action(UIActionIndex_M_Application_S_About));
 # ifdef VBOX_GUI_WITH_NETWORK_MANAGER
-    /* 'Check for Updates' action goes to Application menu: */
-    if (gEDataManager->applicationUpdateEnabled())
-        pMenu->addAction(action(UIActionIndex_M_Application_S_CheckForUpdates));
     /* 'Network Access Manager' action goes to Application menu: */
     pMenu->addAction(action(UIActionIndex_M_Application_S_NetworkAccessManager));
 # endif
@@ -3099,9 +3096,6 @@ void UIActionPoolManager::updateMenuFile()
 # ifdef VBOX_GUI_WITH_NETWORK_MANAGER
     /* 'Network Access Manager' action goes to 'File' menu: */
     pMenu->addAction(action(UIActionIndex_M_Application_S_NetworkAccessManager));
-    /* 'Check for Updates' action goes to 'File' menu: */
-    if (gEDataManager->applicationUpdateEnabled())
-        pMenu->addAction(action(UIActionIndex_M_Application_S_CheckForUpdates));
 # endif
     /* Separator after tool actions of the 'File' menu: */
     pMenu->addSeparator();
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp
index 8c038f3c2..9e9371939 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UICommon.cpp
@@ -2738,7 +2738,7 @@ QUuid UICommon::openMediumWithFileOpenDialog(UIMediumDeviceType enmMediumType, Q
     strFilter = backends.join(";;").trimmed();
 
     /* Create open file dialog: */
-    QStringList files = QIFileDialog::getOpenFileNames(strHomeFolder, strFilter, pParent, strTitle, 0, true, true);
+    QStringList files = QIFileDialog::getOpenFileNames(strHomeFolder, strFilter, nullptr, strTitle, 0, true, true);
 
     /* If dialog has some result: */
     if (!files.empty() && !files[0].isEmpty())
@@ -3197,7 +3197,7 @@ void UICommon::updateMachineStorage(const CMachine &comConstMachine, const UIMed
                 }
                 else if (target.type == UIMediumTarget::UIMediumTargetType_WithFileDialog)
                 {
-                    uMediumID = openMediumWithFileOpenDialog(target.mediumType, windowManager().mainWindowShown(),
+                    uMediumID = openMediumWithFileOpenDialog(target.mediumType, QApplication::activeWindow(),
                                                              strMachineFolder, false /* fUseLastFolder */);
                 }
                 else if(target.type == UIMediumTarget::UIMediumTargetType_CreateAdHocVISO)
diff --git a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
index f2f275ecb..b83495593 100644
--- a/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/manager/chooser/UIChooserModel.cpp
@@ -1209,8 +1209,6 @@ void UIChooserModel::prepareContextMenu()
             m_pContextMenuGlobal->addAction(actionPool()->action(UIActionIndexST_M_File_S_ShowCloudProfileManager));
 # ifdef VBOX_GUI_WITH_NETWORK_MANAGER
         m_pContextMenuGlobal->addAction(actionPool()->action(UIActionIndex_M_Application_S_NetworkAccessManager));
-        if (gEDataManager->applicationUpdateEnabled())
-            m_pContextMenuGlobal->addAction(actionPool()->action(UIActionIndex_M_Application_S_CheckForUpdates));
 # endif
 #endif /* !VBOX_WS_MAC */
     }
diff --git a/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp b/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
index 3f6467d86..51d41530a 100644
--- a/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
@@ -486,7 +486,7 @@ void UIMediumManagerWidget::sltHandleMachineStateChange(const QUuid &uId, const
 void UIMediumManagerWidget::sltAddMedium()
 {
     QString strDefaultMachineFolder = uiCommon().virtualBox().GetSystemProperties().GetDefaultMachineFolder();
-    uiCommon().openMediumWithFileOpenDialog(currentMediumType(), this,
+    uiCommon().openMediumWithFileOpenDialog(currentMediumType(), QApplication::activeWindow(),
                                               strDefaultMachineFolder, true /* use most recent medium folder */);
 }
 
diff --git a/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp b/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp
index c11574c31..650693a38 100644
--- a/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/medium/UIMediumSelector.cpp
@@ -441,7 +441,7 @@ void UIMediumSelector::sltButtonLeaveEmpty()
 
 void UIMediumSelector::sltAddMedium()
 {
-    QUuid uMediumID = uiCommon().openMediumWithFileOpenDialog(m_enmMediumType, this, m_strMachineFolder);
+    QUuid uMediumID = uiCommon().openMediumWithFileOpenDialog(m_enmMediumType, QApplication::activeWindow(), m_strMachineFolder);
     if (uMediumID.isNull())
         return;
     repopulateTreeWidget();
diff --git a/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp b/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
index ef0075a4b..4478361fd 100644
--- a/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
@@ -564,6 +564,8 @@ void UIUpdateManager::shutdown()
 
 void UIUpdateManager::sltForceCheck()
 {
+    return;
+
     /* Force call for new version check: */
     sltCheckIfUpdateIsNecessary(true /* force call */);
 }
diff --git a/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp b/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
index 9d5e34d5c..05c5ff5b2 100644
--- a/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
@@ -313,6 +313,10 @@ bool UISettingsDialogGlobal::isPageAvailable(int iPageId) const
 #endif
             break;
         }
+        case GlobalSettingsPageType_Update:
+        {
+            return false;
+        }
         default:
             break;
     }
diff --git a/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp b/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp
index cdcf7bfd0..7dad500e9 100644
--- a/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsExtension.cpp
@@ -16,6 +16,7 @@
  */
 
 /* Qt includes: */
+#include <QApplication>
 #include <QHeaderView>
 #include <QMenu>
 #ifdef VBOX_WS_WIN
@@ -295,7 +296,7 @@ void UIGlobalSettingsExtension::sltAddPackage()
         extensions << QString("*.%1").arg(VBoxExtPackFileExts[i]);
     const QString strFilter = tr("Extension package files (%1)").arg(extensions.join(" "));
 
-    const QStringList fileNames = QIFileDialog::getOpenFileNames(strBaseFolder, strFilter, this, strTitle, 0, true, true);
+    const QStringList fileNames = QIFileDialog::getOpenFileNames(strBaseFolder, strFilter, QApplication::activeWindow(), strTitle, 0, true, true);
 
     QString strFilePath;
     if (!fileNames.isEmpty())
diff --git a/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp b/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
index 5d3b06268..1c039d79d 100644
--- a/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
@@ -3958,7 +3958,7 @@ void UIMachineSettingsStorage::sltChooseDiskFile()
 {
     const QString strMachineFolder(QFileInfo(m_strMachineSettingsFilePath).absolutePath());
 
-    QUuid uMediumId = uiCommon().openMediumWithFileOpenDialog(m_pMediumIdHolder->type(), this, strMachineFolder);
+    QUuid uMediumId = uiCommon().openMediumWithFileOpenDialog(m_pMediumIdHolder->type(), QApplication::activeWindow(), strMachineFolder);
     if (uMediumId.isNull())
         return;
     m_pMediumIdHolder->setId(uMediumId);
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp
index 97d383b15..cfa76d1a0 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIEmptyFilePathSelector.cpp
@@ -232,16 +232,16 @@ void UIEmptyFilePathSelector::choose()
     switch (mMode)
     {
         case UIEmptyFilePathSelector::Mode_File_Open:
-            path = QIFileDialog::getOpenFileName (initDir, mFileFilters, parentWidget(), mFileDialogTitle); break;
+            path = QIFileDialog::getOpenFileName (initDir, mFileFilters, QApplication::activeWindow(), mFileDialogTitle); break;
         case UIEmptyFilePathSelector::Mode_File_Save:
         {
-            path = QIFileDialog::getSaveFileName (initDir, mFileFilters, parentWidget(), mFileDialogTitle);
+            path = QIFileDialog::getSaveFileName (initDir, mFileFilters, QApplication::activeWindow(), mFileDialogTitle);
             if (!path.isEmpty() && QFileInfo (path).suffix().isEmpty())
                 path = QString ("%1.%2").arg (path).arg (mDefaultSaveExt);
             break;
         }
         case UIEmptyFilePathSelector::Mode_Folder:
-            path = QIFileDialog::getExistingDirectory (initDir, parentWidget(), mFileDialogTitle); break;
+            path = QIFileDialog::getExistingDirectory (initDir, QApplication::activeWindow(), mFileDialogTitle); break;
     }
     if (path.isEmpty())
         return;
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp
index fa4ec9c63..3bdf74728 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIFilePathSelector.cpp
@@ -397,10 +397,10 @@ void UIFilePathSelector::selectPath()
     switch (m_enmMode)
     {
         case Mode_File_Open:
-            strSelPath = QIFileDialog::getOpenFileName(strInitDir, m_strFileDialogFilters, parentWidget(), m_strFileDialogTitle); break;
+            strSelPath = QIFileDialog::getOpenFileName(strInitDir, m_strFileDialogFilters, QApplication::activeWindow(), m_strFileDialogTitle); break;
         case Mode_File_Save:
         {
-            strSelPath = QIFileDialog::getSaveFileName(strInitDir, m_strFileDialogFilters, parentWidget(), m_strFileDialogTitle);
+            strSelPath = QIFileDialog::getSaveFileName(strInitDir, m_strFileDialogFilters, QApplication::activeWindow(), m_strFileDialogTitle);
             if (!strSelPath.isEmpty() && QFileInfo(strSelPath).suffix().isEmpty())
             {
                 if (m_strFileDialogDefaultSaveExtension.isEmpty())
@@ -411,7 +411,7 @@ void UIFilePathSelector::selectPath()
             break;
         }
         case Mode_Folder:
-            strSelPath = QIFileDialog::getExistingDirectory(strInitDir, parentWidget(), m_strFileDialogTitle); break;
+            strSelPath = QIFileDialog::getExistingDirectory(strInitDir, QApplication::activeWindow(), m_strFileDialogTitle); break;
     }
 
     /* Do nothing if nothing chosen: */
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp
index fad019e6e..9f2ae0202 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UILineTextEdit.cpp
@@ -78,7 +78,7 @@ void UITextEditor::retranslateUi()
 
 void UITextEditor::open()
 {
-    QString fileName = QIFileDialog::getOpenFileName(uiCommon().documentsPath(), tr("Text (*.txt);;All (*.*)"), this, tr("Select a file to open..."));
+    QString fileName = QIFileDialog::getOpenFileName(uiCommon().documentsPath(), tr("Text (*.txt);;All (*.*)"), QApplication::activeWindow(), tr("Select a file to open..."));
     if (!fileName.isEmpty())
     {
         QFile file(fileName);
diff --git a/src/VBox/Installer/common/virtualbox.desktop.in b/src/VBox/Installer/common/virtualbox.desktop.in
index 3fca2b616..bb514171f 100644
--- a/src/VBox/Installer/common/virtualbox.desktop.in
+++ b/src/VBox/Installer/common/virtualbox.desktop.in
@@ -2,6 +2,7 @@
 Encoding=UTF-8
 Version=1.0
 Name=@VBOX_PRODUCT@
+Name[ru]=п▓п╦я─я┌я┐п╟п╩п╦п╥п╟я┌п╬я─ VirtualBox
 GenericName=Virtual Machine
 GenericName[de]=Virtuelle Maschine
 GenericName[ru]=п▓п╦я─я┌я┐п╟п╩я▄п╫п╟я▐ п╪п╟я┬п╦п╫п╟
diff --git a/src/VBox/Installer/linux/VBoxCreateUSBNode.sh b/src/VBox/Installer/linux/VBoxCreateUSBNode.sh
index 921a862cc..fee052ea7 100755
--- a/src/VBox/Installer/linux/VBoxCreateUSBNode.sh
+++ b/src/VBox/Installer/linux/VBoxCreateUSBNode.sh
@@ -21,13 +21,16 @@
 usb_class_hub=09
 
 do_remove=0
+do_create=0
 case "$1" in "--remove")
   do_remove=1; shift;;
+  "--create")
+  do_create=1; shift;;
 esac
-bus=`expr "$2" '/' 128 + 1`
-device=`expr "$2" '%' 128 + 1`
-class="$3"
-group="$4"
+bus=`expr "${2-0}" '/' 128 + 1`
+device=`expr "${2-0}" '%' 128 + 1`
+class="${3-0}"
+group="${4-}"
 devdir="`printf "/dev/vboxusb/%.3d" $bus`"
 devpath="`printf "/dev/vboxusb/%.3d/%.3d" $bus $device`"
 case "$do_remove" in
@@ -39,6 +42,9 @@ case "$do_remove" in
   case "$group" in "") group="vboxusers";; esac
   mkdir /dev/vboxusb -m 0750 2>/dev/null
   chown root:$group /dev/vboxusb 2>/dev/null
+  if test "$do_create" = "1"; then
+      exit 0
+  fi
   mkdir "$devdir" -m 0750 2>/dev/null
   chown root:$group "$devdir" 2>/dev/null
   mknod "$devpath" c $1 $2 -m 0660 2>/dev/null
diff --git a/src/VBox/Main/Makefile.kmk b/src/VBox/Main/Makefile.kmk
index cf22f279a..cb915bbbd 100644
--- a/src/VBox/Main/Makefile.kmk
+++ b/src/VBox/Main/Makefile.kmk
@@ -509,6 +509,7 @@ endif
 VBoxSVC_LIBS += \
 	$(PATH_STAGE_LIB)/VBoxAPIWrap$(VBOX_SUFF_LIB) \
 	$(PATH_STAGE_LIB)/SSMStandalone$(VBOX_SUFF_LIB) \
+	$(LIB_RUNTIME) \
 	$(LIB_DDU)
 
 VBoxSVC_SDKS = VBOX_LIBPNG VBOX_ZLIB
@@ -681,6 +682,7 @@ ifdef VBOX_WITH_NETFLT
 	$(PATH_SDK_$(VBOX_WINPSDK)_LIB)/WbemUuid.Lib
 endif
 VBoxSVC_LDFLAGS.darwin    = -framework IOKit -framework SystemConfiguration
+VBoxSVC_LDFLAGS.linux     = -Wl,-rpath,$(VBOXDIR)
 
 ifdef VBOX_WITH_3D_ACCELERATION
  VBoxSVC_LIBS += $(PATH_STAGE_LIB)/VBoxOGLTest$(VBOX_SUFF_LIB)
@@ -834,6 +836,7 @@ VBoxSVCM_SOURCES        = \
 VBoxSVCM_LDFLAGS.darwin = \
 	-install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxSVCM.dylib \
 	-exported_symbols_list $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
+VBoxSVCM_LDFLAGS.linux  = -Wl,-rpath,$(VBOXDIR)
  ifeq ($(KBUILD_TARGET),darwin)
 VBoxSVCM_ORDERDEPS     += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
 VBoxSVCM_CLEAN         += $(VBoxSVCM_0_OUTDIR)/VBoxSVCM.def
@@ -1061,6 +1064,8 @@ ifdef VBOX_WITH_USB
  VBoxC_SOURCES += \
 	src-client/RemoteUSBBackend.cpp
 endif
+
+VBoxC_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR)
 ifndef VBOX_WITH_VRDEAUTH_IN_VBOXSVC
  VBoxC_SOURCES += \
 	src-all/AuthLibrary.cpp
diff --git a/src/VBox/Main/src-all/Global.cpp b/src/VBox/Main/src-all/Global.cpp
index 2e189a402..ba058b020 100644
--- a/src/VBox/Main/src-all/Global.cpp
+++ b/src/VBox/Main/src-all/Global.cpp
@@ -213,6 +213,17 @@ const Global::OSType Global::sOSTypes[] =
       1, 1024,  16,  8 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
       StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97, AudioCodecType_AD1980  },
 
+    { "Linux",   "Linux",             "ALTLinux",           "ALT Linux (32 bit)",
+      VBOXOSTYPE_ALTLinux,        VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET | VBOXOSHINT_X2APIC,
+      1, 1024,  16,  8 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+        StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97,AudioCodecType_AD1980  },
+
+    { "Linux",   "Linux",             "ALTLinux_64",        "ALT Linux (64 bit)",
+      VBOXOSTYPE_ALTLinux_x64,    VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC
+                                | VBOXOSHINT_USBTABLET | VBOXOSHINT_X2APIC,
+      1, 1024,  16,  8 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+         StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97,AudioCodecType_AD1980  },
+
     { "Linux",   "Linux",             "ArchLinux",          "Arch Linux (32-bit)",
       VBOXOSTYPE_ArchLinux,       VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET | VBOXOSHINT_X2APIC,
       1, 1024,  16,  8 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
diff --git a/src/VBox/Main/src-server/ApplianceImpl.cpp b/src/VBox/Main/src-server/ApplianceImpl.cpp
index f2bc64504..e3403db61 100644
--- a/src/VBox/Main/src-server/ApplianceImpl.cpp
+++ b/src/VBox/Main/src-server/ApplianceImpl.cpp
@@ -154,6 +154,8 @@ static struct
     { ovf::CIMOSType_CIMOS_Linux_64,                             VBOXOSTYPE_Linux26_x64 },
 
     // types that we have support for but CIM doesn't
+    { ovf::CIMOSType_CIMOS_Linux_2_6_x,                          VBOXOSTYPE_ALTLinux },
+    { ovf::CIMOSType_CIMOS_Linux_2_6_x_64,                       VBOXOSTYPE_ALTLinux_x64 },
     { ovf::CIMOSType_CIMOS_Linux_2_6_x,                          VBOXOSTYPE_ArchLinux },
     { ovf::CIMOSType_CIMOS_Linux_2_6_x_64,                       VBOXOSTYPE_ArchLinux_x64 },
     { ovf::CIMOSType_CIMOS_Linux_2_6_x,                          VBOXOSTYPE_FedoraCore },
diff --git a/src/VBox/Main/src-server/VirtualBoxImpl.cpp b/src/VBox/Main/src-server/VirtualBoxImpl.cpp
index ddc1c128d..0c3106b83 100644
--- a/src/VBox/Main/src-server/VirtualBoxImpl.cpp
+++ b/src/VBox/Main/src-server/VirtualBoxImpl.cpp
@@ -1985,7 +1985,9 @@ HRESULT VirtualBox::createMachine(const com::Utf8Str &aSettingsFile,
     ComObjPtr<GuestOSType> osType;
     if (!aOsTypeId.isEmpty())
         i_findGuestOSType(aOsTypeId, osType);
-
+    
+    if((strncmp(aOsTypeId.c_str(),"ALTLinux",strlen("ALTLinux"))) == 0)
+      return setError(E_INVALIDARG, "Please use  \"Other Linux\" type for a new ALT Linux virtual machine.\n For details see http://altlinux.org/VirtualBox");
     /* initialize the machine object */
     rc = machine->init(this,
                        strSettingsFile,
diff --git a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
index 8db0a170e..8e3abafeb 100644
--- a/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+++ b/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
@@ -383,11 +383,21 @@ DECLINLINE(unsigned long) msecs_to_jiffies(unsigned int cMillies)
 #endif
 
 /*
- * There are post-2.6.24 kernels (confusingly with unchanged version number)
- * which eliminate macros which were marked as deprecated.
+ * The 2.6.25 kernel eliminates macros that were marked as deprecated and eliminates
+ * routine change_page_attr() in favor of the set_pages_* API.
  */
-#ifndef __attribute_used__
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
 #define __attribute_used__ __used
+
+static inline int my_change_page_attr(struct page *page, int numpages, pgprot_t prot)
+{
+	/* use the set_pages_* API */
+	if (pgprot_val(prot) & _PAGE_NX)
+		set_pages_nx(page, numpages);
+	set_pages_uc(page, numpages);
+	return 0;
+}
+#define change_page_attr(a,b,c) my_change_page_attr((a), (b), (c))
 #endif
 
 /**
diff --git a/src/VBox/VMM/VMMR0/VMMR0.cpp b/src/VBox/VMM/VMMR0/VMMR0.cpp
index 9ab6ebfdc..40c6ce192 100644
--- a/src/VBox/VMM/VMMR0/VMMR0.cpp
+++ b/src/VBox/VMM/VMMR0/VMMR0.cpp
@@ -2175,7 +2175,7 @@ DECL_NO_INLINE(static, int) vmmR0EntryExWorker(PGVM pGVM, VMCPUID idCpu, VMMR0OP
             VMM_CHECK_SMAP_CHECK2(pGVM, RT_NOTHING);
             break;
 
-#if 0 //def VBOX_WITH_PCI_PASSTHROUGH
+#ifdef VBOX_WITH_PCI_PASSTHROUGH
         /*
          * Requests to host PCI driver service.
          */
diff --git a/src/VBox/VMM/testcase/Makefile.kmk b/src/VBox/VMM/testcase/Makefile.kmk
index f0388b0ad..2edd265e2 100644
--- a/src/VBox/VMM/testcase/Makefile.kmk
+++ b/src/VBox/VMM/testcase/Makefile.kmk
@@ -28,9 +28,11 @@ endif
 #
 # Target lists.
 #
-PROGRAMS   += tstVMStructSize tstAsmStructs
-ifdef VBOX_WITH_RAW_MODE
- PROGRAMS  += tstVMStructRC tstAsmStructsRC
+ifndef VBOX_WITHOUT_BIARCH
+ PROGRAMS   += tstVMStructSize tstAsmStructs
+ ifdef VBOX_WITH_RAW_MODE
+  PROGRAMS  += tstVMStructRC tstAsmStructsRC
+ endif
 endif
 if !defined(VBOX_ONLY_EXTPACKS) \
  && (   defined(VBOX_WITH_DTRACE_R3) \
@@ -105,9 +107,11 @@ BLDDIRS += $(VBOX_VMM_TESTCASE_OUT_DIR)
 #
 ifeq ($(KBUILD_TARGET),$(KBUILD_HOST))
  ifeq ($(filter-out x86.x86 amd64.amd64 x86.amd64, $(KBUILD_TARGET_ARCH).$(KBUILD_HOST_ARCH)),)
+  ifndef VBOX_WITHOUT_BIARCH
 OTHERS += \
 	$(VBOX_VMM_TESTCASE_OUT_DIR)/tstAsmStructs.run \
 	$(VBOX_VMM_TESTCASE_OUT_DIR)/tstVMStructSize.run
+  endif
  endif
 endif
 
diff --git a/src/libs/xpcom18a4/Makefile.kmk b/src/libs/xpcom18a4/Makefile.kmk
index f1a2c9bb1..ee7fbea10 100644
--- a/src/libs/xpcom18a4/Makefile.kmk
+++ b/src/libs/xpcom18a4/Makefile.kmk
@@ -1024,6 +1024,7 @@ VBoxXPCOM_LDFLAGS.solaris += -Wl,-z,allextract \
 #VBoxXPCOM_LIBS += $(LIB_RUNTIME_EF)
 #VBoxXPCOM_LDFLAGS = -Wl,--whole-archive $(VBoxXPCOM_LIBS) -Wl,--no-whole-archive $(LIB_RUNTIME)
 VBoxXPCOM_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/VBoxXPCOM.dylib
+VBoxXPCOM_LDFLAGS.linux  = -Wl,-rpath,$(VBOXDIR)
 
 #
 # The 32-bit VBoxXPCOM Shared Object, assembling all lib files.
@@ -1186,6 +1187,7 @@ VBoxXPCOMIPCC_SOURCES += \
 	ipc/ipcd/client/src/ipcConnectionUnix.cpp
 endif
 VBoxXPCOMIPCC_LDFLAGS.darwin = -install_name $(VBOX_DYLD_EXECUTABLE_PATH)/components/VBoxXPCOMIPCC.dylib
+VBoxXPCOMIPCC_LDFLAGS.linux  = -Wl,-rpath,$(VBOXDIR)
 VBoxXPCOMIPCC_LIBS = \
 	$(VBox-xpcom-ipcshared_1_TARGET)
 
@@ -1211,6 +1213,7 @@ else
  VBoxXPCOMIPCD_SOURCES += \
 	ipc/ipcd/daemon/src/ipcdUnix.cpp
 endif
+VBoxXPCOMIPCD_LDFLAGS.linux = -Wl,-rpath,$(VBOXDIR)
 
 
 #
diff --git a/src/libs/xpcom18a4/python/Makefile.kmk b/src/libs/xpcom18a4/python/Makefile.kmk
index afc3d6b33..3852b9d9a 100644
--- a/src/libs/xpcom18a4/python/Makefile.kmk
+++ b/src/libs/xpcom18a4/python/Makefile.kmk
@@ -579,6 +579,53 @@ VBoxPython3_9m_x86_LIBS       = $(VBOX_PYTHON39M_LIB_X86)
  endif
 endif
 
+
+ifdef VBOX_PYTHON310_INC
+#
+# Python 3.10 version
+#
+DLLS += VBoxPython3_10
+VBoxPython3_10_EXTENDS    = VBoxPythonBase
+VBoxPython3_10_EXTENDS_BY = appending
+VBoxPython3_10_TEMPLATE   = XPCOM
+VBoxPython3_10_INCS       = $(VBOX_PYTHON310_INC)
+VBoxPython3_10_LIBS       = $(VBOX_PYTHON310_LIB)
+
+ ifdef VBOX_WITH_32_ON_64_MAIN_API
+  ifdef VBOX_PYTHON310_LIB_X86
+DLLS += VBoxPython3_10_x86
+VBoxPython3_10_x86_EXTENDS    = VBoxPythonBase_x86
+VBoxPython3_10_x86_EXTENDS_BY = appending
+VBoxPython3_10_x86_TEMPLATE   = XPCOM
+VBoxPython3_10_x86_INCS       = $(VBOX_PYTHON310_INC)
+VBoxPython3_10_x86_LIBS       = $(VBOX_PYTHON310_LIB_X86)
+  endif
+ endif
+endif
+
+ifdef VBOX_PYTHON310M_INC
+#
+# Python 3.10 version with pymalloc
+#
+DLLS += VBoxPython3_10m
+VBoxPython3_10m_EXTENDS    = VBoxPythonBase_m
+VBoxPython3_10m_EXTENDS_BY = appending
+VBoxPython3_10m_TEMPLATE   = XPCOM
+VBoxPython3_10m_INCS       = $(VBOX_PYTHON310M_INC)
+VBoxPython3_10m_LIBS       = $(VBOX_PYTHON310M_LIB)
+
+ ifdef VBOX_WITH_32_ON_64_MAIN_API
+  ifdef VBOX_PYTHON310M_LIB_X86
+DLLS += VBoxPython3_10m_x86
+VBoxPython3_10m_x86_EXTENDS    = VBoxPythonBase_x86_m
+VBoxPython3_10m_x86_EXTENDS_BY = appending
+VBoxPython3_10m_x86_TEMPLATE_   = XPCOM
+VBoxPython3_10m_x86_INCS       = $(VBOX_PYTHON310M_INC)
+VBoxPython3_10m_x86_LIBS       = $(VBOX_PYTHON310M_LIB_X86)
+  endif
+ endif
+endif
+
 ifdef VBOX_PYTHONDEF_INC
 #
 # Python without versioning
diff --git a/src/libs/xpcom18a4/python/gen_python_deps.py b/src/libs/xpcom18a4/python/gen_python_deps.py
index b116313ad..1e161acab 100755
--- a/src/libs/xpcom18a4/python/gen_python_deps.py
+++ b/src/libs/xpcom18a4/python/gen_python_deps.py
@@ -16,7 +16,7 @@ from __future__ import print_function
 import os,sys
 from distutils.version import StrictVersion
 
-versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.8m", "3.9", "3.9m" ]
+versions = ["2.6", "2.7", "3.1", "3.2", "3.2m", "3.3", "3.3m", "3.4", "3.4m", "3.5", "3.5m", "3.6", "3.6m", "3.7", "3.7m", "3.8", "3.8m", "3.9", "3.9m", "3.10", "3.10m" ]
 prefixes = ["/usr", "/usr/local", "/opt", "/opt/local"]
 known = {}
 
diff --git a/src/libs/xpcom18a4/python/src/PyXPCOM.h b/src/libs/xpcom18a4/python/src/PyXPCOM.h
index 368b00215..00cf0d3c2 100644
--- a/src/libs/xpcom18a4/python/src/PyXPCOM.h
+++ b/src/libs/xpcom18a4/python/src/PyXPCOM.h
@@ -140,9 +140,6 @@ inline PyObject *PyBool_FromLong(long ok)
 #  ifndef PyUnicode_AsUTF8
 #   define PyUnicode_AsUTF8(o) _PyUnicode_AsString(o)
 #  endif
-#  ifndef PyUnicode_AsUTF8AndSize
-#   define PyUnicode_AsUTF8AndSize(o,s) _PyUnicode_AsStringAndSize(o,s)
-#  endif
 typedef struct PyMethodChain
 {
     PyMethodDef *methods;
diff --git a/src/libs/xpcom18a4/python/src/module/_xpcom.cpp b/src/libs/xpcom18a4/python/src/module/_xpcom.cpp
index 6c5bc7d62..fe2097bdf 100644
--- a/src/libs/xpcom18a4/python/src/module/_xpcom.cpp
+++ b/src/libs/xpcom18a4/python/src/module/_xpcom.cpp
@@ -84,7 +84,11 @@ extern PYXPCOM_EXPORT void PyXPCOM_InterpreterState_Ensure();
 #  define MANGLE_MODULE_INIT(a_Name)    RT_CONCAT(a_Name, MODULE_NAME_SUFFIX)
 # endif
 # ifdef VBOX_PYXPCOM_VERSIONED
-#  if   PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
+#  if   PY_VERSION_HEX >= 0x030a0000 && PY_VERSION_HEX < 0x030b0000
+#   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_10")
+#   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_10)
+
+#  elif   PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
 #   define MODULE_NAME    MANGLE_MODULE_NAME("VBoxPython3_9")
 #   define initVBoxPython MANGLE_MODULE_INIT(PyInit_VBoxPython3_9)
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin