grub配置文件自己想组装个服务器,结果遇到了ubuntu系统插英伟达计算卡P40后显示器黑屏现象,主板故障灯报错如下:
解决方案:
把英伟达的计算卡先拔出来,用核显或者有HDMI的独显
开机按delete进入bios模式:
找到Advanced 菜单,点击菜单下的PCI Subsystem Settings
修改Above 4G Decoding 和Re-Size BAR Support 为Enabled
然后重启系统,在ubuntu系统中装上英伟达的驱动,如果是单显卡,可直接使用
sudo ubuntu-drivers autoinstall
如果是多显卡,直接使用sudo ubuntu-drivers autoinstall 重启后会黑屏,仅显示光标或无法进入图形界面,如果遇到黑屏,左上方只有光标闪动:
当然,如果系统已经装了驱动,再使用sudo ubuntu-drivers autoinstall重启后也会黑屏,无论手动装驱动还是使用ubuntu-drivers autoinstall自动检测GPU装驱动,一定彻底卸载掉现有的 NVIDIA 驱动以清除冲突后再装!!!
不然会报错:
使用
nvidia-smi
会得到报错:Failed to initialize NVML: Driver/library version mismatch
可通过以下命令来检查驱动和GPU内核版本是否一致,一般来说是肯定不一致的,因为你没有卸载驱动直接使用ubuntu-drivers autoinstall安装的驱动,会导致驱动更新,但内核版本还是保留为原来的版本:
dpkg -l | grep nvidia
cat /proc/driver/nvidia/version
遇到这个报错可参考这个解决:已解决【nvidia-smi】Failed to initialize NVML: Driver/library version mismatch解决方法-腾讯云开发者社区-腾讯云
彻底卸载掉现有的 NVIDIA 驱动命令:
sudo apt-get remove --purge '^nvidia-.*'
sudo apt-get autoremove
sudo apt-get autoclean
安装适用于 NVIDIA 显卡的开源驱动nouveau。
sudo apt-get install xserver-xorg-video-nouveau
确保图形界面环境完整并重置 Xorg 配置。
sudo apt-get install ubuntu-desktop
sudo dpkg-reconfigure xserver-xorg
sudo reboot
重启即可解决黑屏问题,然后可查看GPU硬件可装的驱动和版本:
ubuntu-drivers devices
但是nouveau是开源的驱动,不支持CUDA加速计算,我们还是要装英伟达自己的驱动,装驱动前要知道自己的英伟达显卡到底支不支持UEFI,P40计算卡就不支持
如果不支持,则把Video改为Legacy,其他选项最好也选择legacy,保持兼容性一致,BIOS中的CSM设置如下所示:
对于 不支持UEFI的显卡,还需要编辑Ubuntu的grub配置文件,如果黑屏无法进入,在Ubuntu GRUB 图形界面选择advanced 模式进入recovery mode,选择root进入root terminal命令行编辑,如果无法进入GRUB 图形界面,最坏的情况是把计算卡先拔出来,然后拔掉主板上的纽扣电池,等待15s后重新插入,主板会自动恢复到最初的BIOS设置,然后先成功进入Ubuntu系统,编辑好grub配置文件再reboot ,当然如果黑屏要根据情况分析,如果主板故障灯报A6,有可能是显卡没有插好,重新插拔再重启即可
sudo vi /etc/default/grub
插入计算卡后grub配置文件如下:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
#GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="text"
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
更新grub配置文件
sudo update-grub
然后下载显卡相应的驱动 ,可以下载亮机卡的推荐驱动,也可以下载计算卡的驱动,根据个人需要,但是要设置好BIOS中相应的设置,我这里直接下载的计算卡的驱动,因为要用P40做加速计算:
sudo apt install nvidia-driver-570-server
禁用开源驱动Nouveau(与NVIDIA驱动冲突):
先检查Nouveau开源显卡驱动在没在用:
lsmod | grep nouveau
-
如果有输出(如
nouveau
及相关模块),说明系统正在使用Nouveau驱动。 -
若无输出,则Nouveau未加载。
若有输出,需禁用nouveau
sudo vi /etc/modprobe.d/blacklist.conf
增加以下内容并保存:
blacklist nouveau
options nouveau modeset=0
装好英伟达驱动并完成禁用开源驱动Nouveau后,关机:
sudo shutdown now
断电后再次插入英伟达计算卡P40,开机,发现黑屏不显示问题已经解决
检查英伟达驱动是否安装成功:
sudo nvidia-smi
这里应该是成功的,但是发现一个兼容性问题,服务器重启后,网卡无法自动连接,网络连接不上的问题,一开始以为是ubuntu grub或者BIOS设置的问题,排错后发现都不是,只有拔掉英伟达P40计算卡后,重启开机网络能够配置好,且启动系统时会存在A start job is running for wait for network to be Configured长时间等待问题,长期等待网络连接的原因:
先解决A start job is running for wait for network to be Configured长时间等待问题:
sudo systemctl status systemd-networkd-wait-online.service
应该时有报错error,所以编辑一下网络连接等待的配置文件:
sudo vim /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
在[Service]
下添加一行,设置为等待5秒超时:
保存后重启系统即可
sudo reboot now
解决长时间等待问题,长期等待网络连接问题后,我们继续解决Ubuntu重启后网络不会自动连接的问题,经过以上排错后,发现这个问题应该和硬件配置和系统配置关系不大,也不是英伟达显卡驱动和驱动版本的事,最后发现是下载了NetworkManager后,全局网络管理配置文件中仅允许管理 WiFi(wifi
)、蜂窝网络(gsm/cdma
),而排除了其他类型设备(包括以太网)因此需要修改一下全局网络管理配置文件,具体修改措施参考:
Ubuntu连接不上网络问题(Network is unreachable)-优快云博客
当然,还要记得避免服务器默认使用的systemd-networkd和NetworkManager冲突问题,如果通过修改配置文件,网络已经可以自动连接了,那么不需要变动,如果还不能自动连接,需要考虑两个服务管理网口冲突的问题,需要禁用其中一个服务,我这里修改好NetworkManager的配置文件后就可以自动连接了,所以这里我并没有禁用任何一个服务,如果你需要禁用其中之一的服务,可以参考:
-
禁用
systemd-networkd
:sudo systemctl stop systemd-networkd sudo systemctl disable systemd-networkd sudo systemctl enable --now NetworkManager
-
禁用
NetworkManager
:sudo systemctl stop NetworkManager sudo systemctl disable NetworkManager sudo systemctl enable --now systemd-networkd
查看两个不同的服务管理的接口:
networkctl list # 查看 systemd-networkd 管理的接口
nmcli device status # 查看 NetworkManager 管理的接口
然后重启系统即可
sudo reboot now