ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

U盘 Ubuntu+ROS2 随身系统:制作与配置指南

U盘 Ubuntu+ROS2 随身系统:制作与配置指南 手里常年躺着几个U盘一个装着PE一个装着Linux安装盘还有一个是我最常用的——整块盘上装了一套完整的 Ubuntu 加上 ROS2 环境。插到任何一台 x86 电脑上改一下启动顺序五分钟之内就能进到自己的桌面打开终端敲一句ros2 run turtlesim turtlesim_node小乌龟就爬出来了。这套“U盘 Ubuntu 系统”的方案我在实验室的公用机器、客户现场只有 Windows 的演示机、以及培训教室里反复用过几十次稳定性完全够日常开发和教学演示。它解决的痛点很明确不是每台电脑都能让你随便分区、随便装系统但每台电脑基本都允许你插个 U 盘启动。适合刚接触 Ubuntu 和 ROS2 的新手也适合需要“随身携带开发环境”的老手尤其是做机器人开发、要在多台设备之间来回切换的朋友。下面我把自己踩过的坑、验证过的参数和一个完整可复现的流程一次讲透。1. 为什么要把 Ubuntu 和 ROS2 装进 U 盘需求拆解与方案选型先说清楚一件事在 U 盘上“跑”Ubuntu和“装”Ubuntu 到 U 盘是两码事。前者是 Live 模式改啥重启都没了后者是真正把系统写进 U 盘跟你装在硬盘上一样关机再开数据还在。我们要做的是后者而且要在里面再叠一层 ROS2。理解这个区别后面所有选择的逻辑就顺了。1.1 三类最典型的使用场景第一类是公用电脑场景。实验室、教研室、公司培训室的机器硬盘上锁着 Windows装了一堆管控软件你根本没权限动分区表。这时候 U 盘系统就是唯一的自由空间插上、重启、进 BIOS 选 U 盘启动进去之后这个环境完全归你。第二类是演示和交付场景。做机器人项目甲方现场只有一台办公电脑你总不能抱着一台工控机满世界飞。U 盘系统里提前配好 ROS2、RViz2、导航相关的依赖现场插上就能演示演示完拔下来走人不留下任何痕迹。第三类是多机同步场景。家里一台台式、办公室一台笔记本、出差带一台轻薄本三台机器硬件完全不同但如果你用的是同一块 U 盘里的系统环境就是一致的。这点对 ROS2 特别重要因为 ROS2 的工作空间、环境变量、依赖版本稍有差异就会出各种莫名其妙的编译错误。提示如果你只是偶尔想体验一下 Ubuntu用虚拟机比如 VMware 里装一个更省事性能损耗也可以接受。但涉及 GPU、USB 设备直通、真实硬件调试的 ROS2 场景虚拟机那层转发会带来大量额外麻烦U 盘实机方案更靠谱。1.2 三种方案的取舍全盘安装、虚拟机、U 盘系统把这三者放一起对比选型逻辑就很清楚了。方案优点缺点适用场景硬盘全盘/双系统安装性能最好稳定无额外硬件需要动分区可能影响原系统引导固定工位长期开发虚拟机安装零风险快照方便不碰硬件性能损耗USB/GPU 直通麻烦学习、轻量测试U 盘系统随身、不碰原机、环境一致受 U 盘读写速度限制演示、多机切换、公用机我个人的判断标准是如果这台机器你只是“借用”选 U 盘如果这台机器是你的主力工作机老老实实双系统或者全盘装。因为 U 盘系统的短板在存储介质本身哪怕用再好的 U 盘随机读写也普遍不如固态硬盘编译大型 ROS2 包的时候体感差异很明显。1.3 硬件选型的硬指标别拿十年前的老 U 盘来试这一条我一定要单独拎出来说。U 盘系统能不能用得爽90% 取决于那块 U 盘的 4K 随机读写能力而不是标称的顺序读写速度。市面上很多 U 盘宣传“读取 400MB/s”那是顺序大文件速度装系统、跑系统看的是小文件随机读写这个参数往往低得可怜。底线要求USB 3.0 及以上接口的 U 盘容量 64GB 起步建议 128GB。推荐方案直接用 USB 3.2 的移动固态硬盘PSSD或者用硬盘盒加一块 M.2 固态。体积稍大但体验提升是断崖式的ROS2 编译速度能接近内置硬盘。避坑那种几十块钱的“扩容盘”标 128G 实际只有 16G装到一半直接写入失败。用 DiskGenius 之类工具看实际容量或者干脆认准正规品牌。还有一点USB 接口的供电和带宽。有些老机器前置 USB 口供电不足移动固态会反复掉盘装系统装到一半失败。装的时候尽量插机箱后面的原生 USB 口笔记本就直接插本机口别接扩展坞。2. 制作前的准备工作镜像、启动盘工具与 BIOS 认知准备工作做扎实后面能省两个小时。这一节我把镜像版本、工具选择、容量规划三件事讲清楚每一件都有明确的“为什么”。2.1 Ubuntu 版本和 ROS2 版本必须对上号这是新手最容易翻车的地方很多人装完 Ubuntu 发现 ROS2 装不上八成是版本没对应。ROS2 每个发行版都是绑定特定 Ubuntu 版本的官方对应关系如下。Ubuntu 版本代号对应 ROS2 版本支持状态22.04 LTSJammyHumble长期支持生态最全24.04 LTSNobleJazzy当前主推新版特性多20.04 LTSFocalFoxy已停止维护不建议新项目我的建议很直接新手选 22.04 Humble追求新特性选 24.04 Jazzy。为什么推荐 Humble因为它出来时间长社区问题解答最全你搜到的绝大多数 ROS2 教程、机器人开发资料、八叉树地图导航、RViz2 相关配置默认都是 Humble 环境下验证过的。选 Jazzy 的话遇到问题可能要自己啃官方文档。下载镜像去 Ubuntu 中文官网或者国内镜像站清华、阿里、中科大都有国内直连官方站速度感人用镜像站能快到飞起几分钟下完几个 G。2.2 启动盘工具怎么选Rufus、Ventoy 还是 Etcher做启动盘的工具很多我常用的三个各有适用场景。RufusWindows 平台首选体积小、免安装、速度快支持 GPT/MBR 切换也能做 Windows 启动盘。缺点是界面选项多新手容易选错。做 Ubuntu 盘的时候分区类型选 GPTUEFI 机器或 MBR老 BIOS 机器文件系统保持默认即可。balenaEtcher跨平台界面极简三步搞定几乎不会选错。缺点是速度比 Rufus 慢一点写入前会校验好处是能避免“写入不完整”这种坑。Ventoy这个是进阶玩法。Ventoy 把 U 盘做成一个“多镜像启动器”你只要把 iso 文件拖进去就行一个盘能同时放 Ubuntu、Windows PE、各种工具盘开机时菜单选。你要是经常装机强烈建议用 Ventoy。注意这里有个关键点——做启动盘的 U 盘和最终装系统的 U 盘强烈建议不是同一块。虽然技术上可以把安装镜像和安装目标放一块盘Ubuntu 安装器会从内存里跑但操作时容易看错设备节点一不留神把安装盘自己给格了。准备两块盘一块做启动盘一块做系统盘省心又安全。2.3 容量规划系统、ROS2、工作空间各吃多少先算一笔账再决定买多大的盘。Ubuntu 基础系统约 8-12GB完整桌面版。ROS2 桌面版desktop安装后约 2-3GB加上 Gazebo、RViz2 等仿真依赖可能到 5-6GB。开发工具链CMake、GCC、Python 环境、Docker、VS Code加起来 5-10GB。你自己的工作空间和数据集这个没上限一个 rosbag 数据集动辄几十 G。所以 64GB 是最低门槛装完基础环境加上一点余量就紧张了128GB 是比较舒服的选择256GB 的移动固态可以让你彻底不用担心空间还能放不少数据集。再说分区规划如果整块盘都给这个系统我通常这样分EFI 分区512MBFAT32 格式这是 UEFI 启动必须的。根分区/40-80GBext4 格式放系统和软件。家目录/home剩余空间ext4 格式放你的代码和数据。交换空间如果内存低于 16G建议给 8-16G内存 16G 以上可以给 4-8G 意思一下或者干脆不建用 swapfile 代替。交换空间这块多说一句在 U 盘上频繁读写 swap 会明显缩短介质寿命也会拖慢系统。所以内存够的机器宁可把 swappiness 调低也不要把 swap 建得太大。3. 安装过程实录从 BIOS 设置到分区落地前面铺垫完了这一节是硬核操作。我按时间顺序一步步来每一步都告诉你“为什么这么点”。3.1 进 BIOS、关掉 Secure Boot、选 U 盘启动把启动盘插上重启狂按进 BIOS 的键。不同品牌按键不一样这个必须记熟戴尔F2 进 BIOS 设置F12 是启动菜单。联想含 ThinkPadF1 或 F2 进设置F12 是启动菜单。惠普F10 进设置F9 是启动菜单。华硕Delete 或 F2ESC 是启动菜单。宏碁/微星F2 / DeleteF11 / F12 是启动菜单。进去之后要改三处第一关掉 Secure Boot安全启动。U 盘系统里的引导程序没经过微软签名开着安全启动会直接拒绝加载。在 Security 或 Boot 标签下找 Secure Boot设为 Disabled。第二关掉 Fast Boot快速启动。Windows 的快启会让硬盘处于一种“半休眠”状态U 盘系统挂载硬盘时可能出问题纯 U 盘系统虽然影响小但关了更保险。第三把 U 盘调到启动顺序第一位或者直接用启动菜单F12 那类临时选一次。如果你只是想这次从 U 盘启动、不想改全局顺序用启动菜单更干净。还有个隐形的坑Intel RST / RAID 模式。有些预装 Windows 的新机器硬盘默认是 RAID 模式Ubuntu 安装器会看不到硬盘。这个对纯 U 盘系统影响不大但如果你后续想挂载内置硬盘就得先在 BIOS 里把 SATA 模式改成 AHCI——注意改之前一定要先在 Windows 里做安全模式引导否则 Windows 可能直接蓝屏。这一步如果只是玩 U 盘系统可以先跳过。3.2 启动后选“试用”还是直接装U 盘启动后会出现 GRUB 菜单选 “Try or Install Ubuntu”。进去之后有两个入口Try Ubuntu试用不改任何东西和Install Ubuntu直接安装。我习惯先用 Try 模式进去看一眼硬件识别情况——WiFi 能不能用、显卡驱动正不正常、U 盘是不是被正确识别。确认没问题再双击桌面上的安装图标开始装。安装过程中语言选中文或英文都行但我强烈建议键盘布局选 English (US)中文输入法后面单独装用系统自带的布局有时候会把某些符号键搞乱写代码的时候很痛苦。网络这一步可以先不连避免安装器在下载更新时卡住。等系统装完、换好国内源之后再统一更新速度快得多。3.3 手动分区这一步决定了系统能不能启动到了“安装类型”这一页Ubuntu 会给你几个选项清除整个磁盘、与 Windows 共存、其他选项。必须选“其他选项”Something else也就是手动分区。因为自动分区会去动内置硬盘那不是我们想要的。进去之后你会看到所有磁盘列表这时候要非常仔细地确认哪块是 U 盘。判断方法看容量对不对、看设备名一般 U 盘是/dev/sdb或/dev/sdc内置硬盘是/dev/sda或 NVMe 的/dev/nvme0n1。这一步看错就是灾难级事故内置硬盘的数据会被清掉。拿不准就在终端里敲lsblk和sudo fdisk -l交叉验证。确认好之后在 U 盘设备的空闲空间上依次建分区EFI 系统分区大小 512MB类型选 EFI System Partition格式 FAT32。挂载点/boot/efi。根分区大小 40-80GB类型 Ext4挂载点/。家目录分区剩余空间或指定大小类型 Ext4挂载点/home。交换分区可选类型 swap area大小按前面说的内存情况定。3.4 引导程序安装位置整个流程最大的坑分区页面最下面有一个下拉框写着“安装启动引导器的设备”Device for boot loader installation。这个必须选成你的 U 盘设备节点而不是默认的内置硬盘。为什么这个这么关键因为 GRUB 引导程序如果写到了内置硬盘的 EFI 分区就会覆盖掉原本的 Windows 引导而且问题是一旦你把 U 盘拔掉电脑开机就找不到系统了直接进入 grub rescue 界面普通用户根本没法恢复。反过来把引导装在 U 盘上拔掉 U 盘电脑照常进 Windows插上 U 盘就能进你的 Ubuntu两边互不干扰这才是我们要的效果。注意如果你用的是 UEFI 模式安装新机器基本都是引导文件会装到/boot/efi分区也就是你刚建的那个 512MB 的 EFI 分区里。GRUB 会把EFI/ubuntu/目录写进去。选设备的时候直接选 U 盘比如/dev/sdb即可安装器会自动找到上面的 EFI 分区。确认无误点“现在安装”剩下就是等进度条。这里有个民间段子说“进度条不动是正常的”其实安装过程确实会有几次长时间停顿比如格式化 ext4、安装软件包只要硬盘灯还在闪就别慌。移动固态大概 10-15 分钟装完普通 U 盘可能 30 分钟以上。装完提示重启拔掉启动盘如果启动盘和系统盘是两块的话进 BIOS 确认从系统盘启动就能看到你自己的 Ubuntu 了。4. 装完之后的收尾ROS2、输入法、常用配置系统能进桌面只是第一步真正让这块 U 盘变成“战斗力工具”的是后面这一堆配置。这一节按优先级排序讲。4.1 换源然后装 ROS2第一件事换国内源。Ubuntu 默认的软件源在国外更新一次要等到天荒地老。用清华或阿里的源把/etc/apt/sources.list换掉更新速度能提升十倍以上。# 备份原配置 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 编辑替换为清华源22.04 为例 sudo sed -i s|http://.*archive.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo sed -i s|http://.*security.ubuntu.com|https://mirrors.tuna.tsinghua.edu.cn|g /etc/apt/sources.list sudo apt update sudo apt upgrade -y然后装 ROS2。官方方式是配置 ROS2 的 apt 源再安装但官方源在国内也比较慢。我的做法是用国内镜像的 ROS2 源或者直接用社区的一键安装脚本比如鱼香 ROS 的那个脚本它会自动帮你选镜像、配依赖、装完整环境对新手特别友好。手动装的话核心命令大概是# 安装 ROS2 Humble 桌面版含 RViz2、demo 节点等 sudo apt install ros-humble-desktop -y # 安装开发工具 sudo apt install ros-dev-tools -y # 把环境变量写进 .bashrc开机自动生效 echo source /opt/ros/humble/setup.bash ~/.bashrc source ~/.bashrc装完验证一下ros2 run demo_nodes_cpp talker # 另开一个终端 ros2 run demo_nodes_py listener一个发消息一个收消息说明消息传递机制跑通了。如果提示ros2: command not found99% 是环境变量没 source或者版本名写错了比如把 humble 写成了 humble-desktop。提示如果你用的是 Jazzy把上面所有humble换成jazzy即可命令结构完全一样。4.2 中文输入法别在系统布局里硬凑写代码的人对输入法其实要求不高但至少得能打中文注释。我试过搜狗、fcitx5、ibus 拼音现在的推荐是fcitx5 拼音轻量、稳定、不容易和快捷键冲突。sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 -y装完在“语言支持”里把键盘输入法系统改成 fcitx5注销重登右上角就会出现输入法图标在配置里加一个“拼音”就行。搜狗输入法也能用但它的 deb 包有时会和系统依赖打架装完要手动处理依赖问题新手建议先用 fcitx5 自带的拼音。4.3 装上一套顺手的开发环境ROS2 开发光有 ROS2 是不够的这几个我基本是装完系统必配SSH 服务sudo apt install openssh-server然后sudo systemctl enable ssh。这样你可以从另一台电脑远程连过来开发尤其是 U 盘系统跑在别人的机器上时远程操作方便太多。连不上通常是防火墙或者 sshd 没启动先systemctl status ssh看一眼。Docker做 micro-ROS 或者多环境隔离会用到官方文档有安装脚本注意把当前用户加进 docker 组省得每次都 sudo。VS CodeUbuntu 上写 ROS2 的标配装个 C、Python、CMake Tools 扩展就够用。CMake 和编译工具链sudo apt install build-essential cmake gitROS2 的 C 包全靠它。环境变量配置这块有个常见坑别往~/.bashrc里塞太多东西。有些人把一堆工作空间的 setup.bash 全 source 进去结果 A 工作空间和 B 工作空间的环境互相覆盖编译出来的节点行为诡异。我的做法是每个工作空间单独写一个 alias 或者小脚本需要哪个 source 哪个。4.4 避免干扰内置硬盘的引导装完之后重启你可能会发现电脑直接进了 UbuntuWindows 选项不见了。别慌这通常是 BIOS 里的启动顺序被改了或者 UEFI 启动项顺序变了。进 BIOS 把 Windows Boot Manager 调回第一位或者把 U 盘启动项删掉插着 U 盘的时候才会出现就能恢复。如果内置硬盘的 GRUB 真被覆盖了比如手滑把引导装到了内置盘可以用 Windows 安装盘修复引导或者在 Ubuntu 里用efibootmgr调整启动项顺序。这个属于事后补救最好的策略还是安装时看清楚那个下拉框。5. 常见问题与排查速查表U 盘系统的问题八成集中在“启动”和“性能”两块。我把这些年遇到的典型问题整理成表遇到问题时按图索骥。5.1 启动相关问题排查现象可能原因排查/解决办法开机直接进 Windows启动顺序没改进 BIOS 把 U 盘调到第一或用 F12 启动菜单黑屏只有一个光标闪引导没装到 U 盘或 EFI 分区有问题重装时确认引导设备选的是 U 盘卡在grub rescueGRUB 找不到配置文件通常是引导分区被破坏用启动盘进 Live 模式修复装完后拔盘进不去系统引导装在 U 盘上属正常插回 U 盘即可或改 BIOS 顺序报错no bootable deviceBIOS 模式与分区表不匹配UEFI 机器要用 GPT 分区表老机器用 MBR卡 logo 无限转圈显卡驱动或内核参数问题启动参数加nomodeset试试nomodeset这个参数很实用。在 GRUB 菜单里按e编辑启动项在linux那行末尾加上nomodeset按 F10 启动能绕过大部分显卡驱动导致的卡死。进了系统之后再装正确的显卡驱动。5.2 运行期问题卡顿、权限、命令找不到U 盘系统跑起来之后最常遇到的问题有这么几个系统整体卡顿。先去任务管理器看是不是在疯狂读写 U 盘。常见的元凶是系统日志和临时文件。解决办法是在/etc/fstab里给根分区加上noatime挂载选项减少不必要的写入再把/tmp和/var/log挂到内存里tmpfs能显著减少 U 盘写入。# /etc/fstab 示例片段 UUIDxxxx-xxxx / ext4 defaults,noatime,errorsremount-ro 0 1 tmpfs /tmp tmpfs defaults,noatime,mode1777 0 0 tmpfs /var/log tmpfs defaults,noatime,mode0755 0 0改完fstab一定要用sudo mount -a验证写错了会导致开不了机。ros2 command not found。前面说过基本是环境没 source。检查~/.bashrc里有没有那行source /opt/ros/xxx/setup.bash或者手动 source 一次看看。还有一种情况是装了 ROS2 但装的是ros-core这种精简版命令行工具不全装ros-humble-desktop就好。U 盘权限问题。有些系统挂载 U 盘之后普通用户没有写权限往里面拷数据报 Permission denied。这是因为 U 盘的文件系统如果是 NTFS 或 exFAT挂载时属主变成了 root。解决办法是挂载时指定 uid 和 gid或者在/etc/fstab里配置好。SSH 连不上。先确认ssh服务在跑systemctl status ssh再看 IP 对不对ip addr最后看防火墙有没有拦sudo ufw status。U 盘系统换到不同网络环境IP 会变这个要重新确认。5.3 数据安全和介质寿命的那些事U 盘的闪存颗粒有写入寿命频繁读写会加速损耗。除了前面说的noatime和 tmpfs 方案还有几条习惯能延长寿命别在 U 盘系统里跑长期的日志服务比如长时间运行的 rosbag record数据集尽量存到外接硬盘或者网络存储上。定期备份/home目录用 rsync 同步到另一块盘U 盘坏了直接换一块恢复。别在读写过程中拔盘这是损坏文件系统最常见的原因。真要拔先sync一下或者正常关机。准备一块好点的盘子移动固态的寿命和稳定性远胜普通 U 盘长期用的话这笔钱值得花。6. 实战心得与长期维护走到这一步你的 U 盘系统基本能用了。但「能用」和「好用」之间还有一段距离这一节聊几个我实际用下来觉得最有价值的经验。6.1 把 U 盘系统当成一台「会走的电脑」来维护我的习惯是给它起个固定的主机名固定一个用户名这样不管插到哪台机器上路径、环境变量、SSH 端口都是一致的脚本不用改就能跑。ROS2 里涉及多机通信的场景ROS_DOMAIN_ID也固定下来避免和其他人的机器人串到一块去。另外把常用的配置全部脚本化。装系统、换源、装 ROS2、配输入法、装 Docker这一整套我写成一个 shell 脚本放在 U 盘里。下次换新盘子跑一遍脚本半小时内一个新环境就起来了。这比手动点一遍可靠多了也不会漏步骤。6.2 备份和快照的思路U 盘系统的最大风险就是那块介质本身所以备份策略要提前想好。我的做法分两层第一层是系统层备份。用timeshift这类工具对根分区做快照在系统还没被自己折腾坏之前存一个干净的还原点。不过要注意快照本身也占空间U 盘容量有限的话快照别留太多。第二层是数据层备份。/home目录用 rsync 定期同步到另一块移动硬盘或者 NAS。命令很简单rsync -av --delete /home/yourname/ /media/backup/home_backup/--delete参数让目标端和源端保持一致删掉的文件也会被同步删除适合做镜像备份。6.3 性能调优让 U 盘系统不「肉」最后聊几个让 U 盘系统跑得更顺的调优手段。降低 swap 使用倾向。修改/etc/sysctl.conf加一行vm.swappiness10让系统尽量用内存而不是 swap减少 U 盘写入。把编译临时目录放内存。如果你有足够内存比如 16G 以上可以在/etc/fstab里给/tmp配一个大点的 tmpfsROS2 编译时的中间文件就走内存速度快很多。开启 zram。用内存做压缩交换区比 U 盘 swap 快得多。sudo apt install zram-tools装一下配置好大小之后系统在内存吃紧时也不会去疯狂读 U 盘。确认 U 盘接口跑在 USB 3.0 上。用lsusb -t看协商速率如果显示的是 480M 而不是 5000M说明插到了 USB 2.0 口或者线材不行换个口再试。这个坑很隐蔽明明盘子很快结果插错口速度直接掉到十分之一然后你还在那怀疑 U 盘质量。我自己用下来最舒服的一套组合是256G 的 USB 3.2 移动固态 Ubuntu 22.04 ROS2 Humble fcitx5装在一个专门的收纳袋里随身带着。插到任何一台 UEFI 电脑上改一次启动顺序之后开机直接按 F12 选一下就能进整个环境的体感和装在硬盘上差别已经很小了。真正需要长期高频编译的大项目我还是会回到固定工作站上但日常开发、调试、演示这块 U 盘已经足够顶事。你如果刚开始接触建议先拿一块 64G 的普通 U 盘按上面的流程走一遍把坑都踩一遍摸清楚每个环节在干什么再换好介质重来一次这样既不会浪费钱也不会因为第一次就卡在某个细节上放弃。
返回列表