diff --git a/hardware/virtualization/virtualbox/files/002-dri-driver-path.patch b/hardware/virtualization/virtualbox/files/002-dri-driver-path.patch
index 26b7f3f65f..0782b0e6d7 100644
--- a/hardware/virtualization/virtualbox/files/002-dri-driver-path.patch
+++ b/hardware/virtualization/virtualbox/files/002-dri-driver-path.patch
@@ -1,19 +1,18 @@
-diff --git a/src/VBox/Additions/common/crOpenGL/fakedri_drv.c b/src/VBox/Additions/common/crOpenGL/fakedri_drv.c
-index 92b4ffc..1a1c467 100644
---- a/src/VBox/Additions/common/crOpenGL/fakedri_drv.c
-+++ b/src/VBox/Additions/common/crOpenGL/fakedri_drv.c
-@@ -56,24 +56,8 @@ typedef enum {
-
+diff -Nuar a/src/VBox/Additions/common/crOpenGL/fakedri_drv.c b/src/VBox/Additions/common/crOpenGL/fakedri_drv.c
+--- a/src/VBox/Additions/common/crOpenGL/fakedri_drv.c 2018-05-09 19:32:17.000000000 +0300
++++ b/src/VBox/Additions/common/crOpenGL/fakedri_drv.c 2018-05-11 23:24:22.415626074 +0300
+@@ -57,23 +57,8 @@
//#define DEBUG_DRI_CALLS
--/// @todo this could be different...
+ /// @todo this could be different...
-#ifdef RT_ARCH_AMD64
-# ifdef RT_OS_FREEBSD
-# define DRI_DEFAULT_DRIVER_DIR "/usr/local/lib/dri"
-# define DRI_XORG_DRV_DIR "/usr/local/lib/xorg/modules/drivers/"
-# else
-# define DRI_DEFAULT_DRIVER_DIR "/usr/lib64/dri:/usr/lib/dri:/usr/lib/x86_64-linux-gnu/dri:/usr/lib/xorg/modules/dri"
--# define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/"
++# define DRI_DEFAULT_DRIVER_DIR "/usr/lib/xorg/modules/dri"
+ # define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/"
-# endif
-#else
-# ifdef RT_OS_FREEBSD
@@ -21,8 +20,7 @@ index 92b4ffc..1a1c467 100644
-# define DRI_XORG_DRV_DIR "/usr/local/lib/xorg/modules/drivers/"
-# else
-# define DRI_DEFAULT_DRIVER_DIR "/usr/lib/dri:/usr/lib/i386-linux-gnu/dri:/usr/lib/xorg/modules/dri"
-+# define DRI_DEFAULT_DRIVER_DIR "/usr/lib/xorg/modules/dri"
- # define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/"
+-# define DRI_XORG_DRV_DIR "/usr/lib/xorg/modules/drivers/"
-# endif
-#endif
diff --git a/hardware/virtualization/virtualbox/files/010-linux-4.16-mount-fixes.patch b/hardware/virtualization/virtualbox/files/010-linux-4.16-mount-fixes.patch
new file mode 100644
index 0000000000..110e5f4e61
--- /dev/null
+++ b/hardware/virtualization/virtualbox/files/010-linux-4.16-mount-fixes.patch
@@ -0,0 +1,35 @@
+This ghetto patch attempts to fix shared folder automounting for guests running
+Linux 4.16, and also suggests an alternative to mount.vboxsf.
+
+diff -uprb VirtualBox-5.2.8.orig/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp VirtualBox-5.2.8/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp
+--- VirtualBox-5.2.8.orig/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp 2018-02-26 17:57:30.000000000 +0200
++++ VirtualBox-5.2.8/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp 2018-04-07 21:00:05.785735622 +0300
+@@ -346,6 +346,13 @@ static int vbsvcAutoMountSharedFolder(co
+ "vboxsf",
+ fFlags,
+ &mntinf);
++ if (r == -1 && errno == EINVAL)
++ {
++ /* Mainline vboxsf accepts regular mount opts. */
++ char mount_opts[1024];
++ snprintf(mount_opts, 1024, "gid=%d,dmode=0770,fmode=0770", mntinf.gid);
++ r = mount(pszShareName, pszMountPoint, "vboxsf", fFlags, mount_opts);
++ }
+ if (r == 0)
+ {
+ VGSvcVerbose(0, "vbsvcAutoMountWorker: Shared folder '%s' was mounted to '%s'\n", pszShareName, pszMountPoint);
+diff -uprb VirtualBox-5.2.8.orig/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c VirtualBox-5.2.8/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c
+--- VirtualBox-5.2.8.orig/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c 2018-02-26 17:57:34.000000000 +0200
++++ VirtualBox-5.2.8/src/VBox/Additions/linux/sharedfolders/mount.vboxsf.c 2018-04-07 21:39:38.121577588 +0300
+@@ -485,6 +485,11 @@ main(int argc, char **argv)
+ * to keep this code here slick without having VbglR3.
+ */
+ err = mount(host_name, mount_point, "vboxsf", flags, &mntinf);
++ if (err == -1 && errno == EINVAL)
++ {
++ /* The mount.vboxsf helper should not be used with mainline vboxsf. */
++ panic("mount.vboxsf cannot be used with mainline vboxsf; instead use:\n\n mount -cit vboxsf NAME MOUNTPOINT\n\n");
++ }
+ if (err == -1 && errno == EPROTO)
+ {
+ /* Sometimes the mount utility messes up the share name. Try to
diff --git a/hardware/virtualization/virtualbox/files/LocalConfig.kmk b/hardware/virtualization/virtualbox/files/LocalConfig.kmk
index 3198ab7a2a..d2118c8af1 100644
--- a/hardware/virtualization/virtualbox/files/LocalConfig.kmk
+++ b/hardware/virtualization/virtualbox/files/LocalConfig.kmk
@@ -5,6 +5,7 @@ VBOX_WITH_VALIDATIONKIT :=
# no legacy X.org - use KMS
VBOX_USE_SYSTEM_XORG_HEADERS = 1
+VBOX_USE_SYSTEM_GL_HEADERS=true
VBOX_NO_LEGACY_XORG_X11 = 1
# PisiLinux path
diff --git a/hardware/virtualization/virtualbox/pspec.xml b/hardware/virtualization/virtualbox/pspec.xml
index 6286cc3933..6b2f9369d6 100644
--- a/hardware/virtualization/virtualbox/pspec.xml
+++ b/hardware/virtualization/virtualbox/pspec.xml
@@ -12,7 +12,7 @@
app:gui
A powerful virtualization program
VirtualBox is a family of powerful x86 virtualization products for enterprise as well as home use. This is the Open Source Edition which lacks USB support and some other things.
- http://download.virtualbox.org/virtualbox/5.2.10/VirtualBox-5.2.10.tar.bz2
+ http://download.virtualbox.org/virtualbox/5.2.12/VirtualBox-5.2.12.tar.bz2
dev86
cdrkit
@@ -57,13 +57,14 @@
wrapper.patch
002-dri-driver-path.patch
- 003-ogl-include-new.patch
+
005-gsoap-build.patch
006-rdesktop-vrdp-keymap-path.patch
008-root-window.patch
python.patch
008-no-vboxvideo.patch
+ 010-linux-4.16-mount-fixes.patch
@@ -153,6 +154,13 @@
+
+ 2018-05-10
+ 5.2.12
+ Version bump.
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
2018-04-18
5.2.10