避坑指南:在Ubuntu 20.04上安装librealsense SDK时遇到的几个典型错误及解决方法
第一次在Ubuntu 20.04上配置Intel RealSense环境时,很多开发者都会遇到各种意想不到的问题。从内核模块签名失败到USB 3.0连接异常,再到特定版本SDK对老型号相机的兼容性问题,每一个坑都可能让你花费数小时甚至数天的时间去排查。本文将分享我在多个项目实践中遇到的五个最具代表性的安装问题及其解决方案,帮助你在遇到类似情况时能够快速定位并解决问题。
1. 内核模块签名失败:Secure Boot引发的噩梦
当你在终端看到"Required key not available"或"module verification failed"这样的错误信息时,很可能是Ubuntu的Secure Boot安全机制在作祟。Secure Boot会阻止加载未经签名的内核模块,而librealsense的DKMS模块恰好属于这类。
1.1 错误现象
尝试安装librealsense2-dkms时,系统提示:
Building for 5.4.0-42-generic Building initial module for 5.4.0-42-generic ERROR: Cannot create report: [Errno 17] File exists run-parts: /etc/kernel/postinst.d/dkms exited with return code 101.2 解决方案
有两种方法可以解决这个问题:
方法一:临时禁用Secure Boot
- 重启电脑,进入BIOS设置
- 找到Secure Boot选项并将其禁用
- 保存设置并重启
方法二:为模块签名(推荐)
# 安装必要工具 sudo apt-get install mokutil # 生成密钥 openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj "/CN=Descriptive name/" # 导入密钥 sudo mokutil --import MOK.der # 重启后按照提示完成密钥注册提示:方法二虽然步骤较多,但能保持系统安全性,适合生产环境使用。
2. DKMS编译错误:内核头文件的版本陷阱
DKMS编译失败是另一个常见问题,通常是由于内核版本不匹配导致的。Ubuntu 20.04默认安装的是5.4内核,但系统更新后可能会安装更新的内核版本。
2.1 典型错误日志
make[1]: *** /lib/modules/5.4.0-42-generic/build: No such file or directory. Stop.2.2 解决步骤
首先确认当前运行的内核版本:
uname -r安装对应版本的内核头文件:
sudo apt-get install linux-headers-$(uname -r)如果问题依旧,尝试完全重新安装DKMS模块:
sudo apt-get purge librealsense2-dkms sudo apt-get install librealsense2-dkms
2.3 版本兼容性对照表
| 内核版本 | 所需头文件包 | 备注 |
|---|---|---|
| 5.4.x | linux-headers-5.4.0-xx | LTS默认版本 |
| 5.8.x | linux-headers-5.8.0-xx | HWE版本 |
| 5.11.x | linux-headers-5.11.0-xx | 手动安装版本 |
3. USB 3.0连接问题:速度与稳定的平衡
RealSense D400系列相机需要USB 3.0接口才能正常工作,但很多用户在连接时遇到设备识别不稳定或频繁断开的问题。
3.1 诊断方法
检查当前连接速度:
lsusb -t | grep RealSense正常应该显示"5000M"(USB 3.0速度)
如果显示"480M",说明设备运行在USB 2.0模式
3.2 解决方案
- 更换USB线缆:使用带屏蔽的优质USB 3.0线缆
- 禁用USB自动挂起:
echo 'options usbcore autosuspend=-1' | sudo tee /etc/modprobe.d/usb-autosuspend.conf sudo update-initramfs -u - 调整电源管理:
sudo apt-get install tuned sudo tuned-adm profile latency-performance
4. 版本兼容性问题:T265相机的特殊待遇
从librealsense v2.54.1开始,官方停止了对T265追踪相机的支持,这让很多还在使用这款设备的开发者措手不及。
4.1 现象描述
运行realsense-viewer时,T265相机无法被识别,日志中显示:
No device detected. Is it plugged in?4.2 解决方案
降级到v2.53.1版本:
sudo apt-get purge librealsense2* wget https://github.com/IntelRealSense/librealsense/releases/download/v2.53.1/librealsense2_2.53.1-0~realsense0.6128_amd64.deb sudo dpkg -i librealsense2_2.53.1-0~realsense0.6128_amd64.deb使用ROS封装(如果项目允许):
sudo apt-get install ros-noetic-realsense2-camera roslaunch realsense2_camera rs_camera.launch
注意:降级前请备份重要数据,不同版本间的配置文件可能不兼容。
5. realsense-viewer无法启动:GLX问题的排查
很多用户在第一次运行realsense-viewer时遇到崩溃或无法启动的问题,这通常与图形驱动和OpenGL支持有关。
5.1 常见错误
Failed to create GLFW window GLX: Failed to create context: GLXBadFBConfig5.2 解决步骤
首先检查OpenGL支持:
glxinfo | grep "OpenGL version"如果版本低于3.0,考虑更新驱动:
- 对于NVIDIA显卡:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-driver-470 - 对于Intel集成显卡:
sudo apt-get install mesa-utils libgl1-mesa-glx libgl1-mesa-dri
- 对于NVIDIA显卡:
如果问题依旧,尝试软件渲染模式:
LIBGL_ALWAYS_SOFTWARE=1 realsense-viewer
6. 权限问题:udev规则的正确配置
即使安装成功,普通用户运行时仍可能遇到权限不足的问题,表现为设备无法打开或功能受限。
6.1 典型症状
Could not open device: Permission denied6.2 永久解决方案
检查udev规则是否安装:
ls /etc/udev/rules.d/99-realsense-libusb.rules如果没有,手动复制规则文件:
sudo cp /usr/lib/x86_64-linux-gnu/librealsense2/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && sudo udevadm trigger将用户加入video和plugdev组:
sudo usermod -a -G video,plugdev $USER
记得重新登录使组变更生效。如果还是遇到问题,可以尝试临时使用root权限运行viewer进行测试。