
如果你手里正好是一台华为Matebook 14想在保留Windows的同时装一个Ubuntu用来跑ROS、写代码或者做深度学习实验那么这篇文章就是按我自己的真实装机过程写的。整个流程覆盖了从BIOS设置、启动盘制作、分区安装、引导修复到装完系统后改启动顺序、装显卡驱动、解决WiFi和亮度问题最后顺手把ROS、Anaconda、Git这些开发环境也搭好。我踩过的坑都会标出来照着走能少折腾一晚上。1. 为什么一定要装双系统方案选型与硬件摸底1.1 双系统、虚拟机、WSL三选一我为什么最终选双系统很多人在装Ubuntu前都会纠结到底用虚拟机、WSL还是直接双系统我在Matebook 14上三个方案都试过。虚拟机VMware/VirtualBox胜在安全Windows里开个窗口就能用出了问题直接删掉重来但性能损耗和硬件透传是很大的问题。你要在虚拟机里跑激光雷达、相机、USB转串口这些设备经常会出现设备识别不到、延迟高、GPU调用困难的情况搞机器人或视觉方向的人基本忍不了。WSL2在文件IO和网络方面比虚拟机好很多也能跑Docker但它始终隔着一层Windows内核转换层有些底层操作还是会出问题比如直接操作/dev/ttyUSB、挂载U盘做启动盘、编译一些需要访问硬件寄存器的驱动模块。ROS2在WSL2里跑虽然有官方支持但主机和子系统之间的网络代理关系时不时会给你整出一点奇怪问题排查起来非常痛苦。最终我的选择是双系统。这台Matebook 14平时Windows用来处理文档、开会、网银Ubuntu用来跑开发和实验两个系统各管一摊互不干扰。硬盘上两个系统各自有独立分区启动时用GRUB来选择进入哪个这是最接近“物理机原生环境”的方案。缺点是切换系统要重启但在实际开发场景里重启一次的时间成本远小于跟虚拟机硬件兼容性搏斗的时间成本。1.2 Matebook 14装Ubuntu前的硬件摸底装系统之前必须先了解Matebook 14的硬件组成因为有些硬件在Ubuntu下并不是“开箱即用”。我这台是2022款Intel版本核心配置是Intel i7-1260P处理器、16GB内存、512GB NVMe固态显卡是Iris Xe核显无线网卡是Intel AX201。这个配置在Ubuntu 22.04/24.04下兼容性整体不错但有几个点需要注意。第一Matebook 14在部分批次BIOS里默认把NVMe控制器设置成了Intel VMDVolume Management Device模式。VMD是Intel为NVMe固态提供的一种控制器管理方式在Windows下没有感知但Ubuntu安装程序在VMD模式下经常看不到硬盘。这个问题我当时折腾了很久最后进BIOS把SATA/NVMe模式从VMD改成AHCI才解决。第二Secure Boot对第三方驱动的限制。Ubuntu官方内核自带签名本身可以开启Secure Boot但如果你以后要装NVIDIA闭源驱动、或者自己编译内核模块Secure Boot就会拦路。最省事的做法是装系统前先关闭Secure Boot等一切跑通后再考虑要不要开。第三Matebook 14的指纹识别模块在Ubuntu下基本是残废状态别指望它能用。键盘背光、功能键大部分能用但部分快捷键映射会和Windows下不一样。触控板在较老的内核版本里会出现漂移或者点击不灵敏的情况在22.04内核5.15之后基本解决所以建议直接用LTS新版本。1.3 安装前必须处理的三个坑这三个坑如果不提前处理后面会一个一个来找你麻烦。第一个就是前面提到的VMD模式。开机按F2进入BIOS在“Configuration”或“Advanced”菜单里找到SATA Controller Mode或类似选项如果显示VMD或者Intel RSTRapid Storage Technology改成AHCI。注意Windows是在VMD模式下安装的改完AHCI之后Windows首次启动可能会蓝屏这是因为系统里没有加载标准AHCI驱动。解决办法是先进入Windows的安全模式一次让系统识别AHCI之后再正常启动。如果你不想这么折腾也可以先保持VMD装完Windows等成功进入系统后再进BIOS切换AHCI并用安全模式修复。第二个是BitLocker加密。Windows系统盘默认开启了设备加密如果你直接压缩卷或者删除分区准备装UbuntuWindows可能在你安装完Ubuntu后拒绝挂载原来的分区甚至直接要求输入恢复密钥。建议在Windows的“设置-隐私和安全性-设备加密”里先把BitLocker暂停或关闭等双系统都稳定了再决定是否重新开启。第三个是快速启动。Windows的“快速启动”实际上是把内核状态写入休眠文件下次开机时直接从休眠文件恢复。这会导致两个问题一是Ubuntu读取到的Windows分区处于非正常挂载状态二是双系统时间会出现错乱。在Windows控制面板的电源选项里把“启用快速启动”去掉勾选保险起见再以管理员身份打开PowerShell执行powercfg /h off关闭休眠这样两个问题一起解决。2. 安装前准备镜像、启动盘和磁盘空间2.1 镜像版本选择与U盘制作方法选Ubuntu版本这件事直接决定你后面能不能顺畅跑ROS。如果你要装ROS 1的Noetic它只支持Ubuntu 20.04如果装ROS 2的Humble官方支持的是Ubuntu 22.04如果你用Ubuntu 24.04对应的ROS 2版本是Jazzy。我的建议是优先用Ubuntu 22.04 LTS因为它同时有着最广泛的社区支持很多教程、二进制包、驱动都优先适配这个版本而且ROS 2 Humble是当前最主流的选择。镜像在Ubuntu官网下载选择22.04.3 desktop live版就行。制作启动盘Windows下推荐用Rufus写入模式选择DD镜像模式或者ISO模式都可以分区类型选GPT目标系统选UEFI非CSM。插上U盘之前确认里面没有重要数据Rufus会把U盘清空。我自己的经验是用台电和闪迪这两类常见U盘都没有遇到启动兼容性问题反而有一些杂牌U盘在BIOS的UEFI启动列表里不显示换一个U盘往往就解决了。如果你习惯用ventoy也是完全可以的。ventoy的优势是可以直接把ISO文件拷贝进U盘就能启动不需要反复刷写适合经常换镜像版本的人。不过需要提醒一句Matebook 14的UEFI对ventoy的兼容性总体可以但极少数BIOS版本在ventoy启动菜单下会出现键盘失灵的情况所以我个人还是更推荐Rufus一把梭到底。2.2 用Windows磁盘管理给Ubuntu腾出空间Windows系统盘和新盘最好不用第三方分区工具去硬切直接用系统自带的磁盘管理最安全。按WinX键选择磁盘管理找到你的主分区一般是C盘右键点击“压缩卷”然后输入要为Ubuntu分配的空间大小。关于分配多少空间要看你的用途。我建议至少分配150GB因为Ubuntu系统本身占30GB左右之后装ROS、Anaconda、工作空间还有各种依赖库轻轻松松超过50GB。再加上虚拟内存swap分区以及你可能会在Ubuntu里存放数据集、模型权重、编译缓存空间捉襟见肘会非常难受。512GB的固态我给Ubuntu分的是200GBWindows剩余300GB日常使用基本够。压缩卷操作不会动到已有的C盘文件它是从磁盘末尾匀出一段未分配空间。这一步完成之后你能在磁盘管理里看到一片黑色条状的未分配区域这就是Ubuntu可以使用的空间。不要手动创建分区更不要去删EFI分区或者恢复分区安装Ubuntu时它会自动识别这些空间并让你手动建分区。2.3 BIOS设置与U盘启动开机后狂按F2进入BIOS把Secure Boot设置为Disabled再把Boot Mode确认是UEFI不要Legacy。F12是快捷启动菜单插入U盘后开机按F12在列表里选择你的U盘设备注意选择名字里带UEFI前缀的那个选项不要选老式的USB Hard Drive或者不带UEFI的选项否则进入安装界面后可能没有UEFI安装模式。如果你的U盘在启动列表里看不到大概率是U盘FAT32/NTFS格式导致的引导项消失。重新用Rufus写入一次确保写入过程没有报错。还有一个常见情况是U盘能进GRUB菜单但选择“Try or Install Ubuntu”后卡在黑屏或Logo界面这个大概率是显卡驱动加载失败需要在GRUB菜单按e编辑启动项在splash后面加上nomodeset参数过完安装界面再删掉。3. Ubuntu安装与分区实操3.1 分区方案怎么选安装类型选择“Something else”手动分区这是整个安装过程中最核心的一步。Matebook 14用的是UEFI引导所以分区方案和传统BIOS下的MBR分区有很大区别。你需要关心四个分区EFI系统分区、根分区、home分区、swap分区。EFI系统分区不要自己新建Ubuntu安装器会识别到Windows已有的ESP分区一般是/dev/nvme0n1p1大小100MB到500MB你只需要把它选中并设置挂载点为/boot/efi然后确保“Device for boot loader installation”选的是这块硬盘/dev/nvme0n1不带数字而不是某个具体分区这样GRUB会写到ESP分区里和Windows Boot Manager共存。根分区/建议至少80GB格式选ext4挂载点选/。home分区单独分出来大小是你剩余空间里的大部分格式ext4挂载点/home。swap分区在内存16GB以上的情况下可以分8GB如果你经常跑大型编译或者内存不够就分16GB。还有一个小建议如果你以后打算用休眠功能swap分区大小最好等于或略大于物理内存。3.2 一步一步完成安装手动分区界面里选中那块未分配空间点击加号创建分区。先创建一个根分区大小比如100GB选择主分区位置选起始位置用于ext4日志文件系统挂载点选/。然后再创建home分区大小剩余空间减掉swap的大小格式ext4挂载点/home。最后创建swap分区大小8192MB用于“交换空间”。如果你的SSD上还有一块Windows未分配空间检查一下是不是之前压缩卷时留出来的别选错盘。分完区之后页面下方有一个“Device for boot loader installation”下拉框默认可能是/dev/nvme0n1保持这个默认值。直接点“Install Now”安装器会提示你确认分区操作确认后就开始复制系统文件。这一步耗时取决于U盘读取速度和固态性能一般十分钟到二十分钟。安装完成后不要急着拔U盘重启进入BIOS按F12这时你会看到两个启动项Ubuntu和Windows Boot Manager。选择Ubuntu进入如果能看到GRUB菜单说明引导已经写好了。如果GRUB菜单里没有Windows Boot Manager这个选项不用担心后面我会讲怎么修复。3.3 首次开机后必做的事更新、驱动和内核参数进Ubuntu桌面后第一件事是打开终端执行sudo apt update sudo apt upgrade把系统包更新到最新。这一步非常重要因为Ubuntu发布后会有大量安全补丁和硬件支持更新尤其对新的Intel平台内核更新会直接改善电源管理和核显兼容性。接下来检查显卡。在终端里输入lspci | grep -i vga如果你的Matebook 14是核显版你会看到Intel Iris Xe Graphics这种不需要额外装驱动用系统自带的i915驱动即可。如果你的机器是带NVIDIA独立显卡的版本就需要在“软件和更新-附加驱动”里选择NVIDIA驱动或者执行sudo ubuntu-drivers autoinstall让它自动安装推荐版本。NVIDIA驱动装完一定要重启验证一下nvidia-smi能正常输出否则后面跑深度学习就是硬伤。亮度快捷键在部分Matebook 14上刚开始会失效。可以编辑/etc/default/grub文件在GRUB_CMDLINE_LINUX_DEFAULT那一行加上acpi_backlightnative参数保存后sudo update-grub重启。WiFi模块AX201在Ubuntu下基本是即插即用如果发现WiFi信号弱或者频繁断开可以关闭Intel WiFi的电源管理方法是新建一个/etc/modprobe.d/iwlwifi.conf文件写入options iwlwifi power_save0重启生效。4. 双系统的启动引导与顺序修改4.1 GRUB、EFI和Windows Boot Manager的关系了解了启动流程就不会再对引导问题感到头大。开机后电脑固件UEFI先启动读取硬盘的EFI分区里面存放着各个操作系统的引导文件。Windows的引导文件在\EFI\Microsoft\Boot\bootmgfw.efiUbuntu安装的GRUB引导文件在\EFI\ubuntu\shimx64.efi。UEFI固件根据启动顺序决定先执行哪个引导文件。如果启动顺序里Ubuntu排在第一位就会先启动GRUBGRUB再列出菜单让你选择进入Ubuntu还是Windows。如果启动顺序里Windows Boot Manager排在第一位那么开机后直接进Windows完全看不到GRUB菜单。这就是为什么有些人装完双系统后一点Ubuntu的痕迹都看不到不是系统没装好而是启动顺序压根就没轮到GRUB。修改启动顺序的实质就是调整固件里“EFI Boot Order”这个列表的顺序。可以用BIOS设置界面改可以用Linux下的efibootmgr命令改也可以在Windows下用工具改。但要注意这跟GRUB菜单里默认选哪个系统完全是两回事。4.2 修改启动顺序的三种方式第一种是在BIOS里改。开机按F2进入BIOS找到Boot菜单里面会列出启动项列表把Ubuntu调整到第一位即可。这个方法的缺点是某些Matebook 14的BIOS界面比较简洁只能调整整个硬盘的优先级不能细化到具体引导文件这时就要看下一种方式。第二种是在Ubuntu终端里用efibootmgr修改这是我认为最灵活的方式。先执行efibootmgr查看当前启动项输出类似下面这样BootCurrent: 0000 Timeout: 0 seconds BootOrder: 0000, 0001 Boot0000* ubuntu Boot0001* Windows Boot ManagerBootOrder表示当前启动顺序0000是Ubuntu0001是Windows。如果你想把Windows设为默认启动项执行sudo efibootmgr -o 0001,0000这条命令把Windows Boot Manager放到了第一位Ubuntu第二位开机后直接进Windows。如果你想先看到GRUB菜单再由自己选择就把0000放前面。改完之后可以用efibootmgr再次确认输出。第三种方式是修改GRUB的默认项。在/etc/default/grub文件里GRUB_DEFAULT可以设置为一个数字0表示菜单第一项1表示第二项也可以设置为saved并配合grub-set-default使用。比如你想默认进入Windows可以查看GRUB菜单项的顺序后把GRUB_DEFAULT0改成对应Windows行的序号然后sudo update-grub生效。这个方法改的是GRUB内部的默认选择不能跳过GRUB不显示菜单。4.3 GRUB界面太暗、菜单里找不到Windows项怎么办有同学反馈开机进GRUB菜单时屏幕特别暗好像在系统里调节亮度也没用。这个主要不是GRUB的问题而是固件背光和内核背光驱动的兼容问题。可以试一下在GRUB界面按e编辑引导项在linux那一行末尾加acpi_backlightnative参数进入系统后如果亮度快捷键正常了就把参数写进/etc/default/grub并update-grub。如果你的GRUB菜单里没有Windows Boot Manager这一项大概率是os-prober没有运行或者被注释掉了。在新版Ubuntu中os-prober在GRUB配置文件里默认是禁用的。你需要安装os-probersudo apt install os-prober sudo os-prober sudo update-grubos-prober会扫描其他磁盘和分区上的操作系统执行完成后再次update-grubGRUB菜单里就会出现Windows Boot Manager。如果os-prober扫描不到检查一下EFI分区是否挂载在/boot/efi并确保Windows所在磁盘在BIOS里没有被隐藏。5. 开发环境速建ROS、Anaconda、Git与编辑器5.1 Ubuntu软件源与基础工具链安装完系统后先把软件源切换成国内镜像源否则后面apt install任何一个包都会慢到怀疑人生。在“软件和更新”里选择“其他站点”选阿里云或清华源然后执行sudo apt update。这里提醒一下如果以后你会在不同网络环境下使用这台机器不建议用脚本直接替换整个sources.list文件而是在“软件和更新”里切换这样最稳妥。接着安装基础工具链sudo apt install build-essential cmake git python3-pip python3-venv curl wget net-toolsbuild-essential包含了gcc、g和make编译C/C项目必备。git顺手配一下git config --global user.name yourname git config --global user.email youremailexample.com ssh-keygen -t ed25519 -C youremailexample.com生成的公钥添加到你的Git平台账号里以后clone私有仓库就不用反复输密码了。这一步是很多人容易忽略的等到真正push代码报权限错误才想起来配不如现在就处理好。5.2 ROS安装鱼香ROS一键脚本和手动安装的取舍如果你是为了ROS才装的Ubuntu那在系统装完、源换好之后就可以着手装ROS了。最简单的方式是使用鱼香ROS的一键安装脚本它能自动检测Ubuntu版本安装对应版本的ROS和依赖。一键脚本适合新手省去了手动添加源、接受密钥、安装桌面扩展这一套流程。不过一键脚本会拉取大量的包安装在root权限下进行建议在执行前把数据备份好。手动安装也更值得了解因为脚本本质上也是执行这些步骤。在Ubuntu 22.04上安装ROS 2 Humble的标准操作是sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update sudo apt install curl -y sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null sudo apt update sudo apt install ros-humble-desktop装完后设置环境变量执行echo source /opt/ros/humble/setup.bash ~/.bashrc然后source ~/.bashrc。ROS 1 Noetic的安装思路类似Ubuntu版本要换成20.04包名换成ros-noetic-desktop-full。这里必须提醒一个坑不要在ROS系统里用Anaconda的base环境去直接编译ROS功能包因为conda会篡改系统Python路径导致ament_python和catkin构建时报错。建议所有ROS功能包相关的终端都保持系统Python环境Anaconda仅供独立的Python项目使用。5.3 Anaconda、PyCharm/VSCode安装与Python环境隔离Anaconda在官网下载Linux版sh安装脚本然后在终端执行bash Anaconda3-2024.XX-Linux-x86_64.sh。安装过程会询问是否初始化conda建议选yes方便在终端里直接使用conda命令。安装完成后执行conda create -n py39 python3.9创建独立的Python环境以后每个项目都用不同的conda环境不要一个base环境里塞满各种包。PyCharm和VSCode二选一。PyCharm适合重度Python开发社区版免费够用。VSCode适合写ROS、C、Python混合项目装好Remote SSH、Python、C/C、CMake扩展再配一个zsh或bash终端开发体验会很舒服。安装方式都是下载deb包后sudo dpkg -i xxx.deb安装依赖缺失时执行sudo apt -f install修复。记住在Ubuntu下安装编译工具链时别动不动就pip install到系统Python里。优先使用apt安装系统包或使用pip的--user参数再或者创建虚拟环境隔离。这样能最大程度避免破坏ROS的Python依赖。5.4 双系统时间错乱问题如果你发现进入Windows后系统时间变成了8小时之后或者进入Ubuntu后时间不对这是双系统最常见的“UTC时间”问题。Windows默认把BIOS时间当作本地时间Linux默认把BIOS时间当作UTC时间所以两个系统对同一个硬件时钟的解释不一样。在Ubuntu里执行下面这条命令让Linux也把硬件时钟解释为本地时间sudo timedatectl set-local-rtc 1 --adjust-system-clock执行后重启两个系统的时间就能保持一致了。如果以后进入Ubuntu发现时间不准先同步一下网络时间sudo apt install ntpdate sudo ntpdate time.windows.com再确认系统的时区设置是Asia/Shanghai。6. 常见问题排查与装机实操记录6.1 装机过程中最常踩的坑速查表这里整理了一份双系统安装过程中最常见的故障以及解决办法基本覆盖了你从装系统到日常使用的各种异常场景。问题现象可能原因解决方法插入U盘后开机卡在Logo页或黑屏显卡驱动未加载在GRUB菜单按e在linux行尾加nomodeset进入系统后再装显卡驱动安装时找不到NVMe硬盘Intel VMD/RST模式未关闭BIOS里把VMD/RST改为AHCI必要时先进Windows安全模式修复安装完成后开机直接进Windows启动顺序问题或GRUB没装进EFI分区BIOS/F12手动选Ubuntu或用efibootmgr调整顺序GRUB菜单没有Windows项os-prober未运行sudo apt install os-prober sudo os-prober sudo update-grubUbuntu下WiFi正常但信号弱/断流WiFi电源管理在modprobe.d里配置power_save0并重启Windows时间相差8小时UTC/Local时间解释不同sudo timedatectl set-local-rtc 1 --adjust-system-clock系统内亮度快捷键失灵ACPI背光驱动冲突/etc/default/grub加acpi_backlightnative参数再update-grub想删除Ubuntu却不会清理引导EFI启动项残留用Windows启动U盘进命令行执行bootrec /fixmbr等命令修复引导6.2 安装过程卡Logo、黑屏、找不到硬盘的排查思路这类问题我在Matebook 14上真的遇到了不止一次。第一次是插着U盘开机直接卡在华为Logo连BIOS启动菜单都没进后来发现是U盘引导格式问题换用Rufus重新写入UEFI模式就好了。第二次是过了Logo进了GRUB但选择“Try or Install Ubuntu”后屏幕黑掉光标一闪一闪这是内核在加载显卡驱动时崩溃按e编辑启动项加上nomodeset就进去了。找不到硬盘这个问题必须区分场景。如果你是在GRUB安装界面分区列表里看不到固态硬盘大概率是VMD模式。如果你只是在Boot菜单里找不到U盘启动项那是U盘问题如果是在安装程序里看到了硬盘但分不了区那是分区表类型问题需要用parted或gdisk转换成GPT格式。硬件排查的顺序永远是从固件开始BIOS里能不能看到硬盘、能看到的话用什么模式、再考虑系统层面怎么处理。加大约20GB给swap分区的话安装过程会慢一些但无伤大雅。真正的坑是有人把根分区只分了20GB结果装完ROS和几个大型依赖库后磁盘直接爆满系统各种假死。所以我前面强调根分区至少80GBhome分区单独给这个规划决定了你以后能在这台机器上走多远。6.3 如果哪一天你想删除Ubuntu恢复Windows装双系统的人基本都动过这个念头。删除Ubuntu不是简单地格式化分区就完了因为EFI启动项里还有Ubuntu的GRUB引导不清理的话开机还是会进GRUB菜单甚至出现GRUB rescue的报错。第一步先在Windows下用磁盘管理删除Linux的分区。右键点击这些分区选择删除卷把Ubuntu的根分区、home分区、swap分区全部删掉变成黑色未分配空间。第二步处理引导项。最简单的方式是下载一个Bootice或EasyUEFI工具在UEFI启动序列里删除Ubuntu项。没有这些工具的话可以用Windows安装U盘启动进入命令行执行diskpart选中EFI分区挂载到某个盘符然后删除\EFI\ubuntu整个文件夹。第三步确保Windows引导正常。如果删完分区后发现Windows也起不来了用Windows安装U盘启动到命令行执行bootrec /fixmbr、bootrec /fixboot、bootrec /rebuildbcd这三连一般能修复引导。如果你想保留Ubuntu的分区空间给Windows用在磁盘管理里把未分配空间扩展到相邻分区即可。6.4 最后分享一条实用心得先规划再动手别拿数据开玩笑这台Matebook 14是我折腾过最顺利的笔记本之一但顺利是建立在反复确认的前提之上的。装双系统这件事最难的不是命令而是你在每一步操作前都要清楚自己正在做什么。分区之前确认数据已经备份改BIOS之前确认自己能还原用efibootmgr改启动顺序之前先记录下原来的值。我个人这些年装过不下十台双系统机器最大的体会是一定要在动手前把所有资料和驱动备份好尤其是Windows的BitLocker恢复密钥。很多人装完双系统后发现Windows进不去第一反应就是慌其实绝大多数时候只是引导项顺序被打乱了或者EFI分区被误删了修复工具和命令都现成真正不可逆的只有数据丢失。把上面这套流程走完你得到的不只是一个能启动的Ubuntu而是一个让你愿意每天开机进去写代码、跑实验、调设备的环境。以后再有人问你双系统到底怎么装你就可以把这篇总结甩给他告诉他按着顺序来基本不会出大问题。