ubuntu 22.04 server安装Nvidia驱动

ubuntu 22.04 server安装Nvidia驱动

1
2
3
4
5
sudo apt install -y apt-rdepends
# sudo apt install -y net-tools
# sudo apt install -y openssh-server
sudo apt download $(apt-rdepends apt-rdepends | grep -v "^ " | sed 's/debconf-2.0/debconf/g' | grep -v "perlapi-")
sudo apt download $(apt-rdepends net-tools | grep -v "^ " | sed 's/debconf-2.0/debconf/g')

准备工作

1
2
为了避免踩坑,建议按照流程完成准备工作!
这些准备工作并不会影响你的计算机,不做的话可能会导致装驱动后黑屏!

关闭安全模式

1
重启计算机,在开机前狂按’ESC’进入bios设置,找到安全设置,并关闭它。

注:不同品牌电脑进入bios方式和安全设置的位置都不相同

切换独显模式(笔记本电脑单显卡注意,服务器略过)

1
在bios设置中找到显卡设置,系统默认的为集显模式,将其修改为独显模式。

更新软件列表和安装必要软件、依赖

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
sudo apt-get update   #更新软件列表

# sudo apt-get install -y g++ gcc make
sudo apt download $(apt-rdepends g++ gcc make | grep -v "^ " | sed 's/debconf-2.0/debconf/g')

sudo apt download $(apt-rdepends python3-pip | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
sudo apt download $(apt-rdepends build-essential cmake git | \
                      grep -v "^ " | \
                      sed 's/debconf-2.0/debconf/g' | \
                      sed -e 's/libc-dev/libc6-dev/g' \
                          -e 's/libc6-dev-bin/libc6-dev/g' \
                          -e 's/linux-libc6-dev/linux-libc-dev/g' | \
                      grep -vE "^(default-logind|logind)$")

# 安装hwinfo
sudo apt download $(apt-rdepends hwinfo | grep -v "^ " | sed 's/debconf-2.0/debconf/g')

# 安装alsa-utils
sudo apt download $(apt-rdepends alsa-utils | grep -v "^ " | sed 's/debconf-2.0/debconf/g')

禁用nouveau (nouveau是通用的驱动程序)

1
sudo vim /etc/modprobe.d/blacklist.conf

文件末尾添加下面两行内容

1
2
blacklist nouveau
options nouveau modeset=0

文件修改后在终端执行:

1
2
sudo update-initramfs -u
sudo reboot #重启电脑

电脑重启后执行:

1
lsmod | grep nouveau  #输出内容为空,则表示成功禁用

安装lightdm(笔记本电脑默认gdm3,不要选择lightdm,不然会启动不起来,需要恢复模式下rusume执行sudo dpkg-reconfigure lightdm)

lightdm和gdm3一样都是图形界面管理插件,但是lightdm兼容性更好

1
2
# sudo apt-get install lightdm
sudo apt download $(apt-rdepends lightdm | grep -v "^ " | sed 's/debconf-2.0/debconf/g' | grep -v "^awk$")

用上下按键选中lightdm

安装驱动

1
网上安装方式杂七杂八很多,推荐把Ubuntu升级到22版本后使用系统推荐安装方式。

安装 nvidia-cuda-toolkit 工具

1
2
# sudo apt-get install nvidia-cuda-toolkit
sudo apt download $(apt-rdepends nvidia-cuda-toolkit | grep -v "^ " | grep -v -E "^(debconf-2.0|libcuda|libnvidia|opencl-dev|clang-[0-9]|g\+\+-[0-9]|gcc-[0-9])" | sed 's/debconf-2.0/debconf/g')

检查系统推荐显卡驱动,记录下recommend选项

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ sudo ubuntu-drivers devices

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd000028E0sv0000103Csd00008BABbc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-535-open - distro non-free
driver   : nvidia-driver-535-server-open - distro non-free
driver   : nvidia-driver-535 - distro non-free recommended #记下推荐版本
driver   : nvidia-driver-525-server - distro non-free
driver   : nvidia-driver-535-server - distro non-free
driver   : nvidia-driver-525 - distro non-free
driver   : nvidia-driver-525-open - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

安装NVIDIA显卡驱动

方法一:安装NVIDIA显卡驱动(推荐,服务器操作)

apt命令安装 执行如下命令,查看适合的驱动

1
ubuntu-drivers devices

安装驱动

1
2
3
4
# apt-get install nvidia-driver-535
# sudo apt download $(apt-rdepends nvidia-driver-535 | grep -v "^ " | grep -v -e "xorg-video-abi" -e "libc-dev" -e "kldutils" -e "perlapi-5.34" | sed 's/debconf-2.0/debconf/g')
sudo apt-get install -d -o dir::cache::archives="$HOME/ubuntu-drivers" nvidia-driver-580
sudo dpkg -i $HOME/ubuntu-drivers/*.deb

测试驱动是否正常工作

1
nvidia-smi
方法二(带桌面的操作系统可尝试一下)
添加驱动源
1
2
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
在Ubuntu系统中找到 软件和更新 选择 驱动
1
2
按照图示找到附加驱动,选择推荐版本
注意:不要选择第一项,可能会导致黑屏

安装完成后sudo reboot重启计算机

方法三(下载nvidia官方驱动文件可以尝试一下)
1
2
# 根据前边的教程获取推荐版本,然后下载对应的版本进行如下方式安装
./NVIDIA-Linux-x86_64-580.105.08.run --no-opengl-files

重启后测试安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$ nvidia-smi

Wed Jul 19 11:08:47 2023       
+---------------------------------------------------------------------------------------+
      | NVIDIA-SMI 535.54.03              Driver Version: 535.54.03    CUDA Version: 12.2     |
      |-----------------------------------------+----------------------+----------------------+
      | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
      | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
      |                                         |                      |               MIG M. |
      |=========================================+======================+======================|
      |   0  NVIDIA GeForce RTX 4060 ...    Off | 00000000:01:00.0  On |                  N/A |
      | N/A   40C    P8               2W /  80W |    571MiB /  8188MiB |      0%      Default |
      |                                         |                      |                  N/A |
      +-----------------------------------------+----------------------+----------------------+
      
      +---------------------------------------------------------------------------------------+
      | Processes:                                                                            |
      |  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
      |        ID   ID                                                             Usage      |
      |=======================================================================================|
      |    0   N/A  N/A      1489      G   /usr/lib/xorg/Xorg                          202MiB |
      |    0   N/A  N/A      2539      G   /usr/bin/gnome-shell                         57MiB |
      |    0   N/A  N/A      3848      G   ...irefox/2908/usr/lib/firefox/firefox      205MiB |
      |    0   N/A  N/A     20451      G   ...dererForSitePerProcess --no-sandbox       94MiB |
      +---------------------------------------------------------------------------------------+

显示如上则表示安装完成。

出错急救

1
如果驱动安装后不幸导致黑屏,尝试以下操作删除驱动,恢复安装前状态。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#在黑屏界面 ctrl+alt+f1 进入tty命令行,正确输入用户名和密码,再进行接下来的操作
#在tty中先修改字符集
export LANGUAGE="UTF-8"
#执行删除操作
sudo apt-get --purge remove nvidia*
sudo apt autoremove
#重启
reboot

#如果上述操作不超过,尝试以下命令删除
sudo apt-get remove --purge nvidia*

删除驱动后,进入系统界面,从第一步开始重新安装即可。

安装Anaconda3

1
2
3
wget https://repo.anaconda.com/archive/Anaconda3-2025.12-1-Linux-x86_64.sh
chmod +x Anaconda3-2025.12-1-Linux-x86_64.sh
sh Anaconda3-2025.12-1-Linux-x86_64.sh

安装CUDA

1
2
3
4
5
6
7
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/13.0.2/local_installers/cuda-repo-ubuntu2204-13-0-local_13.0.2-580.95.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-13-0-local_13.0.2-580.95.05-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-13-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-0

安装nvidia-cudnn

1
2
3
4
5
6
7
8
# 1. 先安装 nvidia-pyindex(添加 NVIDIA 源)
pip install nvidia-pyindex

# 2. 再下载 nvidia-cudnn 到指定目录(./)
pip download nvidia-cudnn -d ./

# 3. pip自动处理顺序(推荐)
pip install ./setuptools-80.9.0-py3-none-any.whl ./wheel-0.45.1-py3-none-any.whl ./nvidia_cudnn-8.2.0.51-py3-none-manylinux1_x86_64.whl

搭建PyTorch框架

1
2
3
4
# wget https://download.pytorch.org/whl/cu130/torch-2.9.0%2Bcu130-cp314-cp314-manylinux_2_28_x86_64.whl
pip download torch==2.9.0 torchvision==0.24.0 torchaudio==2.9.0 --index-url https://download.pytorch.org/whl/cu130 -d ./
# pip install *.whl
pip install --no-index --find-links=./ *.whl

配置网络

配置wifi

输入如下指令来安装network-manager

1
2
# sudo apt install network-manager
sudo apt download $(apt-rdepends network-manager | grep -v "^ " | sed 's/debconf-2.0/debconf/g' | grep -vE "^(default-logind|logind)$")

启动NetworkManager服务

1
2
sudo systemctl start NetworkManager
sudo systemctl enable NetworkManager

查找可用的WiFi

1
nmcli dev wifi list

选择一个WiFi并连接,将<SSID>改为你的wifi名,<password>改为密码

1
nmcli dev wifi connect <SSID> password <password>

确认网络是否连接

1
nmcli connection show

设置为自动连接,这样每次开机后即自动连接该wifi

1
nmcli connection modify <SSID> connection.autoconnect yes

检查自动连接是否启用,如果connection.autoconnect为yes则已启用

1
nmcli connection show <SSID>

配置静态IP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cd /etc/netplan
mv 50-cloud-init.yaml 50-cloud-init.yaml.bak
cat > 01-network-manager-all.yaml  <<'EOF'
# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        ens33:
        # ens5f0:
            dhcp4: no
            addresses:              
              # - 192.168.1.4/24
              - 192.168.128.50/24
            # nameservers:
            #   addresses: [114.114.114.114,8.8.8.8]
    version: 2
EOF
chmod 600 01-network-manager-all.yaml
netplan apply
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

搭建VNC

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# 然后安装需要用到的图形化服务软件
# apt install -y xfce4 xfce4-goodies
apt download $(apt-rdepends xfce4 xfce4-goodies | grep -v "^ " | sed "s/debconf-2.0/debconf/g" | xargs apt-cache show 2>/dev/null | grep "Package:" | awk '{print $2}' | sort -u)

# 然后安装tigervnc。tigervnc感觉比tightvnc要配置简单一些
# apt install -y tigervnc-standalone-server tigervnc-common
apt download $(apt-rdepends tigervnc-standalone-server tigervnc-common | grep -v "^ " | sed "s/debconf-2.0/debconf/g")

# 安装tigervnc-tools
apt download $(apt-rdepends tigervnc-tools | grep -v "^ " | sed "s/debconf-2.0/debconf/g")

# 安装dbus-x11 dbus
apt download $(apt-rdepends dbus-x11 dbus | grep -v "^ " | sed "s/debconf-2.0/debconf/g")

# 安装下载的deb包
dpkg -i ./*.deb

# --------------------------------
# 创建用户
# 创建用户:sudo adduser 用户名
# 删除用户:sudo deluser 用户名
# 创建test用户,根据提示默认回车,最后输入Y确认:
sudo adduser test
# 添加sudo权限
# 以添加 test 这个用户到 sudo 用户组为例子,输入下面命令:
sudo usermod -aG sudo test
sudo tee /etc/sudoers.d/test <<< 'test ALL=(ALL) ALL'
sudo chmod 440 /etc/sudoers.d/test

# 如果要删除用户:
su root                         # 切换到root用户或其他用户
# 停止所有 test 用户的进程(如果有)
sudo pkill -u test
sudo sleep 2
# 删除用户及其所有文件
sudo userdel test               # 只删除用户
# sudo userdel -r test            # 完全删除用户及其主目录
# 删除 sudo 配置
sudo rm -f /etc/sudoers.d/test

# 验证删除:
# 检查用户是否已删除
getent passwd test
# 检查用户组
getent group test
# 检查主目录是否还存在
ls -la /home/
# --------------------------------

# 运行并设置密码(当前用户已设置密码则跳过),根据提示输入n
vncserver

# 然后创建启动脚本, 编辑用户文件夹下的.vnc文件夹下的xstartup文件(如果没有就创建一个)内容如下:
cat > $HOME/.vnc/xstartup <<'EOF'
#!/usr/bin/bash
xfce4-session
EOF
# 注意xfce4-session后面不要跟&号,不然会在运行vncserver时提示过早退出,然后记得给它加执行的权限。

chmod +x $HOME/.vnc/xstartup
# 首次设置VNC时,它将在端口5901上启动默认服务器实例。

# 如下是一个启动vnc服务器的例子:
# vncserver :1 -localhost no -geometry 1920x1080
vncserver :1  -geometry 1920x1080  -depth 24 -localhost no
# echo "vncserver :1  -geometry 1920x1080  -depth 24 -localhost no" >> $HOME/.bashrc
<<'CONTENT'
-depth 24 表示 24 位色深(24 bits per pixel, 24bpp)
| depth 值 | 含义            | 颜色数量    | 典型用途      |
| ------- | ------------- | ------- | --------- |
| 8       | 256 色         | 2^8     | 低带宽 / 老设备 |
| 16      | High Color    | 65536 色 | 嵌入式 / 低性能 |
| 24      | True Color    | 1670 万色 | **推荐默认**  |
| 32      | 24 位色 + Alpha | 同 24 位  | 某些桌面环境    |
CONTENT

# 查看已启动的实例
vncserver -list

# 关闭启动的实例
vncserver -kill :1

然后就可以通过vnc的客户端登陆了,为了能够远端登陆不仅仅是本机登陆,设置-localhost no 是必要的。由于VNC是不加密的,会在登陆时提示如下,当然也可以自行百度实现在此基础上的外加SSH通道的加密。

输入刚才设置的密码就可以登陆了

之后就是熟悉的ubuntu界面了,可以自由安装自己喜欢的程序了

1
在客户端地址栏输入192.168.x.x:5901,再输入前边创建的密码即可

搭建XRDP

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 然后安装需要用到的图形化服务软件
apt download $(apt-rdepends xfce4 xfce4-goodies | grep -v "^ " | sed "s/debconf-2.0/debconf/g" | xargs apt-cache show 2>/dev/null | grep "Package:" | awk '{print $2}' | sort -u)

# 安装xrdp
apt download $(apt-rdepends xrdp | grep -v "^ " | sed "s/debconf-2.0/debconf/g")

echo "startxfce4" > ~/.xsession

sudo systemctl start xrdp

# 查看xrdp启动状态
sudo systemctl status xrdp

# 放开3389端口
sudo ufw allow 3389/tcp
# sudo ufw allow 3350/tcp

# 重启xrdp
sudo systemctl restart xrdp

把文件制作成iso,上传并将挂载到服务器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# windows使用软碟通制作iso文件

# 从windows将iso文件上传到服务器
rsync -rP nvidia-driver.iso root@192.168.234.38:~/

# 服务器操作
mount -t auto nvidia-driver.iso /mnt/
cd /mnt/
dpkg -i /*.deb
# sudo apt --fix-broken install
./NVIDIA-Linux-x86_64-580.105.08.run

Linux 系统下硬盘自动挂载完全指南

1
2
3
4
5
6
7
dd if=/dev/zero of=test.img bs=1M count=1024
image=$(realpath test.img);
mkfs.ext4 ${image}
mkdir -p /mnt/myimg
image=$(realpath test.img); mount -o loop ${image} /mnt/myimg
# image=$(realpath test.img); echo "UUID=$(blkid ${image} | awk -F "\"" '{print $2}') ${image} $(blkid ${image} | awk -F '=' '{print $4}') defaults,noatime 0 0" | cat >> /etc/fstab
image=$(realpath test.img); echo "${image} /mnt/myimg loop,defaults,noatime 0 0" | cat >> /etc/fstab

挂载nvme硬盘示例

1
2
3
4
5
6
7
8
9
sudo fdisk /dev/nvme1n1
sudo mkfs.ext4 /dev/nvme1n1p1
mkdir /nvme1n1p1
echo "UUID=c3e4baa4-40c7-48a5-a804-081af08b5e31 /nvme1n1p1 ext4 defaults 0 0" >> /etc/fstab

sudo fdisk /dev/nvme2n1 
sudo mkfs.ext4 /dev/nvme2n1p1
sudo mkdir /nvme2n1p1
echo "UUID=3eca7f75-ecdc-4400-89c8-a7f481a25d43 /nvme2n1p1 ext4 defaults 0 0" >> /etc/fstab

大于2T的分区,需要在进入fdisk交互环境下时先执行g选项并回车,将硬盘转gpt,然后才能完整分区,否则只能分区2T空间

多用户创建与删除

用户列表

user1
user2
user3
user4

创建用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/bash
users=(
  user1
  user2
  user3
  user4
)

for i in "${users[@]}"; do
  # sudo adduser ${i}
  sudo adduser --quiet --disabled-password --shell $(which bash) --home /home/${i} --gecos "User" ${i}
  sleep 1
  # 添加sudo权限
  # 以添加 test 这个用户到 sudo 用户组为例子,输入下面命令:
  sudo usermod -aG sudo ${i}
  sudo tee /etc/sudoers.d/${i} <<< "${i} ALL=(ALL) ALL"
  sudo chmod 440 /etc/sudoers.d/${i}
done

删除用户

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/bash
users=(
  user1
  user2
  user3
  user4
)

for i in "${users[@]}"; do
  echo "${i}";
  sudo pkill -u ${i}
  sudo sleep 2
  # 删除用户及其所有文件
  # sudo userdel ${i}               # 只删除用户
  sudo userdel -r ${i}            # 完全删除用户及其主目录
  # 删除 sudo 配置
  sudo rm -f /etc/sudoers.d/${i}
done
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计