
联想拯救者Y9000P是我这几年用来跑深度学习训练、SLAM算法验证和ROS开发的主力机配置放在Windows下打游戏是顶配水平但想在它上面装一个稳定可用的Ubuntu20.04过程远比想象中折腾。装完系统只是第一步后面的NVIDIA驱动、AX211无线网卡、网络图标变成问号、双系统引导丢失每一步都可能把你逼回Windows。这篇记录就完整梳理我在Y9000P上安装Ubuntu20.04的真实过程包括BIOS设置、分区方案、驱动兼容、网络排障以及后续部署ROS和ORB-SLAM3开发环境的要点给准备在这台机器上转Linux开发的同学一份能直接抄的作业。1. 安装前的准备与整体思路1.1 为什么是Ubuntu20.04而不是22.04如果你只是日常办公、写写代码装哪个版本区别不大但如果你要跑机器人、SLAM、自动驾驶相关的开源项目Ubuntu20.04几乎绕不开。ORB-SLAM3、VINS-Fusion、LOAM系列以及ROS Noetic官方支持版本都基于20.04测试依赖库版本、编译选项都是按照这个环境验证过的。装22.04不是不行但经常需要手动改CMakeLists、降级OpenCV、换Python版本折腾一圈后大概率还是会退回20.04。另外20.04是个LTS版本支持到2025年而ROS Noetic也是LTS版本两者搭配非常成熟。社区里遇到问题搜到的解决方案八成以上都针对20.04环境这就意味着你踩坑后更容易找到现成的答案。我这台Y9000P当时的配置是i7-12700H RTX3060 AX211无线网卡内存32GB双硬盘SSD属于2022年那批拯救者的典型配置。如果你手里的机器是13代或14代酷睿、RTX40系显卡也不用慌后面的驱动方案同样适用只是内核和固件需要稍微新一点。1.2 BIOS设置与硬件适配预判联想拯救者Y9000P进BIOS是开机按F2选择一次性启动项按F12。安装Linux之前有两项设置必须改不然后面会非常被动。第一个是Secure Boot这个必须关闭。Secure Boot是UEFI的安全启动机制会校验引导程序签名Ubuntu虽然签了名但后续安装NVIDIA驱动时第三方内核模块无法通过签名校验会导致驱动加载失败。每次开机都给你弹MOK蓝屏确认非常折磨。在BIOS的Security菜单下找到Secure Boot选项设为Disabled就行。第二个是硬盘模式。Y9000P默认把NVMe SSD设置为Intel RSTVMD模式Ubuntu内核默认不带这个驱动安装时大概率找不到硬盘直接卡在分区界面。这个问题尤其坑因为Windows下一切正常根本想不到是硬盘控制器的锅。解决办法是在BIOS的Configuration菜单里找到Storage、Controller Mode或者VMD Setup Menu把模式从RST改成AHCI。需要注意改完硬盘模式后Windows可能无法正常引导因为Windows之前以RST模式安装驱动不匹配。建议提前在Windows里用管理员模式运行bcdedit /set safeboot minimal然后关机改BIOS再开机进Windows安全模式在设备管理器里卸载Intel RST驱动重启后关闭安全模式。做完这步双系统切换就不会互相打架了。另外BIOS里的Fast Boot也建议关掉否则U盘启动经常被跳过或者开机后直接进Windows你连按F12的机会都没有。1.3 制作启动盘与Ubuntu镜像选择制作启动盘的工具我用过好几款Rufus最省心官网下载绿色版插上U盘选择Ubuntu20.04镜像分区类型GPT目标系统UEFI文件系统FAT32写入方式选“DD镜像模式”点开始就行。这里有个细节Ubuntu20.04的ISO发布过多个小版本建议直接下载20.04.6这是最终维护版内核版本是5.15比最初的5.4内核新很多。5.15内核原生支持Intel 12代大小核架构对AX211网卡的支持也更完整。如果拿初版20.04.1装装完第一件事就得升内核何必自己给自己加戏。下载地址用官方源就行搜索“Ubuntu 20.04.6 release notes”能找到直链。下载后最好校验一下SHA256避免镜像损坏导致安装中途报错。命令行校验可以用sha256sum拿到官网的校验值比对一下完全一致再写入U盘。2. 双系统安装与引导修复2.1 磁盘分区策略与操作实测我是在保留Windows系统的情况下做的双系统所以分区思路很明确从Windows的D盘压缩出一块空间大小给到150GB其中根分区100GBswap 32GB对应32GB内存剩余空间留给后续数据集和工程文件。如果你需要存大量数据建议单独挂载一个/data分区方便以后重装系统不丢数据。进入Ubuntu安装界面后选择“Something else”手动分区不要用“Install alongside Windows”的自动模式那个方案经常把分区表搞乱。我的分区方式如下EFI系统分区选择Windows已有的那个EFI分区一般是/dev/nvme0n1p1大小几百MB挂载点设为/boot/efi一定不要勾选格式化否则Windows引导直接报废。swap分区在空闲空间上新建大小32768MB类型为swap。根分区剩余空间全部给根分区挂载点设为/文件系统ext4这里可以勾选格式化。设置完成后底部“Device for boot loader installation”选择对应的系统盘也就是/dev/nvme0n1不要选具体分区让GRUB写入磁盘的EFI引导区。这一步很多人选错成U盘导致装完还是直接进Windows。安装过程中选择时区时直接输Shanghai语言建议选English这样终端和中文字体相关的报错会少很多中文输入法后面想装随时能装。用户名和密码按自己习惯设置注意勾选“Require my password to log in”后面安装驱动和系统更新需要sudo权限。2.2 安装完成的首次启动与GRUB调整安装结束后提示重启拔掉U盘正常情况会进入GRUB菜单显示Ubuntu和Windows Boot Manager两个选项。如果直接进Windows说明GRUB没有被设置为第一启动项。重启按F2进BIOS在Boot菜单的Boot Priority里把“ubuntu”提到最前面保存退出。GRUB默认等待时间是10秒我个人会改短一点编辑/etc/default/grub把GRUB_TIMEOUT10改成5然后执行sudo update-grub。如果想要开机自动进Windows把GRUB_DEFAULT0改成Windows Boot Manager在GRUB菜单里的序号从0开始数或者用GRUB_DEFAULTsaved配合grub-set-default实现动态切换。如果GRUB菜单丢失或者引导损坏不要慌。用Ubuntu启动U盘进入“Try Ubuntu”模式打开终端依次执行sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update sudo apt install boot-repairBoot-Repair启动后直接点“Recommended repair”它会自动检测EFI分区、修复GRUB配置结束后重启就能恢复双系统菜单。这个工具我用了很多次是目前最省事的引导修复方案。2.3 安装完成后必做的系统更新刚装好的Ubuntu20.04虽然是5.15内核但软件仓库里的包还停留在发布初期的状态建议先做一轮完整更新再装驱动和开发环境sudo apt update sudo apt upgrade sudo apt dist-upgrade sudo reboot这一步会把基础库、内核补丁、安全更新都拉下来。如果你网络不好可以先换国内源再更新后面第3.3节会详细说。更新完成后再执行uname -r确认内核版本如果还是5.15以下考虑直接从Ubuntu Mainline内核网站拉新内核不过一般20.04.6自带的内核够用了。3. 驱动与网络适配3.1 NVIDIA显卡驱动安装与常见报错Y9000P安装完Ubuntu后系统默认使用开源的nouveau驱动性能低、功耗高跑CUDA完全不现实。第一步就是禁用nouveau让它别干扰NVIDIA官方驱动加载。创建/etc/modprobe.d/blacklist-nouveau.conf文件写入两行内容blacklist nouveau options nouveau modeset0然后重建initramfssudo update-initramfs -u注意执行完这个命令后建议重启重启后如果桌面正常显示说明nouveau已经禁用。如果黑屏可能在启动参数里加nomodeset这个后面会讲。接下来安装NVIDIA驱动我直接用的Ubuntu软件源里的版本sudo apt install nvidia-driver-535安装过程会自动卸载nouveau并加载nvidia模块。装完后执行nvidia-smi正常会显示驱动版本535.xx和CUDA版本12.2。我这里装的535是因为它对应较新CUDA你如果跑的是老项目需要CUDA 11.x那装470或525系列更稳。我踩过最典型的坑是循环登录输入密码后又跳回登录界面。原因是NVIDIA驱动与当前桌面会话冲突常见的解决办法是进ttyCtrlAltF2登录后重新安装驱动或者卸载后改用sudo ubuntu-drivers autoinstall自动选择推荐版本sudo apt purge nvidia-* sudo ubuntu-drivers autoinstall sudo reboot另一个典型问题是开机黑屏卡在紫色界面不动。这通常是驱动加载时机太早和内核参数冲突。在GRUB菜单按e键编辑启动项在quiet splash后面加上nomodeset按CtrlX启动进入系统后再永久写入/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULTquiet splash nomodeset这里补充一点Y9000P的显卡切换BIOS里提供独显直连和混合模式两种。如果你平时只用于深度学习或算法开发建议直接开启独显直连NVIDIA驱动管理更简单性能也更好。如果你还要用HDMI输出或者想让集显负责日常显示以省电那就保持混合模式但混合模式下NVIDIA驱动偶尔会出现外接显示器不识别的问题需要在NVIDIA X Server Settings里手动配置。3.2 AX211无线网卡与网络问号排障Y9000P这块AX211网卡在Ubuntu20.04下能不能用完全看你内核和linux-firmware的版本。5.15内核本身已经支持AX211但固件文件如果缺失网卡会处于未识别状态任务栏根本没有WiFi图标。先确认网卡是否被识别lspci | grep -i network dmesg | grep iwlwifi如果lspci能看到设备但dmesg报固件加载失败通常是iwlwifi-ty-a0-gf-a0-*.ucode文件不存在或版本不对。解决办法是更新firmware包sudo apt install --reinstall linux-firmware如果软件源里的firmware版本太老去Intel官方的linux-firmware仓库拉取新文件放到/lib/firmware下然后执行sudo update-initramfs -u sudo reboot即可。另一个非常容易遇到的现象是明明连上了WiFi但右上角网络图标显示“”或者感叹号实际ping不通网关DNS解析也失败。这个问题我在Y9000P上遇到过两次原因各不相同。第一次是NetworkManager把有线网卡识别成了unmanaged状态导致连接管理器不接管。用nmcli device status查看如果状态是unmanaged编辑/etc/NetworkManager/NetworkManager.conf把[ifupdown]下的managedfalse改成managedtrue然后重启服务sudo systemctl restart NetworkManager第二次是自动获取IP失败路由器分配了地址但网关和路由表没配上。这种情况先手动配置IP试试能不能通nmcli connection modify 你的WiFi名字 ipv4.method manual ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns 223.5.5.5 nmcli connection up 你的WiFi名字注意这里用的IP和网关要根据你自己路由器网段改。配置完成后如果网络图标仍然显示问号尝试在设置里把IPv6改成忽略部分路由器IPv6的RA通告和NetworkManager配合有问题同样会导致网络图标异常。3.3 软件源与基础环境配置装完驱动和网卡接下来先把软件源搞定不然后面装ROS、编译ORB-SLAM3时会慢到怀疑人生。备份好原文件后用国内镜像替换sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update如果使用的是中科大或清华镜像也是一样的套路。这里要注意如果你后续要安装Ubuntu官方源里的ROS、CUDA等包建议保留一份官方源的备份某些包可能只在官方源或者对应第三方源里有。基础工具链一次性装齐后面省很多事sudo apt install build-essential git cmake curl wget vim htop net-tools openssh-serverSSH服务强烈建议装上笔记本放在角落跑实验时用另一台电脑远程连过来非常方便。装完记得开启服务sudo systemctl enable ssh sudo systemctl start ssh如果之后要用CUDA建议在NVIDIA官网下载runfile安装或者直接用sudo apt install nvidia-cuda-toolkit装软件源里的版本但后者版本更新慢跑新模型容易踩坑。我更推荐官网runfile方式根据你安装的驱动版本选择对应CUDA版本避免驱动和CUDA版本不匹配。4. 部署ROS1与ORB-SLAM3开发环境4.1 ROS Noetic安装与rosdep配置如果你做机器人、SLAM或者无人驾驶相关的研究ROS Noetic是Ubuntu20.04上绕不开的环境。安装过程本身不复杂官方文档一条条执行就行sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt install curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install ros-noetic-desktop-full当ros-noetic-desktop-full安装包下载到一半卡住大概率是网络连接不稳定换镜像源能很大程度上改善也可以在/etc/apt/sources.list.d/ros-latest.list里把packages.ros.org替换成国内镜像的ROS源具体地址根据你所在网络环境搜一下就有。装完后配置环境变量echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc接下来是rosdep初始化这一步是很多人最头疼的地方。sudo rosdep init不通过或者rosdep update一直超时本质是rosdep默认访问的GitHub地址连接不稳定。这里建议直接用社区方案rosdepc它在国内镜像了rosdep源命令完全兼容sudo pip3 install rosdepc sudo rosdepc init rosdepc update以后的rosdep install命令对应改成rosdepc install即可。如果你不想引入第三方工具也可以手动下载rosdistro仓库放到本地通过环境变量ROSDISTRO_INDEX_URL指向本地文件不过操作麻烦很多我实际对比下来直接用rosdepc最省事。安装完成后用roscore启动ROS主节点另开一个终端跑rosrun turtlesim turtlesim_node验证整个环境是否正常。能出现小海龟窗口就说明ROS装好了。4.2 ORB-SLAM3依赖库编译与运行验证ORB-SLAM3是目前学术界和工业界使用广泛的视觉SLAM方案在Ubuntu20.04上编译会遇到不少坑我记录一下我验证过的流程。官方要求的依赖有Pangolin、OpenCV、Eigen3DBoW2和g2o已经内置在源码里。先安装系统依赖sudo apt install libopencv-dev libeigen3-dev libglew-dev libpython3-dev python3-dev python3-pip ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-devPangolin建议用v0.6版本直接clone后切到对应taggit clone https://github.com/stevenlovegrove/Pangolin.git cd Pangolin git checkout v0.6 mkdir build cd build cmake .. make -j$(nproc) sudo make install注意Pangolin v0.6在Ubuntu20.04上编译时会依赖libgl1-mesa-dev和libegl1-mesa-dev如果cmake报EGL相关的错先补装这两个包。另外新版本Pangolin v0.8以上依赖C17和ORB-SLAM3默认的C14冲突所以版本别选太新。然后下载ORB-SLAM3源码git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git cd ORB_SLAM3 chmod x build.sh ./build.sh编译过程中最容易报错的点是OpenCV版本和C标准。Ubuntu20.04自带的OpenCV是4.2ORB-SLAM3官方在OpenCV4下编译没问题但个别文件需要加上#include opencv2/imgproc.hpp这类头文件。如果你遇到CV_LOAD_IMAGE_UNCHANGED之类报错把源码里的老接口改成OpenCV4的新接口就行。C标准问题在CMakeLists.txt里把CMAKE_CXX_STANDARD设置成14再试。编译完成后跑一下官方单目数据集TUM验证./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /path/to/TUM数据集如果终端能输出初始化成功并出现实时轨迹窗口说明整个环境已经打通。我在Y9000P上用RTX3060跑TUM数据集单目大概能跑到80-100帧实时性完全够。注意笔记本散热一定要做好编译的时候多核满载风扇起飞是正常的但运行SLAM时如果CPU过热降频帧率会明显掉下来。4.3 高频问题速查表问题现象可能原因解决办法安装时找不到硬盘BIOS VMD/RST模式未关闭BIOS里把Controller Mode改为AHCI装完直接进WindowsGRUB未写入UEFI启动项或启动顺序不对BIOS里把Ubuntu设为第一启动或用Boot-Repair修复开机黑屏驱动加载顺序异常GRUB加nomodeset参数或重装NVIDIA驱动循环登录NVIDIA驱动和桌面会话冲突tty重装驱动或执行sudo ubuntu-drivers autoinstall没有WiFi图标网卡固件缺失更新linux-firmware确认iwlwifi固件文件存在网络图标显示问号NetworkManager托管配置异常或DNS问题检查managed状态重启NetworkManager手动配置IProscore启动报错ROS环境变量未加载检查~/.bashrc里的source语句ORB-SLAM3编译报OpenCV错误与OpenCV4接口不兼容补头文件改CMakeLists里的C标准这张表里的问题基本都是Y9000P装Ubuntu20.04的高频雷区我前后踩了不止一遍整理出来帮你少走弯路。5. 性能调优与个人经验总结系统能正常运行只是开始笔记本上跑Linux散热和功耗才是长期陪伴你的问题。Y9000P在Windows下有联想的Legion Zone控制风扇和性能模式Ubuntu下没有官方工具但可以通过TLP做电源管理sudo apt install tlp tlp-rdw sudo systemctl enable tlp tlp startTLP默认配置就很合理能有效降低待机功耗和温度。如果装了显卡驱动后发现风扇一直在跑可以检查是否有进程持续调用GPU用nvidia-smi看一下显存占用。我在实际跑SLAM实验时发现单纯的CPU编译任务和GPU推理任务对散热的压力完全不同建议笔记本最好配一个散热垫温度降个5-8度很正常。另外双系统时间同步问题也值得提一下。Windows默认把主板时间当本地时间Ubuntu把主板时间当UTC导致两个系统切换后时间总差8小时。解决办法是在Ubuntu里执行sudo timedatectl set-local-rtc 1这样Linux会像Windows一样把BIOS时间当本地时间切换系统就不会再出现时间错乱。如果你不在意这个细节每次开机后网络同步也能纠正但总归别扭。个人经验方面我建议的顺序是先把系统更新到最新再处理网卡和固件最后才装NVIDIA驱动。很多人第一次装完就急着搞显卡结果固件没更新、内核没升级驱动和新设备兼容不好各种意外问题全都冒出来了。先解决网络和基础的软件源等于把地基打好后面装什么都不会太慌。如果你准备在这台Y9000P上长期做Linux开发我还建议把Windows里的重要数据单独放到一个NTFS分区Ubuntu访问NTFS分区本身没问题但不要在那上面跑数据库或者ROS bag录制Linux的ext4在IO性能上会更稳。实际跑起来之后Y9000P在Ubuntu下的CPU性能和Windows差别不大GPU因为在混合模式下有切换损失跑CUDA任务建议铁了心开独显直连性能损失会小很多。这篇记录基本覆盖了我在Y9000P上从零装好Ubuntu20.04并部署完开发环境的全部过程。最后再分享一个我觉得最有用的排障习惯遇到问题先看dmesg和journalctl -xe很多看似奇怪的系统问题日志里都写得很清楚比到处搜帖子猜原因靠谱多了。