AWS重启AMI后,NVidia驱动程序无法运行

20

大家好,我有以下问题:

我使用这个AMI启动了一个P2实例。我安装了一些工具,例如screen、torch等。然后我成功地使用GPU运行了一些实验,并创建了一个实例的映像,以便稍后终止它并重新运行。

后来我从之前创建的AMI启动了一个新实例。一切看起来都很好——screen、torch和我的实验都在系统上,但是我无法像以前那样运行相同的实验:

NVIDIA-SMI失败,因为它无法与NVIDIA驱动程序通信。请确保已安装和运行最新的NVIDIA驱动程序。

在我看来,驱动程序可能已安装(因为之前安装了所有其他工具),但它们没有运行。这是正确的假设吗?我该如何启动它们?


我注意到内核已经更改,从4.4.0-1049-aws变为4.4.0-1061-aws - Framester
2个回答

19
我们最近也遇到了这个问题。在我们的情况下,似乎AWS实例上的默认内核已经升级(从4.4.0-1049-aws到4.4.0-1061-aws),但是新内核没有安装nvidia模块。
ubuntu@ip-XXX-XXX-XXX-XXX:~$ ls -laR /lib/modules/4.4.0-1061-aws | grep -i nvidia
ubuntu@ip-XXX-XXX-XXX-XXX:~$ ls -laR /lib/modules/4.4.0-1049-aws | grep -i nvidia
-rw-r--r--  1 root root    87368 Jun 27 10:21 nvidia-drm.ko
-rw-r--r--  1 root root  1155304 Jun 27 10:21 nvidia-modeset.ko
-rw-r--r--  1 root root  1163016 Jun 27 10:21 nvidia-uvm.ko
-rw-r--r--  1 root root 18014088 Jun 27 10:21 nvidia.ko

请检查您的内核版本(使用uname -a命令),以确定是否适用于您。GRUB配置允许启动旧的内核映像(1049),但默认情况下会加载新的内核映像(1061)。/boot/grub/cfg文件中的相关部分:

ubuntu@ip-XXX-XXX-XXX-XXX:~$ grep -i -e "ubuntu, with linux" /boot/grub/grub.cfg
    menuentry 'Ubuntu, with Linux 4.4.0-1061-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1061-aws-advanced-XXXX' {
    menuentry 'Ubuntu, with Linux 4.4.0-1061-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1061-aws-recovery-XXXX' {
    menuentry 'Ubuntu, with Linux 4.4.0-1049-aws' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1049-aws-advanced-XXXX' {
    menuentry 'Ubuntu, with Linux 4.4.0-1049-aws (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-1049-aws-recovery-XXXX' {

你可以使用 grub-reboot 命令,在下一次重启时强制加载旧内核:

sudo /usr/sbin/grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-1049-aws"
sudo reboot

这将使用旧内核启动实例,其中您拥有Nvidia模块。


3
仍适用于4.4.0-1077-aws内核版本。我按照指示将内核恢复为4.4.0.1075-aws版本。 - liorko
虽然@liorko所说的使GPU可用,但这并不是一个完美的解决方案,因为它可能与您之前安装的内容不兼容。例如,当我运行我的PyTorch代码时,我会遇到以下错误:The NVIDIA driver on your system is too old (found version 9000). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver,因此需要谨慎处理。 - Milos
只是补充一下,虽然4.4.0-1075-aws会导致nvidia驱动程序不可用。 - Milos
非常好的答案,救了我的一天! - jared3412341
实际上,这个解决方案似乎只在下一次重启时有效,但不会永久更改内核。为了永久更改它,我按照这个建议https://askubuntu.com/a/329943删除了最新的内核(我不想使用它)。 - jared3412341

0
重新安装NVIDIA驱动程序解决了这个问题。

你解决了如何在不重新安装驱动程序的情况下重新启动吗? - Carl Thomé
1
这算什么回答?你自己回答的话,至少提供更多细节,这样其他人才能从中学到东西。 - Michael IV
3
@MichaelIV 这段话意思是说:“短不代表不好。我觉得没什么更多可说的了,重新安装 Nvidia 驱动程序解决了 OP 的问题,就是这样。也许他可以添加步骤,例如 '1. 卸载 Nvidia 驱动程序 2. 重新安装 Nvidia 驱动程序 3. 重启',但我不确定告诉 SO 上的人如何重新安装某些驱动程序是否有用。” - N.K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接