Page 1 of 1

Nvidia proprietary drivers, how to compile and create xzm?

Posted: 16 May 2016, 00:05
by istinnjazz
...great project :good:

It would be very helpful if someone could write a short how to compile "Nvidia proprietary" drivers in Porteous (for nemesis if this is different from main) and create a corresponding xzm file for the running kernel.
There are several pre-compiled "nvidia" modules for main porteus that I had tested with success. With those instructions we could use the driver with any updated kernel.
I will work with driver 340.xx version and latest nemesis 3.5 with original pre-compiled and future versions, and my own kernels (from official how-to).

thanks...

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 16 May 2016, 07:05
by Evan
<removed>

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 16 May 2016, 07:24
by Blaze
Hi istinnjazz.
Look at this topic (Russian)

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 17 May 2016, 08:54
by istinnjazz
Blaze wrote:Hi istinnjazz.
Look at this topic (Russian)
Thanks. This is what I was looking for, very well. And seems relatively ok auto translated. I will have to download kernel sourses from the official kernel.org, as there is not xzm sources file for the nemesis version i use.

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 19 May 2016, 02:10
by istinnjazz
@ Blaze
It worked ! a pleasant surprise
Kernel 4.5.4 patched with aufs and ck BFS
& nvidia 340.96

there are 2 typo mistakes in the guide:
./NVIDIA-NVIDIA-Linux-x86-340.96.run
sould be:

Code: Select all

./NVIDIA-Linux-x86-340.96.run
and
/.nvidia.sh
sould be:

Code: Select all

./nvidia.sh
There are also some errors produced for nvidia.sh script considering paths that do not exist, but they seem harmless.

Kernel sources had to be in a new separate xzm file, with a "linux" symbolic link inside /usr/src, driver recognized the directory immediately.
The nemesis version I have used is 3.5 and the 05-devel.xzm module was extracted and recreated with those new, full kernel sources.

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 03 Jul 2016, 19:00
by istinnjazz
Update:

I have recently compiled a new kernel for a couple of reasons,
there is an issue when you try to compile nvidia driver version 340.96 with 4.6.x kernels.

info and drivers patch
https://git.archlinux.org/svntogit/pack ... idia-340xx
https://forums.gentoo.org/viewtopic-p-7 ... 53874ec67c
------------------------------

Code: Select all

sh NVIDIA-Linux-x86_64-340.96.run --extract-only
Creating directory NVIDIA-Linux-x86_64-340.96
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 340.96.................................................................................................................................................................................................................................
root /mnt/sdb5/linux/nvidia # 

Code: Select all

root /mnt/sdb5/linux/nvidia/NVIDIA-Linux-x86_64-340.96 # patch -p1 < linux-4.6-nvidia340.patch
patching file kernel/nv-mm.h
patching file kernel/os-mlock.c
Hunk #3 succeeded at 59 (offset -1 lines).
Hunk #4 succeeded at 86 (offset -1 lines).
patching file kernel/conftest.sh
patching file kernel/Makefile
patching file kernel/uvm/nvidia_uvm_lite.c
root /mnt/sdb5/linux/nvidia/NVIDIA-Linux-x86_64-340.96 # 
Instead of copying the *.run file to /tmp you have to copy and use the extracted directory and execute the installer from there:

Code: Select all

./nvidia-installer
Im my personal case, there was also an issue with nvidia.sh script from Blaze, in text mode, first xzm creation showed continuous errors about the file system that have changed during xzm creation, causing infinite loop of re-reads @ about 75%. I had to delete manually all directories from /mnt/live/memory/changes except those used by the installed driver (probably /etc and /usr), maybe it was the /dev or /var directory that have raised the issue (I do not know what caused this, maybe an independent loaded xzm). from the tmp directory I have deleted only the extracted driver directory, /tmp will be used and deleted later by the script.


After manual deletion everything worked OK.

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 04 Jul 2016, 08:43
by Blaze
istinnjazz, yep, I have too issue with compile nvidia driver version 340.96 for 4.6.x kernels.
I used this patch look at this post
istinnjazz wrote:Im my personal case, there was also an issue with nvidia.sh script from Blaze
It's strange.

Must be this tree

Code: Select all

.
├── etc
│   ├── OpenCL
│   │   └── vendors
│   │       └── nvidia.icd
│   ├── X11
│   │   └── xorg.conf
│   ├── modprobe.d
│   │   └── nvidia-installer-disable-nouveau.conf
│   └── rc.d
│       └── rcS.d
│           └── S99-nVidia
├── lib
│   └── modules
│       └── 4.6.1-porteus
│           └── kernel
│               └── drivers
│                   └── video
│                       ├── nvidia-uvm.ko
│                       └── nvidia.ko
└── usr
    ├── bin
    │   ├── nvidia-bug-report.sh
    │   ├── nvidia-cuda-mps-control
    │   ├── nvidia-cuda-mps-server
    │   ├── nvidia-debugdump
    │   ├── nvidia-installer
    │   ├── nvidia-modprobe
    │   ├── nvidia-persistenced
    │   ├── nvidia-settings
    │   ├── nvidia-smi
    │   ├── nvidia-uninstall -> nvidia-installer
    │   └── nvidia-xconfig
    ├── lib
    │   ├── libEGL.so -> libEGL.so.1
    │   ├── libEGL.so.1 -> libEGL.so.340.96
    │   ├── libEGL.so.340.96
    │   ├── libGL.la
    │   ├── libGL.so -> libGL.so.1
    │   ├── libGL.so.1 -> libGL.so.340.96
    │   ├── libGL.so.340.96
    │   ├── libGLESv1_CM.so -> libGLESv1_CM.so.1
    │   ├── libGLESv1_CM.so.1 -> libGLESv1_CM.so.340.96
    │   ├── libGLESv1_CM.so.340.96
    │   ├── libGLESv2.so -> libGLESv2.so.2
    │   ├── libGLESv2.so.2 -> libGLESv2.so.340.96
    │   ├── libGLESv2.so.340.96
    │   ├── libOpenCL.so -> libOpenCL.so.1
    │   ├── libOpenCL.so.1 -> libOpenCL.so.1.0
    │   ├── libOpenCL.so.1.0 -> libOpenCL.so.1.0.0
    │   ├── libOpenCL.so.1.0.0
    │   ├── libcuda.so -> libcuda.so.1
    │   ├── libcuda.so.1 -> libcuda.so.340.96
    │   ├── libcuda.so.340.96
    │   ├── libnvcuvid.so -> libnvcuvid.so.1
    │   ├── libnvcuvid.so.1 -> libnvcuvid.so.340.96
    │   ├── libnvcuvid.so.340.96
    │   ├── libnvidia-compiler.so.340.96
    │   ├── libnvidia-eglcore.so.340.96
    │   ├── libnvidia-encode.so -> libnvidia-encode.so.1
    │   ├── libnvidia-encode.so.1 -> libnvidia-encode.so.340.96
    │   ├── libnvidia-encode.so.340.96
    │   ├── libnvidia-fbc.so -> libnvidia-fbc.so.1
    │   ├── libnvidia-fbc.so.1 -> libnvidia-fbc.so.340.96
    │   ├── libnvidia-fbc.so.340.96
    │   ├── libnvidia-glcore.so.340.96
    │   ├── libnvidia-glsi.so.340.96
    │   ├── libnvidia-ifr.so -> libnvidia-ifr.so.1
    │   ├── libnvidia-ifr.so.1 -> libnvidia-ifr.so.340.96
    │   ├── libnvidia-ifr.so.340.96
    │   ├── libnvidia-ml.so -> libnvidia-ml.so.1
    │   ├── libnvidia-ml.so.1 -> libnvidia-ml.so.340.96
    │   ├── libnvidia-ml.so.340.96
    │   ├── libnvidia-opencl.so.1 -> libnvidia-opencl.so.340.96
    │   ├── libnvidia-opencl.so.340.96
    │   ├── libnvidia-tls.so.340.96
    │   ├── libvdpau_nvidia.so -> vdpau/libvdpau_nvidia.so.340.96
    │   └── vdpau
    │       ├── libvdpau_nvidia.so.1 -> libvdpau_nvidia.so.340.96
    │       └── libvdpau_nvidia.so.340.96
    ├── lib64
    │   ├── libEGL.so -> libEGL.so.1
    │   ├── libEGL.so.1 -> libEGL.so.340.96
    │   ├── libEGL.so.340.96
    │   ├── libGL.la
    │   ├── libGL.so -> libGL.so.1
    │   ├── libGL.so.1 -> libGL.so.340.96
    │   ├── libGL.so.340.96
    │   ├── libGLESv1_CM.so -> libGLESv1_CM.so.1
    │   ├── libGLESv1_CM.so.1 -> libGLESv1_CM.so.340.96
    │   ├── libGLESv1_CM.so.340.96
    │   ├── libGLESv2.so -> libGLESv2.so.2
    │   ├── libGLESv2.so.2 -> libGLESv2.so.340.96
    │   ├── libGLESv2.so.340.96
    │   ├── libOpenCL.so -> libOpenCL.so.1
    │   ├── libOpenCL.so.1 -> libOpenCL.so.1.0
    │   ├── libOpenCL.so.1.0 -> libOpenCL.so.1.0.0
    │   ├── libOpenCL.so.1.0.0
    │   ├── libXvMCgallium.so.1 -> libXvMCr600.so.1.0.0
    │   ├── libcuda.so -> libcuda.so.1
    │   ├── libcuda.so.1 -> libcuda.so.340.96
    │   ├── libcuda.so.340.96
    │   ├── libncurses.so.5 -> libcurses.so
    │   ├── libncursesw.so.5 -> libcursesw.so
    │   ├── libnvcuvid.so -> libnvcuvid.so.1
    │   ├── libnvcuvid.so.1 -> libnvcuvid.so.340.96
    │   ├── libnvcuvid.so.340.96
    │   ├── libnvidia-cfg.so -> libnvidia-cfg.so.1
    │   ├── libnvidia-cfg.so.1 -> libnvidia-cfg.so.340.96
    │   ├── libnvidia-cfg.so.340.96
    │   ├── libnvidia-compiler.so.340.96
    │   ├── libnvidia-eglcore.so.340.96
    │   ├── libnvidia-encode.so -> libnvidia-encode.so.1
    │   ├── libnvidia-encode.so.1 -> libnvidia-encode.so.340.96
    │   ├── libnvidia-encode.so.340.96
    │   ├── libnvidia-fbc.so -> libnvidia-fbc.so.1
    │   ├── libnvidia-fbc.so.1 -> libnvidia-fbc.so.340.96
    │   ├── libnvidia-fbc.so.340.96
    │   ├── libnvidia-glcore.so.340.96
    │   ├── libnvidia-glsi.so.340.96
    │   ├── libnvidia-ifr.so -> libnvidia-ifr.so.1
    │   ├── libnvidia-ifr.so.1 -> libnvidia-ifr.so.340.96
    │   ├── libnvidia-ifr.so.340.96
    │   ├── libnvidia-ml.so -> libnvidia-ml.so.1
    │   ├── libnvidia-ml.so.1 -> libnvidia-ml.so.340.96
    │   ├── libnvidia-ml.so.340.96
    │   ├── libnvidia-opencl.so.1 -> libnvidia-opencl.so.340.96
    │   ├── libnvidia-opencl.so.340.96
    │   ├── libnvidia-tls.so.340.96
    │   ├── libudev.so.1 -> libudev.so.0
    │   ├── libvdpau_nvidia.so -> vdpau/libvdpau_nvidia.so.340.96
    │   ├── tls
    │   │   └── libnvidia-tls.so.340.96
    │   ├── vdpau
    │   │   ├── libvdpau_nvidia.so.1 -> libvdpau_nvidia.so.340.96
    │   │   └── libvdpau_nvidia.so.340.96
    │   └── xorg
    │       └── modules
    │           ├── drivers
    │           │   └── nvidia_drv.so
    │           ├── extensions
    │           │   ├── libglx.so -> libglx.so.340.96
    │           │   └── libglx.so.340.96
    │           ├── libnvidia-wfb.so.1 -> libnvidia-wfb.so.340.96
    │           └── libnvidia-wfb.so.340.96
    └── share
        ├── applications
        │   └── nvidia-settings.desktop
        ├── doc
        │   └── NVIDIA_GLX-1.0
        │       ├── LICENSE
        │       ├── NVIDIA_Changelog
        │       ├── README.txt
        │       ├── html
        │       │   ├── acknowledgements.html
        │       │   ├── addressingcapabilities.html
        │       │   ├── addtlresources.html
        │       │   ├── appendices.html
        │       │   ├── audiosupport.html
        │       │   ├── commonproblems.html
        │       │   ├── configlaptop.html
        │       │   ├── configmultxscreens.html
        │       │   ├── configtvout.html
        │       │   ├── configtwinview.html
        │       │   ├── depth30.html
        │       │   ├── displaydevicenames.html
        │       │   ├── dma_issues.html
        │       │   ├── dpi.html
        │       │   ├── editxconfig.html
        │       │   ├── faq.html
        │       │   ├── flippingubb.html
        │       │   ├── framelock.html
        │       │   ├── glxsupport.html
        │       │   ├── gpunames.html
        │       │   ├── i2c.html
        │       │   ├── index.html
        │       │   ├── installationandconfiguration.html
        │       │   ├── installdriver.html
        │       │   ├── installedcomponents.html
        │       │   ├── introduction.html
        │       │   ├── knownissues.html
        │       │   ├── minimumrequirements.html
        │       │   ├── newusertips.html
        │       │   ├── nvidia-debugdump.html
        │       │   ├── nvidia-ml.html
        │       │   ├── nvidia-persistenced.html
        │       │   ├── nvidia-smi.html
        │       │   ├── nvidiasettings.html
        │       │   ├── openglenvvariables.html
        │       │   ├── optimus.html
        │       │   ├── powermanagement.html
        │       │   ├── procinterface.html
        │       │   ├── profiles.html
        │       │   ├── programmingmodes.html
        │       │   ├── randr14.html
        │       │   ├── sdi.html
        │       │   ├── selectdriver.html
        │       │   ├── sli.html
        │       │   ├── supportedchips.html
        │       │   ├── vdpausupport.html
        │       │   ├── xcompositeextension.html
        │       │   ├── xconfigoptions.html
        │       │   ├── xineramaglx.html
        │       │   └── xrandrextension.html
        │       ├── nvidia-settings.png
        │       └── sample
        │           └── nvidia-persistenced-init.tar.bz2
        ├── man
        │   └── man1
        │       ├── nvidia-cuda-mps-control.1.gz
        │       ├── nvidia-installer.1.gz
        │       ├── nvidia-modprobe.1.gz
        │       ├── nvidia-persistenced.1.gz
        │       ├── nvidia-settings.1.gz
        │       ├── nvidia-smi.1.gz
        │       └── nvidia-xconfig.1.gz
        └── nvidia
            ├── monitoring.conf
            ├── nvidia-application-profiles-340.96-key-documentation
            ├── nvidia-application-profiles-340.96-rc
            └── pci.ids

33 directories, 187 files

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 04 Jul 2016, 10:33
by istinnjazz
@ Blaze,
the patch I have used:

Code: Select all

--- /dev/null
+++ b/kernel/nv-mm.h
@@ -0,0 +1,55 @@
+/*******************************************************************************
+    Copyright (c) 2016 NVIDIA Corporation
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to
+    deal in the Software without restriction, including without limitation the
+    rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+    sell copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+        The above copyright notice and this permission notice shall be
+        included in all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+    DEALINGS IN THE SOFTWARE.
+
+*******************************************************************************/
+#ifndef __NV_MM_H__
+#define __NV_MM_H__
+
+/*  get_user_pages_remote() was added by:
+ *    2016 Feb 12: 1e9877902dc7e11d2be038371c6fbf2dfcd469d7
+ *
+ *  The very next commit (cde70140fed8429acf7a14e2e2cbd3e329036653)
+ *  deprecated the 8-argument version of get_user_pages for the
+ *  non-remote case (calling get_user_pages with current and current->mm).
+ *
+ *  The guidelines are: call NV_GET_USER_PAGES_REMOTE if you need the 8-argument
+ *  version that uses something other than current and current->mm. Use
+ *  NV_GET_USER_PAGES if you are refering to current and current->mm.
+ *
+*  Note that get_user_pages_remote() requires the caller to hold a reference on
+*  the task_struct (if non-NULL) and the mm_struct. This will always be true
+*  when using current and current->mm. If the kernel passes the driver a vma
+*  via driver callback, the kernel holds a reference on vma->vm_mm over that
+*  callback.
+ */
+
+#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
+    #define NV_GET_USER_PAGES           get_user_pages
+    #define NV_GET_USER_PAGES_REMOTE    get_user_pages_remote
+#else
+    #define NV_GET_USER_PAGES(start, nr_pages, write, force, pages, vmas) \
+        get_user_pages(current, current->mm, start, nr_pages, write, force, pages, vmas)
+
+    #define NV_GET_USER_PAGES_REMOTE    get_user_pages
+#endif
+
+
+#endif // __NV_MM_H__
--- a/kernel/os-mlock.c
+++ b/kernel/os-mlock.c
@@ -13,6 +13,7 @@
 
 #include "os-interface.h"
 #include "nv-linux.h"
+#include "nv-mm.h"
 
 RM_STATUS NV_API_CALL os_lock_user_pages(
     void   *address,
@@ -45,7 +46,7 @@ RM_STATUS NV_API_CALL os_lock_user_pages(
     }
 
     down_read(&mm->mmap_sem);
-    ret = get_user_pages(current, mm, (unsigned long)address,
+    ret = NV_GET_USER_PAGES((unsigned long)address,
             page_count, write, force, user_pages, NULL);
     up_read(&mm->mmap_sem);
     pinned = ret;
@@ -59,7 +59,7 @@ RM_STATUS NV_API_CALL os_lock_user_pages(
     else if (pinned < page_count)
     {
         for (i = 0; i < pinned; i++)
-            page_cache_release(user_pages[i]);
+            put_page(user_pages[i]);
         os_free_mem(user_pages);
         return RM_ERR_INVALID_ADDRESS;
     }
@@ -86,7 +86,7 @@ RM_STATUS NV_API_CALL os_unlock_user_pages(
     {
         if (write)
             set_page_dirty_lock(user_pages[i]);
-        page_cache_release(user_pages[i]);
+        put_page(user_pages[i]);
     }
 
     os_free_mem(user_pages);
diff --git a/kernel/conftest.sh.orig b/kernel/conftest.sh
index d01488b..308ea8a 100755
--- a/kernel/conftest.sh
+++ b/kernel/conftest.sh
@@ -1669,6 +1669,23 @@ compile_test() {
 
             compile_check_conftest "$CODE" "NV_NODE_END_PFN_PRESENT" "" "functions"
         ;;
+
+        get_user_pages_remote)
+            #
+            # Determine if the function get_user_pages_remote() is
+            # present.
+            #
+            # get_user_pages_remote() was added by:
+            #   2016 Feb 12: 1e9877902dc7e11d2be038371c6fbf2dfcd469d7
+            #
+            CODE="
+            #include <linux/mm.h>
+            int conftest_get_user_pages_remote(void) {
+                get_user_pages_remote();
+            }"
+
+            compile_check_conftest "$CODE" "NV_GET_USER_PAGES_REMOTE_PRESENT" "" "functions"
+        ;;
     esac
 }
 
diff --git a/kernel/Makefile.orig b/kernel/Makefile
index 438d487..c52a36c 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -139,7 +139,8 @@ COMPILE_TESTS = \
 	drm_pci_set_busid \
 	write_cr4 \
 	for_each_online_node \
-	node_end_pfn
+	node_end_pfn \
+	get_user_pages_remote
 
 #
 # CFLAGS dependent on the type of builds (e.g. single/muliple module, debug)
diff --git a/kernel/uvm/nvidia_uvm_lite.c.orig b/kernel/uvm/nvidia_uvm_lite.c
index 442a0a8..695f092 100644
--- a/kernel/uvm/nvidia_uvm_lite.c
+++ b/kernel/uvm/nvidia_uvm_lite.c
@@ -785,7 +785,7 @@ int _fault_common(struct vm_area_struct *vma, unsigned long vaddr,
         // a reference so that the fault handling logic is correct:
         //
         get_page(pTracking->uvmPage);
-        retValue = VM_FAULT_MINOR;
+        retValue = 0;
     }
 
     pRecord->isMapped = NV_TRUE;
I have also noticed the existence of makeself.sh, next time I will use this also. But everything works right anyway.

As for the script, I am not sure what happened. A file was changing its size constantly maybe, maybe a log file? But deleting those folders before script execution solves this.:unknown:

Kernel source used: linux-4.6.3-xanmod5
A modded kernel with aufs patch included.
https://xanmod.org

You may find it useful

Re: Nvidia proprietary drivers, how to compile and create xz

Posted: 05 Jul 2016, 11:39
by istinnjazz
@Blaze
Have you managed to install opengl or opencl?

Code: Select all

guest ~ $ lspci -k | grep -A 2 -E "(VGA|3D)"
01:00.0 VGA compatible controller: NVIDIA Corporation G84GLM [Quadro FX 1600M] (rev a1)
	Subsystem: Hewlett-Packard Company Device 30c3
	Kernel driver in use: nvidia

Code: Select all

root /home/guest # glxinfo | grep rendering
Error: couldn't find RGB GLX visual or fbconfig
root /home/guest # 

Code: Select all

root /home/guest # egrep '\((EE|WW|NI)\)' /var/log/Xorg.0.log
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
[    26.602] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/misc/".
[    26.602] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/OTF/".
[    26.602] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
[    26.602] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/100dpi/".
[    26.602] (WW) `fonts.dir' not found (or not valid) in "/usr/share/fonts/75dpi/".
[    26.602] (WW) Hotplugging is on, devices using drivers 'kbd', 'mouse' or 'vmmouse' will be disabled.
[    26.602] (WW) Disabling Keyboard0
[    26.602] (WW) Disabling Mouse0
[    26.604] (EE) systemd-logind: failed to get session: The name org.freedesktop.login1 was not provided by any .service files
[    26.646] (EE) Failed to load /usr/lib/xorg/modules/extensions/libglx.so: libnvidia-glcore.so.340.96: wrong ELF class: ELFCLASS32
[    26.646] (EE) Failed to load module "glx" (loader failed, 7)
[    26.822] (WW) Unresolved symbol: fbGetGCPrivateKey
[    26.850] (EE) NVIDIA(0): Failed to initialize the GLX module; please check in your X
[    26.850] (EE) NVIDIA(0):     log file that the GLX module has been loaded in your X
[    26.850] (EE) NVIDIA(0):     server, and that the module is the NVIDIA GLX module.  If
[    26.850] (EE) NVIDIA(0):     you continue to encounter problems, Please try
[    26.850] (EE) NVIDIA(0):     reinstalling the NVIDIA driver.
root /home/guest #