资讯动态

打造移动机器人开发环境:将Ubuntu与ROS Noetic安装至U盘全攻略

发布时间:2026/8/12 9:38:45 来源:尧图企业网站定制
1. 项目概述为什么要把Ubuntu装进U盘最近有不少朋友在问有没有一种方法能让我随身携带一个完整的Ubuntu系统插到任何一台电脑上都能用而且还能在上面跑ROS搞机器人开发答案是肯定的而且这招特别适合学生、需要多台设备切换的开发者或者单纯想在不影响主力机的情况下尝鲜Linux和ROS的朋友。简单来说这个项目就是把Ubuntu 20.04 LTS操作系统完整地安装到一个高速U盘或者移动固态硬盘里而不是像常规那样装进电脑的内置硬盘。这样一来这个U盘就变成了一个“口袋里的电脑”你可以在图书馆的公共电脑、实验室的工位机甚至朋友的笔记本上通过BIOS/UEFI设置从这个U盘启动瞬间进入你熟悉的、配置好所有开发环境的Ubuntu桌面。更关键的是我们还要在这个“移动系统”里搭建好完整的ROS Noetic Ninjemys开发环境让你走到哪机器人代码就能写到哪、仿真到哪。听起来很酷但有几个核心问题需要先搞清楚速度能跟上吗数据安全吗兼容性怎么样我实测下来只要选对U盘强烈推荐USB 3.2 Gen1及以上接口的固态U盘或移动固态硬盘日常编程、编译ROS包、运行Gazebo仿真流畅度完全可接受。数据安全方面系统就在你手里物理隔离比云主机在某些场景下更让人安心。兼容性主要取决于目标电脑的硬件尤其是显卡和Wi-Fi网卡但Ubuntu 20.04的驱动覆盖已经相当广泛主流硬件基本即插即用。2. 前期准备工具选择与避坑指南工欲善其事必先利其器。这一步没做好后面可能步步是坑。2.1 硬件选择U盘是成败的关键千万别用那种十几块钱的普通U盘那种盘连续读写速度可能只有几十MB/s装系统慢如蜗牛运行起来更是卡顿到怀疑人生编译一个ROS包的时间够你喝杯咖啡了。我的推荐是首选NVMe固态硬盘硬盘盒。这是性能天花板。买一块M.2 NVMe SSD如512GB或1TB配一个USB 3.2 Gen210Gbps或雷电接口的硬盘盒。连续读写轻松突破1000MB/s体验和内置SATA SSD几乎没区别。成本稍高但性能无敌。次选固态U盘USSD。专门为高速存储设计的U盘主控和颗粒更好。选择标称读写速度在400MB/s以上的产品品牌如闪迪CZ880/CZ880、三星Bar Plus、雷克沙P30等。这是性价比和便携性的平衡点。底线高速普通U盘。至少确保是USB 3.0即USB 3.2 Gen1接口读取150MB/s写入80MB/s。用于轻度学习和体验尚可。容量建议64GB起步128GB或256GB更舒适。因为除了系统约20-30GB你还需要空间安装ROS、Gazebo、各种开发工具以及存放自己的代码和数据集。注意整个安装过程会对U盘进行格式化请务必提前备份U盘内所有重要数据。2.2 软件准备镜像与制作工具Ubuntu 20.04.6 LTS 桌面版镜像前往Ubuntu官网或国内镜像站如阿里云、清华源下载ubuntu-20.04.6-desktop-amd64.iso文件。LTS代表长期支持稳定性有保障也是ROS Noetic官方推荐系统。启动盘制作工具在Windows或macOS上你需要一个工具把ISO镜像“烧录”到U盘。Ventoy强烈推荐这是我目前最常用的工具。它的革命性在于你只需安装一次Ventoy到U盘之后就可以直接把多个ISO文件拷贝到U盘里启动时会出现菜单让你选择要启动哪个系统。后期想换系统、加个WinPE维护盘无比方便。RufusWindows经典老牌、可靠、速度快。选择“DD模式”或“ISO镜像模式”通常都能成功。对于Ubuntu一般用默认设置即可。balenaEtcher跨平台界面简洁操作无脑适合新手。在macOS上尤其好用。2.3 目标电脑的BIOS/UEFI设置这是让电脑从U盘启动的关键一步也是新手最容易卡住的地方。插入制作好的启动U盘重启电脑。在开机自检POST画面快速按下启动菜单选择键。这个键因品牌而异常见的有F12戴尔、联想、F11华硕、宏碁、F9惠普、ESC部分机型。如果找不到就狂按F2或Del键进入BIOS/UEFI设置界面。在启动菜单Boot Menu中选择你的U盘设备。设备名可能显示为“UEFI: [你的U盘品牌]”或“USB: [你的U盘品牌]”。优先选择带“UEFI”前缀的选项这代表以UEFI模式启动是现代电脑的标准方式兼容性更好。如果启动菜单里没找到U盘需要进入BIOS/UEFI设置找到“Security”或“安全”选项卡关闭“Secure Boot”安全启动。Ubuntu 20.04虽然支持安全启动但有时第三方驱动或自定义内核会引发问题关掉能省去很多麻烦。找到“Boot”或“启动”选项卡确保“Boot Mode”或“启动模式”为“UEFI”或“UEFI and Legacy”/“UEFI and CSM”。将你的U盘设备通过“”号或拖拽移动到启动顺序的第一位。按F10保存并退出电脑会自动重启并从U盘启动。3. Ubuntu安装到U盘的核心步骤与详解成功从U盘启动后你会进入Ubuntu的“试用桌面”。桌面上有一个“Install Ubuntu 20.04 LTS”的图标双击它开始安装。请注意我们现在是要把系统安装到另一个U盘目标盘而不是当前运行安装程序的这个U盘安装盘。3.1 安装类型选择“其他选项”是关键安装向导的前几步语言、键盘布局、更新和第三方软件按提示操作即可。在“安装类型”这一步千万不要选择“清除整个磁盘并安装Ubuntu”或“与现有系统共存”这会抹掉你电脑内置硬盘的数据必须选择“其他选项”Something else然后点击“继续”。这会进入手动分区界面让你精确控制安装位置。3.2 手动分区方案为移动系统量身定制在分区界面你会看到所有存储设备。通过容量和型号仔细辨认出你的目标U盘比如512GB的那个千万别选错了选中目标U盘后你可以点击“新建分区表”这会清空该盘所有现有分区类型选择“gpt”针对UEFI启动。接下来为这个U盘创建至少两个必需的分区EFI系统分区ESP大小512MB官方建议最小给512MB足够富裕。新分区的类型主分区。新分区的位置空间起始位置。用于EFI系统分区。这个分区用于存放UEFI启动所必需的引导文件。没有它电脑无法识别并启动这个U盘系统。根分区/大小剩余的所有空间例如对于一个512GB的U盘可以分配约480GB。新分区的类型主分区。新分区的位置空间起始位置。用于Ext4 日志文件系统。挂载点/。这是系统文件和所有软件安装的位置。Ext4是Ubuntu默认且稳定的文件系统。为什么不分交换分区swap和/home分区交换分区对于安装在U盘上的系统频繁的交换操作会极大加速U盘损耗且速度慢。现代Ubuntu默认使用交换文件swapfile动态灵活更推荐。我们可以在系统装好后根据需要调整。/home分区对于移动系统将用户数据和系统文件分开的好处被削弱了。因为整个U盘都是可移动的重装系统意味着要重新分区反而麻烦。保持一个根分区简化了管理。你的个人数据可以放在根分区下的/home目录同样安全。分区完成后最关键的一步在界面底部“安装启动引导器的设备”下拉菜单中务必选择你刚才为U盘创建的EFI分区对应的设备例如/dev/sdb1。这确保引导程序被安装到U盘自身而不是电脑的内置硬盘上实现真正的“随身携带、独立启动”。3.3 完成安装与首次启动确认分区和引导设备无误后点击“现在安装”确认格式化警告然后设置时区、用户名和密码。安装过程大约需要15-30分钟取决于U盘速度。安装完成后重启电脑。在重启过程中系统会提示你“请拔出安装介质即启动U盘然后按回车”。此时先拔出用于安装的那个U盘安装盘留下已经装好系统的U盘目标盘再按回车。电脑会从你刚装好系统的U盘再次启动。如果重启后直接进入了你电脑原来的系统如Windows说明BIOS/UEFI的启动顺序又跳回了内置硬盘。只需重复2.3节的步骤在启动菜单中选择从你的Ubuntu U盘启动即可。成功进入桌面后建议先在“软件和更新”中更换为国内的软件源如阿里云、清华源然后执行sudo apt update sudo apt upgrade进行首次系统更新。4. 在U盘Ubuntu上搭建ROS Noetic环境系统跑起来了接下来就是重头戏搭建ROSRobot Operating System环境。我们选择ROS 1的最后一个LTS版本——Noetic Ninjemys它完美支持Ubuntu 20.04。4.1 基础配置与ROS安装打开终端CtrlAltT我们一步步来。第一步设置软件源确保你的软件源支持universe,restricted,multiverse组件。通常安装桌面版时默认已启用。可以通过“软件和更新”程序图形化查看或在终端确认sudo add-apt-repository universe sudo add-apt-repository restricted sudo add-apt-repository multiverse sudo apt update第二步添加ROS软件源ROS的包不在Ubuntu官方源里需要添加ROS官方的源。sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list这里$(lsb_release -sc)会自动获取你的系统代号对于20.04就是focal。第三步添加密钥sudo apt install curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -如果遇到网络问题可以尝试使用国内镜像源例如中科大的ROS源将第二步中的URL替换为http://mirrors.ustc.edu.cn/ros/ubuntu/。第四步安装ROS桌面完整版sudo apt update sudo apt install ros-noetic-desktop-full这个过程会下载安装ROS核心、通信中间件、常用工具如Rviz、Rqt以及仿真器Gazebo等大量软件包耗时较长请耐心等待。desktop-full版本最适合学习和开发。第五步配置环境变量安装完成后需要让系统知道ROS命令的位置。echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc这行命令将ROS的初始化脚本添加到你的bash shell配置文件中每次打开终端都会自动生效。第六步安装构建工具和依赖ROS早期使用rosdep和rosinstall来管理依赖和扩展包。sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential sudo rosdep init rosdep updaterosdep init和update可能会因网络问题失败多试几次或寻找国内可用的初始化文件替代方案。4.2 验证ROS安装与初体验安装是否成功跑个小海龟 demo 测试一下最直观。打开第一个终端启动ROS核心Masterroscore看到日志输出说明ROS核心启动成功。打开第二个终端启动一个小海龟仿真节点rosrun turtlesim turtlesim_node此时会弹出一个蓝色背景的窗口里面有一只小海龟。打开第三个终端启动键盘控制节点rosrun turtlesim turtle_teleop_key保持这个终端为活动窗口然后使用键盘上的方向键你就可以控制小海龟移动了如果成功恭喜你ROS环境基本搭建完成。4.3 进阶配置工作空间与常用工具真实的开发不会在ROS系统目录下进行我们需要创建自己的工作空间Workspace。创建并编译工作空间mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make source devel/setup.bash echo source ~/catkin_ws/devel/setup.bash ~/.bashrccatkin_make是ROS的构建工具。最后一行将你的工作空间环境也添加到bashrc这样在任何终端都可以使用你工作空间里编译的包。安装常用开发工具VS Code轻量级强大的代码编辑器对ROS/C/Python支持良好。sudo snap install --classic codeTerminator可以分屏的终端方便同时运行多个ROS节点。sudo apt install terminator5. 性能优化与系统调校安装在U盘上的系统需要一些特别的优化来提升体验和寿命。5.1 减少磁盘写入延长U盘寿命U盘/SSD的闪存颗粒有写入寿命限制。我们可以将频繁写入的临时文件转移到内存中tmpfs。编辑/etc/fstab文件sudo nano /etc/fstab在文件末尾添加以下几行# 将临时目录挂载到内存 tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,size2G 0 0 tmpfs /var/tmp tmpfs defaults,noatime,nosuid,nodev,size1G 0 0 tmpfs /var/log tmpfs defaults,noatime,nosuid,nodev,mode0755,size100M 0 0 tmpfs /var/spool tmpfs defaults,noatime,nosuid,nodev,mode0755,size100M 0 0size参数可以根据你的内存大小调整如内存8G/tmp给2G是安全的。noatime表示不记录文件访问时间减少读操作带来的写入。注意这会导致重启后这些目录下的文件丢失。对于日志这通常是可接受的因为问题排查通常看当前会话的日志。调整交换文件策略如前所述避免使用交换分区。Ubuntu默认已创建交换文件。我们可以降低其使用倾向以减少对U盘的写入。编辑/etc/sysctl.confsudo nano /etc/sysctl.conf添加vm.swappiness10 vm.vfs_cache_pressure50swappiness10默认60表示系统更倾向于使用物理内存而非交换空间。执行sudo sysctl -p使设置立即生效。5.2 提升图形性能与驱动在U盘系统上运行Gazebo等3D仿真图形性能是关键。安装合适的显卡驱动对于NVIDIA显卡在“软件和更新” - “附加驱动”选项卡中选择专有的、带“tested”标识的驱动版本如nvidia-driver-535进行安装。重启后生效。对于AMD/Intel集成显卡通常使用开源驱动xserver-xorg-video-intel或amdgpu即可系统一般已自带。确保系统更新到最新。优化Gazebo启动Gazebo首次启动会下载模型非常慢且可能失败。我们可以预先下载所有模型。cd ~ wget https://github.com/osrf/gazebo_models/archive/refs/heads/master.zip unzip master.zip mkdir -p ~/.gazebo/models cp -r gazebo_models-master/* ~/.gazebo/models/这样就把模型库克隆到了本地Gazebo启动时就不再需要联网下载了。6. 疑难杂症与故障排除实录在实际操作中你可能会遇到以下问题。这里记录了我踩过的坑和解决方法。6.1 安装与启动类问题问题1安装完成后重启黑屏或卡在GRUB命令行。可能原因1引导程序安装位置错误。安装时“安装启动引导器的设备”没有选对U盘的EFI分区。解决用安装U盘再次启动进入试用桌面安装并使用boot-repair工具进行修复。或者在试用桌面下手动挂载U盘的系统根分区和EFI分区然后chroot进去重新安装GRUB。可能原因2显卡驱动冲突。特别是NVIDIA显卡在安装时勾选了“安装第三方驱动”。解决在GRUB界面按e键编辑启动参数在linux那一行末尾quiet splash后面加上nomodeset然后按F10启动。进入系统后再安装正确的专有驱动。问题2在不同电脑上启动Wi-Fi或声卡无法使用。原因Linux内核模块驱动是安装时针对当时电脑的硬件编译加载的。换到不同硬件的电脑可能需要新的驱动。解决启动进入系统后打开“软件和更新”在“附加驱动”里查看是否有新硬件可用的驱动。或者更新内核到更新的HWEHardware Enablement版本以获得更广泛的硬件支持sudo apt install --install-recommends linux-generic-hwe-20.046.2 ROS环境类问题问题3运行roscore或rosrun时提示“Command ‘ros…’ not found”。原因环境变量没有正确配置。解决确保你执行了source /opt/ros/noetic/setup.bash并且将其添加到了~/.bashrc中。检查命令echo $ROS_PACKAGE_PATH如果有输出则说明环境变量已设置。问题4sudo rosdep init失败提示网络错误或“Website may be down”。原因raw.githubusercontent.com域名访问不稳定。解决手动配置rosdep源。首先跳过init步骤sudo mkdir -p /etc/ros/rosdep/sources.list.d。然后编辑或创建文件/etc/ros/rosdep/sources.list.d/20-default.list内容替换为国内镜像如中科大# os-specific listings first yaml https://mirrors.ustc.edu.cn/ros/rosdep/osx-homebrew.yaml osx # generic yaml https://mirrors.ustc.edu.cn/ros/rosdep/base.yaml yaml https://mirrors.ustc.edu.cn/ros/rosdep/python.yaml yaml https://mirrors.ustc.edu.cn/ros/rosdep/ruby.yaml gbpdistro https://mirrors.ustc.edu.cn/ros/rosdep/gbpdistro.yaml # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead然后再执行rosdep update。问题5编译ROS包时catkin_make报错提示找不到依赖。原因缺少系统依赖或ROS依赖。解决在工作空间根目录下运行rosdep install --from-paths src --ignore-src -r -y。这个命令会自动检查src目录下所有包的依赖文件package.xml并安装缺失的系统包。-y参数表示自动确认安装。6.3 系统性能与稳定性问题问题6系统运行一段时间后变卡特别是编译时。原因U盘持续读写发热导致降速或内存不足频繁使用交换文件。解决检查U盘温度如果很烫考虑改善散热如使用带散热片的硬盘盒。用htop命令查看内存使用情况。如果swap使用率很高考虑增加物理内存或优化程序。可以按5.1节调整swappiness。编译大型项目如ROS的desktop-full时可以使用catkin_make -j2限制并行编译的线程数减少CPU和IO的瞬时压力。问题7突然断电或强制拔出后系统无法启动或文件损坏。预防永远不要在系统运行时即使是休眠直接拔出U盘务必先关机。对于移动固态硬盘确保硬盘盒支持UASPUSB Attached SCSI Protocol和TRIM指令能提升性能和稳定性。修复用安装U盘启动进入试用桌面挂载你的U盘系统根分区然后运行sudo fsck -y /dev/sdX1将sdX1替换为你的实际分区。检查并修复文件系统错误。把Ubuntu和ROS装进U盘打造一个移动开发站是一个兼具实用性和趣味性的项目。它解决了环境隔离、随身携带的核心痛点。经过细致的优化后其日常开发体验已经非常接近内置硬盘。最关键的是整个过程让你对Linux系统分区、引导、ROS生态有了更深入的理解。这个装在口袋里的机器人开发环境随时可以插入任何x86电脑立刻开始你的算法验证和仿真调试这种自由感和掌控感是固定安装的系统无法给予的。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价