最近在帮忙给一台单卡3090的工作站装Linux系统,结果踩了不少坑,折腾了一天多才成功装上。这篇文章就来分享一下,有哪些坑,然后自己是如何解决的。
当然其中最大的原因都是因为这台电脑是组织管理的,自己没有权限设置BIOS,并且强制启动Secure Boot,就算是有win10管理员账号也解决不了任何问题。
安装Linux系统
首先拿到手看看配置,是10900X和3090。有两块硬盘,一个500G左右的NVME SSD,一个2T的HDD。每个硬盘一个分区,一个受组织管理的Win10安装在SSD上。所以为了在SSD上安装Linux,先将SSD分成了两个分区,准备制作Ubuntu20.04的U盘启动盘。
Fig. 1. Ubuntu. Adapted from [13]
因为之前在家里台式机的win10上用过一个叫做Universal-USB-Installer-2.0.0.0.exe
的软件挺好用,直接就复制到了自己Macbook的Win10虚拟机里,并且制作了Ubuntu启动盘。结果U盘插上启动的时候引导失败了,被Secure Boot阻止了,因为没有合格的签名,提示/casper/vmlinuz has invalid signature
。后来向同学借用了win10电脑才解决问题。
所以使用虚拟机做U盘启动盘可能无法通过Secure Boot,看来虚拟机也并不是万能的。
不过最终也在Google和一些参考资料[1][2][3]的帮助下成功装上了Win10和Ubuntu双系统。
尝试安装GPU驱动
依然在很多搜索到的资料[4, 5]的帮助下,装上Ubuntu的时候第一件事就是安装N卡驱动。在N卡官网上,自动下载了.run
后缀的文件。因为自己基本没怎么用过Linux,直接就双击打开了,安装速度极慢。放弃,进终端用sh
运行.run
文件才终于解决了。
Fig. 2. Nvidia driver download page. Adapted from [14]
然而安装的时候有很多选项并不是很能理解,虽然凭借着自己的直觉进行选择,但是不管试了几次,使用nvidia-smi
依然看不到显卡,在Ubuntu的信息界面也只是显示了GPU是LLVM设备。这个时候就开始怀疑自己是不是安装的方法错误了。
这时候上网听说Linux Mint系统非常适合Linux小白[6],并且对各种第三方驱动都非常友好。Linux Mint的官网上可以选择三种GUI,Xfce, MATE, Cinnamon,根据官方的介绍[7],最终考虑到实用性和美观性选择了Cinnamon。在这个信息的驱使下,重新制作了Mint的启动盘,并且完全删除了Ubuntu安装了Mint。
Fig. 3. Linux Mint. Adapted from [15]
一进系统,就开始进入Driver Manager
去检查能否直接使用推荐的N卡驱动,的确有,并且安装上了,但是依然没有看到显卡。
然后尝试按照之前同样的方法,手动安装N卡驱动。这时留意到了”UEFI Secure Boot”的字样,感觉这其中有点关系。网上一查[8][9][12],居然是Secure Boot的锅,而绝大多数人的解决方案都是关闭Secure Boot。
在Secure Boot下安装GPU驱动
还好找到了这几篇文章[10][11],上面详细的介绍了如何自己生成签名,并且添加至Linux MOK,让第三方驱动在UEFI Secure Boot启动的情况下依然可以工作。
主要的安装过程是这样的。
1.禁用图形界面,并且安装一些前置库
按Ctrl+Alt+F2进入终端。
1 | sudo su |
2. 安装驱动并签名
1 | sudo sh "NVIDIA-xxx.run" # run the NVIDIA driver installer |
在安装过程中根据自己的需要进行选择,不过需要在dkms安装的对话框中选择否。
在询问道是否需要签名时,选择生成密钥。程序将会生成一个私钥和公钥,保存在/usr/share/nvidia
中,公钥是.key
文件,私钥是.der
。记录一下这两个文件的路径。这时候安装程序会提示是否删除私钥,选否。然后安装程序会提示运行失败,不过这个没有问题,等下一步将密钥添加到信任列表中就可以工作了。
3. 添加密钥到信任列表中
首先要将这个密钥添加到MOK,输入
1 | sudo mokutil --import /usr/share/nvidia/xxx.der |
然后输入一个密码两次。再直接重启电脑,这时候会进入Linux MOK Management界面,选择Enroll MOK
, Continue boot
再输入上一步设置的密码即可将密钥添加到信任列表中。
再启动系统输入nvidia-smi
,发现显卡已经可以使用了。
Fig. 4. nvidia-smi screenshot.
安装Anaconda,一键装上PyTorch,测试能否使用CUDA。
Fig. 5. Checking pytorch cuda availability screenshot.
终于大功告成了。
参考文献
- [1] R. Smith and P. Vakalopoulos, "How to install ubuntu in UEFI mode", Ask Ubuntu, 2021. [Online]. Available: https://askubuntu.com/questions/927924/how-to-install-ubuntu-in-uefi-mode.
- [2] ravery, "Installing Ubuntu on External Hard Drive - UEFI", Ask Ubuntu, 2021. [Online]. Available: https://askubuntu.com/questions/990790/installing-ubuntu-on-external-hard-drive-uefi.
- [3] "详解安装Ubuntu Linux系统时硬盘分区最合理的方法 - 云+社区 - 腾讯云", Cloud.tencent.com, 2021. [Online]. Available: https://cloud.tencent.com/developer/article/1711884.
- [4] "How to Install Nvidia Drivers on Ubuntu 20.04", Linuxize, 2021. [Online]. Available: https://linuxize.com/post/how-to-nvidia-drivers-on-ubuntu-20-04/.
- [5] L. Rendek, "How to uninstall the NVIDIA drivers on Ubuntu 20.04 Focal Fossa Linux", linuxconfig, 2021. [Online]. Available: https://linuxconfig.org/how-to-uninstall-the-nvidia-drivers-on-ubuntu-20-04-focal-fossa-linux.
- [6] "Ubuntu vs Mint:哪个更好?", 知乎专栏, 2021. [Online]. Available: https://zhuanlan.zhihu.com/p/52076038.
- [7] "选择正确的版本 — Linux Mint Installation Guide 文档", Linuxmint-installation-guide.readthedocs.io, 2021. [Online]. Available: https://linuxmint-installation-guide.readthedocs.io/zh_CN/latest/choose.html.
- [8] "NVIDIA driver is not loaded. Ubuntu 18.10", NVIDIA Developer Forums, 2021. [Online]. Available: https://forums.developer.nvidia.com/t/nvidia-driver-is-not-loaded-ubuntu-18-10/70495/4.
- [9] "Ubuntu16.04安装nvidia显卡安转与Secure Boot开启的矛盾_caobo_0512的博客-CSDN博客", Blog.csdn.net, 2021. [Online]. Available: https://blog.csdn.net/caobo_0512/article/details/106246195.
- [10] "Linux secure boot(安全启动)时添加Nvidia显卡驱动_天道酬勤-CSDN博客", Blog.csdn.net, 2021. [Online]. Available: https://blog.csdn.net/qq_38880380/article/details/78675202.
- [11] "安装Ubuntu系统的一个坑(安全启动)_荒陌的博客-CSDN博客_ubuntu关闭安全启动", Blog.csdn.net, 2021. [Online]. Available: https://blog.csdn.net/sinat_38640606/article/details/82794511?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.control.
- [12] "安装Ubuntu系统的一个坑(安全启动)_荒陌的博客-CSDN博客_ubuntu关闭安全启动", Blog.csdn.net, 2021. [Online]. Available: https://blog.csdn.net/sinat_38640606/article/details/82794511?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.control.
- [13] "🐧Installing Ubuntu - A Step by Step guide 🐧", DEV Community, 2021. [Online]. Available: https://dev.to/kaiwalyakoparkar/installing-ubuntu-a-step-by-step-guide-2b29.
- [14] "Download Drivers | NVIDIA", Nvidia.com, 2021. [Online]. Available: https://www.nvidia.com/Download/index.aspx.
- [15] "Linux Mint 20.1 “Ulyssa” Cinnamon overview | Sleek, modern, innovative.", Youtube.com, 2021. [Online]. Available: https://www.youtube.com/watch?v=Cs09YF_YlMI.