Ubuntu18.04安装 NVIDIA驱动

时间:2024-02-20 17:22:31

Ubuntu18.04安装 NVIDIA驱动

参考自博客:https://blog.csdn.net/jsjason1/article/details/88086904

我确定这篇文章是否很有必要,我最开始的时候,按照这篇文章所述,重新安装了NVIDIA驱动,但是后来以为 CUDA与TensorFlow的版本问题,选择了软件更新管理器中附加驱动里的专有驱动(nvidia-driver-390),然后后续安装成功没再进行测试,但可以肯定,因为本文章是带领着安装最新的官方NVIDIA驱动,所以,支持的CUDA版本也较高,我当时看到信息中支持的CUDA版本是10.0,但我需要的是9.0

下面开始讲述安装官方最新NVIDIA显卡驱动的步骤

为了减少重启次数,并不丢失本文章,建议你,先把本文章链接保存一下,然后到BIOS里的security选项中禁用secure boot,然后你就可以跳过第2步。

1.删除原有NVIDIA驱动

sudo apt-get remove --purge nvidia*

2.在BIOS的security选项中禁用secure boot

3.禁用nouveau

sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行添加

blacklist nouneau

执行

sudo update-initramfs -u

重启

lsmod | grep nouveau # 没输出代表禁用生效,要在重启之后执行

4.查询自己的显卡型号

lshw -numeric -C display

以下是我的显卡信息,我的时Geforce MX150

5.从NVIDIA显卡驱动下载对应的显卡驱动

6.安装

sudo chmod a+x NVIDIA-Linux-x86_64-418.43.run
sudo ./NVIDIA-Linux-x86_64-418.43.run --no-opengl-files --no-x-check --no-nouveau-check
  • –no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
  • –no-x-check 安装驱动时不检查X服务
  • –no-nouveau-check 安装驱动时不检查nouveau

如果遇到./nvidia-installer: unrecognized option:

执行sudo ./NVIDIA-Linux-x86_64-418.43.run -A #查询高级选项,输出太多,放在文章最后(附录),就是介绍一些后面可以加的指令,因为本文讲的随时间推移有些命令可能也会不再合适

7.检验是否安装成功,命令nvidia-smi

附录:

  -v, --version
      Print the nvidia-installer version and exit.

  -h, --help
      Print usage information for the common commandline options and exit.

  -A, --advanced-options
      Print usage information for the common commandline options as well as the
      advanced options, and then exit.

  -a, --accept-license
      This option is obsolete and ignored by nvidia-installer.  It is provided
      for compatibility with older versions of nvidia-installer, which required
      this option for explicit license acceptance. Use of the NVIDIA driver
      implies acceptance of the NVIDIA Software License Agreement, contained in
      the file \'LICENSE\' (in the top level directory of the driver package).

  -i, --driver-info
      Print information about the currently installed NVIDIA driver version.

  --uninstall
      Uninstall the currently installed NVIDIA driver.

  --skip-module-unload
      When uninstalling the driver, skip unloading of the NVIDIA kernel module.
      This option is ignored when the driver is being installed.

  --sanity
      Perform basic sanity tests on an existing NVIDIA driver installation.

  -e, --expert
      Enable \'expert\' installation mode; more detailed questions will be asked,
      and more verbose output will be printed; intended for expert users.  The
      questions may be suppressed with the \'--no-questions\' commandline
      option.

  -q, --no-questions
      Do not ask any questions; the default (normally \'yes\') is assumed for all
      yes/no questions, and the default string is assumed in any situation
      where the user is prompted for string input.

  -s, --silent
      Run silently; no questions are asked and no output is printed, except for
      error messages to stderr.  This option implies \'--ui=none
      --no-questions\'.

  --x-prefix=X-PREFIX
      The prefix under which the X components of the NVIDIA driver will be
      installed; the default is \'/usr/X11R6\' unless nvidia-installer detects
      that X.Org >= 7.0 is installed, in which case the default is \'/usr\'. 
      Only under rare circumstances should this option be used.

  --xfree86-prefix=XFREE86-PREFIX
      This is a deprecated synonym for --x-prefix.

  --x-module-path=X-MODULE-PATH
      The path under which the NVIDIA X server modules will be installed.  If
      this option is not specified, nvidia-installer uses the following search
      order and selects the first valid directory it finds: 1) `X
      -showDefaultModulePath`, 2) `pkg-config --variable=moduledir
      xorg-server`, or 3) the X library path (see the \'--x-library-path\'
      option) plus either \'modules\' (for X servers older than X.Org 7.0) or
      \'xorg/modules\' (for X.Org 7.0 or later).

  --x-library-path=X-LIBRARY-PATH
      The path under which the NVIDIA X libraries will be installed.  If this
      option is not specified, nvidia-installer uses the following search order
      and selects the first valid directory it finds: 1) `X
      -showDefaultLibPath`, 2) `pkg-config --variable=libdir xorg-server`, or
      3) the X prefix (see the \'--x-prefix\' option) plus \'lib\' on 32bit
      systems, and either \'lib64\' or \'lib\' on 64bit systems, depending on the
      installed Linux distribution.

  --x-sysconfig-path=X-SYSCONFIG-PATH
      The path under which X system configuration files will be installed.  If
      this option is not specified, nvidia-installer uses the following search
      order and selects the first valid directory it finds: 1) `pkg-config
      --variable=sysconfigdir xorg-server`, or 2) /usr/share/X11/xorg.conf.d.

  --opengl-prefix=OPENGL-PREFIX
      The prefix under which the OpenGL components of the NVIDIA driver will be
      installed; the default is: \'/usr\'.  Only under rare circumstances should
      this option be used.  The Linux OpenGL ABI
      (http://oss.sgi.com/projects/ogl-sample/ABI/) mandates this default
      value.

  --opengl-libdir=OPENGL-LIBDIR
      The path relative to the OpenGL library installation prefix under which
      the NVIDIA OpenGL components will be installed.  The default is \'lib\' on
      32bit systems, and \'lib64\' or \'lib\' on 64bit systems, depending on the
      installed Linux distribution.  Only under very rare circumstances should
      this option be used.

  --compat32-chroot=COMPAT32-CHROOT
      The top-level prefix (chroot) relative to which the 32bit compatibility
      libraries will be installed on Linux/x86-64 systems; this option is unset
      by default, the 32bit library installation prefix (see below) and the
      32bit library path alone determine the target location.  Only under very
      rare circumstances should this option be used.

  --compat32-prefix=COMPAT32-PREFIX
      The prefix under which the 32bit compatibility components of the NVIDIA
      driver will be installed; the default is: \'/usr\'.  Only under rare
      circumstances should this option be used.

  --compat32-libdir=COMPAT32-LIBDIR
      The path relative to the 32bit compatibility prefix under which the 32bit
      compatibility components of the NVIDIA driver will be installed.  The
      default is \'lib\' or \'lib32\', depending on the installed Linux
      distribution.  Only under very rare circumstances should this option be
      used.

  --install-compat32-libs, --no-install-compat32-libs
      32-bit compatibility libraries may be optionally installed. Setting
      --install-compat32-libs will install these libraries. Setting
      --no-install-compat32-libs will skip installation of these libraries.
      Note: this option will have no effect on -no-compat32.run packages.

  --installer-prefix=INSTALLER-PREFIX
      The prefix under which the installer binary will be installed; the
      default is: \'/usr\'.  Note: please use the \'--utility-prefix\' option
      instead.

  --utility-prefix=UTILITY-PREFIX
      The prefix under which the NVIDIA utilities (nvidia-installer,
      nvidia-settings, nvidia-xconfig, nvidia-bug-report.sh) and the NVIDIA
      utility libraries will be installed; the default is: \'/usr\'.

  --utility-libdir=UTILITY-LIBDIR
      The path relative to the utility installation prefix under which the
      NVIDIA utility libraries will be installed.  The default is \'lib\' on
      32bit systems, and \'lib64\' or \'lib\' on 64bit systems, depending on the
      installed Linux distribution.

  --documentation-prefix=DOCUMENTATION-PREFIX
      The prefix under which the documentation files for the NVIDIA driver will
      be installed.  The default is: \'/usr\'.

  --application-profile-path=APPLICATION-PROFILE-PATH
      The directory under which default application profiles for the NVIDIA
      driver will be installed. The default is: \'/usr/share/nvidia\'.

  --kernel-include-path=KERNEL-INCLUDE-PATH
      The directory containing the kernel include files that should be used
      when compiling the NVIDIA kernel module.  This option is deprecated;
      please use \'--kernel-source-path\' instead.

  --kernel-source-path=KERNEL-SOURCE-PATH
      The directory containing the kernel source files that should be used when
      compiling the NVIDIA kernel module.  When not specified, the installer
      will use \'/lib/modules/`uname -r`/build\', if that directory exists. 
      Otherwise, it will use \'/usr/src/linux\'.

  --kernel-output-path=KERNEL-OUTPUT-PATH
      The directory containing any KBUILD output files if either one of the
      \'KBUILD_OUTPUT\' or \'O\' parameters were passed to KBUILD when building the
      kernel image/modules.  When not specified, the installer will assume that
      no separate output directory was used.

  --kernel-install-path=KERNEL-INSTALL-PATH
      The directory in which the NVIDIA kernel module should be installed.  The
      default value is either \'/lib/modules/`uname -r`/kernel/drivers/video\'
      (if \'/lib/modules/`uname -r`/kernel\' exists) or \'/lib/modules/`uname
      -r`/video\'.

  --proc-mount-point=PROC-MOUNT-POINT
      The mount point for the proc file system; if not specified, then this
      value defaults to \'/proc\' (which is normally correct).  The mount point
      of the proc filesystem is needed because the contents of \'<proc
      filesystem>/version\' is used when identifying if a precompiled kernel
      interface is available for the currently running kernel.  This option
      should only be needed in very rare circumstances.

  --log-file-name=LOG-FILE-NAME
      File name of the installation log file (the default is:
      \'/var/log/nvidia-installer.log\').

  --tmpdir=TMPDIR
      Use the specified directory as a temporary directory when generating
      transient files used by the installer; if not given, then the following
      list will be searched, and the first one that exists will be used:
      $TMPDIR, /tmp, ., $HOME.

  --ui=UI
      Specify what user interface to use, if available.  Valid values for UI
      are \'ncurses\' (the default) or \'none\'. If the ncurses interface fails to
      initialize, or \'none\' is specified, then a simple printf/scanf interface
      will be used.

  -c, --no-ncurses-color
      Disable use of color in the ncurses user interface.

  --no-nvidia-modprobe
      Skip installation of \'nvidia-modprobe\', a setuid root utility which
      nvidia-installer installs by default.  nvidia-modprobe can be used by
      user-space NVIDIA driver components to load the NVIDIA kernel module, and
      create the NVIDIA device files, when those components run without
      sufficient privileges to do so on their own, e.g., the CUDA driver run
      within the permissions of a non-privileged user.  This utility is only
      needed if other means of loading the NVIDIA kernel module and creating
      the NVIDIA device files are unavailable.

  -k KERNEL-NAME, --kernel-name=KERNEL-NAME
      Build and install the NVIDIA kernel module for the non-running kernel
      specified by KERNEL-NAME (KERNEL-NAME should be the output of `uname -r`
      when the target kernel is actually running).  This option implies
      \'--no-precompiled-interface\'.  If the options \'--kernel-install-path\' and
      \'--kernel-source-path\' are not given, then they will be inferred from
      KERNEL-NAME; eg: \'/lib/modules/KERNEL-NAME/kernel/drivers/video/\' and
      \'/lib/modules/KERNEL-NAME/build/\', respectively.

  -n, --no-precompiled-interface
      Disable use of precompiled kernel interfaces.

  --no-abi-note
      The NVIDIA OpenGL libraries contain an OS ABI note tag, which identifies
      the minimum kernel version needed to use the library.  This option causes
      the installer to remove this note from the OpenGL libraries during
      installation.

  --no-rpms
      Normally, the installer will check for several rpms that conflict with
      the driver (specifically: NVIDIA_GLX and NVIDIA_kernel), and remove them
      if present.  This option disables this check.

  -b, --no-backup
      During driver installation, conflicting files are backed up, so that they
      can be restored when the driver is uninstalled.  This option causes the
      installer to simply delete conflicting files, rather than back them up.

  -r, --no-recursion
      Normally, nvidia-installer will recursively search for potentially
      conflicting libraries under the default OpenGL and X server installation
      locations.  With this option set, the installer will only search in the
      top-level directories.

  -K, --kernel-module-only
      Install a kernel module only, and do not uninstall the existing driver. 
      This is intended to be used to install kernel modules for additional
      kernels (in cases where you might boot between several different
      kernels).  To use this option, you must already have a driver installed,
      and the version of the installed driver must match the version of this
      kernel module.

  --no-kernel-module
      Install everything but the kernel module, and do not remove any existing,
      possibly conflicting kernel modules.  This can be useful in some DEBUG
      environments.  If you use this option, you must be careful to ensure that
      a NVIDIA kernel module matching this driver version is installed
      separately.

  --no-x-check
      Do not abort the installation if nvidia-installer detects that an X
      server is running.  Only under very rare circumstances should this option
      be used.

  --precompiled-kernel-interfaces-path=PRECOMPILED-KERNEL-INTERFACES-PATH
      Before searching for a precompiled kernel interface in the .run file,
      search in the specified directory.

  -z, --no-nouveau-check
      Normally, nvidia-installer aborts installation if the nouveau kernel
      driver is in use.  Use this option to disable this check.

  -Z, --disable-nouveau
      If the nouveau kernel module is detected by nvidia-installer, the
      installer offers to attempt to disable nouveau. The default action is to
      not attempt to disable nouveau; use this option to change the default
      action to attempt to disable nouveau.

  -X, --run-nvidia-xconfig
      nvidia-installer can optionally invoke the nvidia-xconfig utility.  This
      will update the system X configuration file so that the NVIDIA X driver
      is used.  The pre-existing X configuration file will be backed up.  At
      the end of installation, nvidia-installer will ask the user if they wish
      to run nvidia-xconfig; the default response is \'no\'.  Use this option to
      make the default response \'yes\'.  This is useful with the
      \'--no-questions\' or \'--silent\' options, which assume the default values
      for all questions.

  --force-selinux=FORCE-SELINUX
      Linux installations using SELinux (Security-Enhanced Linux) require that
      the security type of all shared libraries be set to \'shlib_t\' or
      \'textrel_shlib_t\', depending on the distribution. nvidia-installer will
      detect when to set the security type, and set it using chcon(1) on the
      shared libraries it installs.  If the execstack(8) system utility is
      present, nvidia-installer will use it to also clear the executable stack
      flag of the libraries.  Use this option to override nvidia-installer\'s
      detection of when to set the security type.  Valid values for
      FORCE-SELINUX are \'yes\' (force setting of the security type), \'no\'
      (prevent setting of the security type), and \'default\' (let
      nvidia-installer decide when to set the security type).

  --selinux-chcon-type=SELINUX-CHCON-TYPE
      When SELinux support is enabled, nvidia-installer will try to determine
      which chcon argument to use by first trying \'textrel_shlib_t\', then
      \'texrel_shlib_t\', then \'shlib_t\'.  Use this option to override this
      detection logic.

  --no-sigwinch-workaround
      Normally, nvidia-installer ignores the SIGWINCH signal before it forks to
      execute commands, e.g. to build the kernel module, and restores the
      SIGWINCH signal handler after the child process has terminated.  This
      option disables this behavior.

  --no-cc-version-check
      The NVIDIA kernel module should be compiled with the same compiler that
      was used to compile the currently running kernel. The layout of some
      Linux kernel data structures may be dependent on the version of gcc used
      to compile it. The Linux 2.6 kernel modules are tagged with information
      about the compiler and the Linux kernel\'s module loader performs a strict
      version match check. nvidia-installer checks for mismatches prior to
      building the NVIDIA kernel module and aborts the installation in case of
      failures. Use this option to override this check.

  --no-distro-scripts
      Normally, nvidia-installer will run scripts from /usr/lib/nvidia before
      and after installing or uninstalling the driver.  Use this option to
      disable execution of these scripts.

  --no-opengl-files
      Do not install any of the OpenGL-related driver files.

  --kernel-module-source-prefix=KERNEL-MODULE-SOURCE-PREFIX
      Specify a path where the source directory for the kernel module will be
      installed. Default: install source directory at /usr/src

  --kernel-module-source-dir=KERNEL-MODULE-SOURCE-DIR
      Specify the name of the directory where the kernel module sources will be
      installed. Default: directory name is "nvidia-VERSION"

  --no-kernel-module-source
      Skip installation of the kernel module source.

  --dkms
      nvidia-installer can optionally register the NVIDIA kernel module
      sources, if installed, with DKMS, then build and install a kernel module
      using the DKMS-registered sources.  This will allow the DKMS
      infrastructure to automatically build a new kernel module when changing
      kernels.  During installation, if DKMS is detected, nvidia-installer will
      ask the user if they wish to register the module with DKMS; the default
      response is \'no\'.  This option will bypass the detection of DKMS, and
      cause the installer to attempt a DKMS-based installation regardless of
      whether DKMS is present.

  --module-signing-secret-key=MODULE-SIGNING-SECRET-KEY
      Specify a path to a private key to use for signing the NVIDIA kernel
      module. The corresponding public key must also be provided.

  --module-signing-public-key=MODULE-SIGNING-PUBLIC-KEY
      Specify a path to a public key to use for verifying the signature of the
      NVIDIA kernel module. The corresponding private key must also be
      provided.

  --module-signing-script=MODULE-SIGNING-SCRIPT
      Specify a path to a program to use for signing the NVIDIA kernel module.
      The program will be called with the arguments: program-name <HASH>
      <PRIVATEKEY> <PUBLICKEY> <MODULE>; if the program returns an error
      status, it will be called again with the arguments: program-name
      <PRIVATEKEY> <PUBLICKEY> <MODULE>. Default: use the "sign-file" script in
      the kernel source directory.

  --module-signing-key-path=MODULE-SIGNING-KEY-PATH
      Specify a path where signing keys generated by nvidia-installer will be
      installed. Default: install keys to \'/usr/share/nvidia\'.

  --module-signing-hash=MODULE-SIGNING-HASH
      Specify a cryptographic hash algorithm to use for signing kernel modules.
      This requires a module signing tool that allows explicit selection of the
      hash algorithm, and the hash algorithm name must be recognizable by the
      module signing tool. Default: select a hash algorithm automatically,
      based on the kernel\'s configuration.

  --module-signing-x509-hash=MODULE-SIGNING-X509-HASH
      Specify a cryptographic hash algorithm to use for signing X.509
      certificates generated by nvidia-installer. The hash algorithm name must
      be one of the message digest algorithms recognized by the x509(1)
      command.

  --no-check-for-alternate-installs
      Maintainers of alternate driver installation methods can report the
      presence and/or availability of an alternate driver installation to
      nvidia-installer. Setting this option skips the check for alternate
      driver installations.

  --no-unified-memory
      Do not install the NVIDIA Unified Memory kernel module. This kernel
      module is required for CUDA on 64-bit systems, and if it is not
      installed, the CUDA driver and CUDA applications will not be able to run.
      The \'--no-unified-memory\' option should only be used to work around
      failures to build or install the Unified Memory kernel module on systems
      that do not need to run CUDA.

  --no-drm
      Do not install the nvidia-drm kernel module. This kernel module provides
      several features, including X11 autoconfiguration, support for PRIME, and
      DRM-KMS. The latter is used to support modesetting on windowing systems
      that run independently of X11. The \'--no-drm\' option should only be used
      to work around failures to build or install the nvidia-drm kernel module
      on systems that do not need these features.

  -j CONCURRENCY-LEVEL, --concurrency-level=CONCURRENCY-LEVEL
      Set the concurrency level for operations such as building the kernel
      module which may be parallelized on SMP systems. By default, this will be
      set to the number of detected CPUs, or to \'1\', if nvidia-installer fails
      to detect the number of CPUs. Systems with a large number of CPUs will
      have the default concurrency level limited to 32; setting a higher level
      on the command line will override this limit.

  --force-libglx-indirect
      If the package includes a libglvnd-based OpenGL library, then always
      install a libGLX_indirect.so.0 symlink, overwriting one if it exists.

  --no-libglx-indirect
      Do not install a libGLX_indirect.so.0 symlink.

  --install-libglvnd, --no-install-libglvnd
      If the package includes a libglvnd-based OpenGL library, then it will try
      to determine whether the libglvnd libraries are already available, and
      will install them if they\'re not. Use --install-libglvnd to always
      install the libglvnd libraries, overwriting any that already exist. Use
      --no-install-libglvnd to exclude the libglvnd libraries, even if they
      appear to be missing.

  --glvnd-glx-client, --no-glvnd-glx-client
      By default, the NVIDIA GLX driver will be installed with the new GLVND
      architecture, to support coexisting with other GLVND-compliant GLX
      drivers. However, some applications which do not conform to the Linux
      OpenGL ABI may not be fully compatible with a GLVND-based GLX driver. The
      --no-glvnd-glx-client option will select a non-GLVND GLX client library
      (libGL.so.1), which may help to avoid compatibility issues with such
      applications.

  --glvnd-egl-config-path=GLVND-EGL-CONFIG-PATH
      If the package includes a libglvnd-based EGL library, then install the
      EGL vendor library config file to this directory. If the libglvnd
      libraries are already present, then by default the installer will try to
      determine the path by running `pkg-config --variable=datadir libglvnd`.
      If that fails, then it will default to /usr/share/glvnd/egl_vendor.d.

  --glvnd-egl-client, --no-glvnd-egl-client
      By default, the NVIDIA EGL driver will be installed with the new GLVND
      architecture, to support coexisting with other GLVND-compliant EGL
      drivers. However, some applications may not be fully compatible with a
      GLVND-based EGL driver. The --no-glvnd-egl-client option will select a
      non-GLVND EGL client library, which may help to avoid compatibility
      issues with such applications.

  --egl-external-platform-config-path=EGL-EXTERNAL-PLATFORM-CONFIG-PATH
      If the package includes an EGL external platform library, then install
      the EGL external platform library config file to this directory. Defaults
      to /usr/share/egl/egl_external_platform.d.

  --override-file-type-destination=OVERRIDE-FILE-TYPE-DESTINATION
      Override the default destination for a file type. This option takes an
      argument in the form of \'<FILE_TYPE>:<destination>\', where <FILE_TYPE> is
      a file type from the installer .manifest file, and <destination> is an
      absolute path to the directory where files of that type should be
      installed. This option may be given multiple times in order to override
      the destinations for multiple file types. Use of this option takes
      precedence over any other options that might otherwise influence the
      destination of the specified file type.

  --skip-depmod
      Don\'t run the depmod(1) utility after modifying kernel modules.  This
      should only be used in cases where depmod(1) will be run separately after
      running nvidia-installer.