ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

树莓派5无外设安装Ubuntu:SSH远程部署完整指南

树莓派5无外设安装Ubuntu:SSH远程部署完整指南 手里只有一台笔记本电脑、一张SD卡想给Raspberry PI5装Ubuntu却没有显示器也没有多余的键盘鼠标——这种场景我碰到过太多次了。很多人默认装了Linux系统就必须接屏幕看输出其实树莓派这个系列有个特点它天生就支持完全无外设的安装和运行只要你在烧录镜像时多花十分钟做预配置剩下的事情全都可以通过SSH远程搞定。这篇文章就把我从零开始的操作流程完整写出来包括镜像选型、烧录前配置、启动后找IP、首次登录初始化和常见问题排查适合手里只有常用电脑和读卡器、想用一台裸树莓派5跑Ubuntu的开发者参考。我最早用树莓派玩嵌入式的时候也走过弯路总觉得必须外接显示器和键鼠才能完成安装。后来发现树莓派上跑的Ubuntu镜像大多带着cloud-init机制完全可以在系统第一次启动前把用户名、密码、无线网络、SSH端口这些参数全部塞进配置文件里。只要你把准备工作做在前面系统上电后会自动完成初始化根本不需要你坐在旁边按键操作。这篇文章就是分享这条完整链路我把每一步的细节都写清楚你要做的就是准备好硬件然后照着一路执行。1. 无外设安装的整体思路与关键前置准备1.1 为什么要把配置工作提前到烧录阶段树莓派和普通PC有一个很大的不同它没有传统意义上的BIOS设置界面启动和运行所需的全部内容都来自SD卡上的文件分区。既然没有外设你就没办法在系统运行后打开终端去配置网络、创建用户或开启远程服务唯一的交互窗口就是这张已经在电脑上读出来的SD卡。所以整个方案的思路是在SD卡上预先植入一份配置让树莓派第一次通电时自动读取并应用它。这个机制在Ubuntu官方树莓派镜像上叫cloud-init它会读取SD卡中system-boot分区下的user-data和network-config这两个文件然后完成创建用户、配置网络、启停服务等初始化动作。树莓派官方的烧录工具Raspberry Pi Imager也基于这个原理在烧录界面里填的那些选项最后都会被转换成配置文件写进SD卡里。理解了这个原理你就能明白为什么“无外设安装”完全可行也可以在自己需要定制功能的时候灵活修改这两个文件而不会陷入“不知道怎么生效”的迷茫。1.2 硬件与软件准备清单在开始之前先把需要的硬件列清楚。树莓派5和之前的型号都靠SD卡启动所以一张质量可靠的SD卡是必需品。我推荐使用16GB以上的A2级别、至少U3速度的卡无外设安装虽然对容量要求不高但如果卡太差系统启动和后续安装更新时会非常痛苦。树莓派5主板一块建议配好散热片或风扇因为Pi 5的处理器BCM2712满载时发热不小。一张16GB以上的SD卡最好A2、U3级别大厂的卡更耐造。USB读卡器建议SD卡和读卡器都支持UHS-I否则写镜像会慢到怀疑人生。官方或第三方支持5V/5A的USB-C电源这一点非常重要后面单独说。能上网的路由器/交换机以及一条网线。网线比WiFi稳定首次排查问题时能省很多心。一台日常用的电脑Windows、macOS或Linux都行主要用来写SD卡和之后SSH登录。电脑上要装好Raspberry Pi Imager去官网下载版本不能太老。软件上不要用旧版本的烧录工具旧的Imager对树莓派5和Ubuntu最新镜像的支持不完整很可能缺配置项。我建议直接用官网最新版本第一次用的人也不用担心界面很直观。1.3 Ubuntu镜像选型与版本注意事项树莓派5刚上市的那阵子Ubuntu的适配还不完整24.04 LTS的早期版本跑起来会遇到一些硬件驱动问题。到了24.04 LTS后续更新版本以及24.10之后官方才把bootloader、nvme、PCIe这些外设的支持补全。所以这里有一个很重要的建议给Pi 5装Ubuntu不要找那些号称“精简”或“魔改”的第三方镜像直接用官方Ubuntu Server或Desktop版最稳妥。那Server版和Desktop版怎么选如果你打算把它当服务器用比如跑Docker、数据库、写个定时爬虫选Server省资源。如果你还是希望有一个图形界面用Desktop版默认带GNOME桌面第一次通过SSH完成安装之后再通过VNC或者插临时外设来使用桌面环境。无外设安装时我通常选Server版一个是系统体积小、初始化快另一个是默认无桌面环境减少很多不必要的更新和依赖冲突。再强调一下树莓派5的启动方式跟树莓派4有变化新固件对SD卡启动兼容性很好但前提是烧录工具和镜像都要跟上。所以别急着找旧教程里那些繁琐的“手动挂载分区改文件”的做法先用官方Imager一条龙处理这才是省事且不容易出错的路子。2. 烧录系统镜像并完成初始化预配置2.1 用Raspberry Pi Imager完成系统烧录打开Raspberry Pi Imager之后界面上有三个大按钮选择设备、选择操作系统、选择存储卡。第一步选择树莓派设备时一定要选Raspberry Pi 5别选成Pi 4或通用版。第二步选择操作系统时进入Other general-purpose OS往下找到Ubuntu然后选择Ubuntu Server 24.04 LTS 64-bit或者更新的LTS版本。第三步选择你的SD卡。选完之后先别急着点烧录注意右下角有个齿轮形状的按钮点进去可以设置烧录时的镜像预配置。这里就是无外设安装的核心如果你不在这里做任何设置系统默认会创建一个名为ubuntu的用户并且可能要求首次登录时修改密码——但问题是你连外设都没有怎么可能登录进去改密码所以这一步不做等于把路走死。设置页面里有几项必须认真填写主机名、用户名、密码、无线网络、SSH服务、区域和键盘布局。填写用户密码时不要用那些太弱的默认组合因为这台机器通电后就暴露在你的局域网里了弱密码等于把门敞开。填好之后点击烧录等待工具写入完成再等待它校验完毕。校验步骤别跳过能在烧录阶段发现SD卡有没有坏块或者写入异常省得后面通电黑屏再拆下来折腾。2.2 用户名、主机名与SSH服务的关键配置预配置界面里主机名默认可能是ubuntu或者一串随机字符。我建议改成有意义的名字比如ubuntu-pi5这样之后通过ssh usernameubuntu-pi5.local就能直接连上不用每次翻路由器后台找IP。用户名我建议也改成自己的英文名或服务名比如pi5admin这样跟默认的ubuntu区分开减少一些自动化脚本针对默认用户的安全风险。密码设置要稍微讲究一点尽量用大小写字母加数字和符号组合长度至少在12位以上因为这台设备会在你的网络里完全敞开SSH端口。SSH服务建议直接选择“启用”并且有条件的话在高级设置里粘贴自己的公钥。设置公钥之后系统初始化时会把你的公钥写入用户的~/.ssh/authorized_keys后续登录就完全不用输密码。我第一次用这个功能时还有点不放心后来特意验证了几次确实非常可靠而且后续做自动化部署会方便很多。还有一个很容易被忽略的选项是区域和键盘布局。如果填了无线网络请选择你所在的国家或地区这个配置会直接影响WiFi无线模块支持的信道范围。有些5GHz的WiFi热点连不上很大可能就是区域码没设对导致它扫描不到这个信道。2.3 配置文件在SD卡中的位置与手动改法如果你不想用图形配置界面也完全可以手动修改SD卡里的文件。烧录完成之后电脑上会看到SD卡被分成了两个分区其中一个是system-boot里面就是启动和初始化需要的配置文件。在system-boot分区里重点看两个文件network-config和user-data。network-config控制第一启动时的有线网和无线网配置它是一个YAML格式的文件可以写成这样version: 2 ethernets: eth0: dhcp4: true optional: true wifis: wlan0: dhcp4: true optional: true access-points: 你的WiFi名称: password: 你的WiFi密码 country: CNuser-data文件则负责创建用户、设置密码、导入公钥、安装软件包等。关键字段是这样#cloud-config hostname: ubuntu-pi5 users: - default - name: myadmin groups: [adm, sudo] shell: /bin/bash sudo: ALL(ALL) NOPASSWD:ALL ssh_authorized_keys: - ssh-rsa AAAA... chpasswd: expire: false ssh_pwauth: false package_update: true packages: - curl - htop - git上面这段配置里chpasswd: expire: false表示首次登录时不需要强制修改密码ssh_pwauth: false表示禁用纯密码登录只允许密钥登录。这样在无外设环境下就很安全因为就算有人扫描到了你的SSH端口缺少私钥也根本进不来。手动编辑的好处是灵活但要注意YAML的缩进和格式一个空格错误可能整段配置失效这也是为什么我觉得大多数人直接用Imager图形配置更省心的原因。2.4 首次启动脚本与系统初始化顺序除了cloud-init之外Ubuntu镜像还支持在第一次启动时执行自定义脚本。这个功能虽然不如user-data那么常用但在你需要批量初始化环境时特别有用。比如在system-boot分区放一个脚本系统启动时会自动运行帮你更新软件源、安装指定软件包、关掉不必要的服务。不过这里要提醒一句首次启动脚本里的命令是在系统已经完成基本网络配置后执行的如果你的网络配置有问题脚本可能运行超时或失败。所以我的习惯是第一次启动脚本里只放纯本地的操作比如设置时区、调整文件权限、预装几个必要的软件包涉及网络的操作都留到SSH登录后再执行这样排查问题更清晰。整个初次启动的过程大概需要一到三分钟取决于SD卡速度和网络环境。期间不要断电不要拔出SD卡。等看到设备在路由器后台出现后再开始尝试SSH连接这样最稳妥。3. 上电启动与SSH远程连接实操3.1 查找树莓派IP地址的几种方法SD卡烧录完成并插回树莓派5之后先接好网线如果用了WiFi预配置则可以跳过再插上电源线。树莓派5的电源接口是USB-C要保证供电规格能达到5V/5A。上电后先别急给系统一到两分钟做首次初始化这段时间里它会自动扩容文件系统、应用网络配置、创建工作用户你急着去SSH大概率是连不上的。第一次连接之前最麻烦的问题就是“设备IP是什么”。如果路由器管理后台能看到已连接设备列表直接找主机名ubuntu-pi5即可这是最直接的办法。找不到或者不方便访问路由器后台时可以试试mDNS在macOS或Linux终端执行ping ubuntu-pi5.local这个方法在Windows上需要额外装Bonjour服务或者使用IP扫描工具。我平时更习惯用nmap做子网扫描先把电脑和树莓派连在同一个网段然后扫描整个局域网sudo nmap -sn 192.168.1.0/24如果设备不多也可以用arp -a查看缓存中的IP与MAC对应关系。不过注意ARP表里可能会有很多无用的记录建议在树莓派上电并等待一分钟后再去看新增的那一条。查IP这一点虽然琐碎但做对了能省掉后面一大半排查时间。3.2 SSH登录与首次系统检查拿到IP地址之后打开终端执行下面的命令登录。如果你的用户名是myadminIP是192.168.1.50那就是ssh myadmin192.168.1.50如果你在Imager里填了主机名并且网络支持mDNS也可以直接这样ssh myadminubuntu-pi5.local首次连接时系统会询问你是否接受服务器的指纹信息输入yes回车就行。如果一切正常你会看到Ubuntu的欢迎信息包括系统版本和几个系统提示。这一步意味着无外设安装已经成功了八成剩下的就是做系统初始化和日常配置。登录后我通常会立刻执行几条命令确认系统状态。先看版本和架构lsb_release -a uname -m再看CPU温度和运行时长确认散热和硬件是否正常cat /sys/class/thermal/thermal_zone0/temp uptime如果温度瞬间飙升到80度以上说明散热器没装好或者环境温度太高建议先处理散热再继续干活。另外还需要确认网卡状态特别是无线网络是否按照预配置正确连接可以用ip a查看eth0和wlan0的IP情况。3.3 初始化系统改密码、时区、软件源与系统更新虽然预配置阶段已经设置了用户和密码但为了安全起见登录后我还是建议先手动执行一次passwd重新设置一个更符合当前使用习惯的密码。这个操作在SSH会话里执行没有任何问题输入两次新密码就会立即生效不影响当前连接。时区也是必调项尤其是你后续要跑定时任务或者看日志时间默认时区不对会让人非常头大sudo timedatectl set-timezone Asia/Shanghai软件源建议先保持Ubuntu官方默认不要上来就换成第三方源除非你明确知道自己在做什么。然后执行一次完整的系统更新这一步会下载大量包时间取决于网速和SD卡速度耐心等待即可sudo apt update sudo apt full-upgrade -y更新完成后重启一次确认系统重启后SSH依然能连上这算是无外设部署后的“回归测试”。重启命令很简单执行sudo reboot等一两分钟再重新SSH登录。如果一切顺利你的树莓派5已经可以作为一个稳定的无头Linux服务器开始跑应用了。4. 常见问题与排查实录4.1 烧录后上电无反应或无法启动我遇到过好几次“烧录没问题但上电就是启动不了”的情况排查下来主要原因基本都是电源。树莓派5对供电的要求比4代严格很多普通手机充电头标称5V/2A甚至5V/3A听起来也还行但在高负载启动阶段电压容易被拉低导致系统反复重启或者连供电指示灯都不正常。如果绿灯完全不亮或者红灯闪烁先换电源和电源线。有条件的话用树莓派官方电源哪怕买第三方也要认准支持5V/5A的USB-C PD充电器。SD卡也值得怀疑建议重新用Imager烧录一次并且在烧录完成后不要急着拔卡让Imager做一次校验。还有一点树莓派5的micro HDMI接口跟4代一样没有外设时HDMI根本不用接这不会影响启动。如果实在不知道系统是否起来了可以给树莓派插上USB转串口模块用串口看启动日志但对多数人来说没必要先按电源和SD卡排查就够了。4.2 找不到IP地址或SSH连不上SSH连不上最常见的原因就是IP没找对。我第一次用树莓派5做无外设安装时在路由器后台看到一个陌生设备但点进去才发现它是手机真正树莓派的IP隐藏在下一页的设备列表里。所以路由器后台没看到不代表设备没起来要多刷新几次或者用ARP扫描确认。如果mDNS方式连不上先确认系统是否安装了相关服务很多Ubuntu镜像默认没有avahi-daemon这时主机名.local就不生效。解决办法有两个一是用IP地址直接连二是登录后安装avahi-daemon之后就能愉快地使用.local域名了。sudo apt install avahi-daemon -y另外如果你同时配置了有线网和无线网并且两个网络的IP都在不同网段也有可能出现SSH连不上或者时断时续的现象。建议初始化阶段先只接一根网线把WiFi配置好确认无误后再拔掉网线做无线测试。4.3 登录失败或密码被强制修改的解决办法有几次我为了让配置更“干净”手动修改user-data文件结果启动后SSH登录一直提示密码错误。后来发现是我写入的密码哈希格式有问题cloud-init解析失败导致用户密码根本没有被设置。如果你也是手动编辑配置文件就需要注意user-data里的passwd字段必须使用密文形式不能直接写明文除非你同时设置lock_passwd: false。密文可以用openssl passwd -6生成我用的是这个命令openssl passwd -6输入两次密码后会把生成的一长串$6$...哈希输出出来把这段粘贴进user-data的passwd字段即可。另外如果系统提示密码已过期需要强制修改说明chpasswd段没有设置expire: false重新烧录或者手动编辑user-data后保存即可。还有一个小坑很多教程建议直接用SD卡重新挂载修改配置文件如果你在Windows上操作注意不要用Windows自带的记事本去编辑YAML记事本可能会把换行符改变导致配置解析失败。推荐用VS Code或者Notepad并把换行符设置为Unix格式。4.4 预配置的WiFi连接不上WiFi连不上是另一个高频问题。首先检查你的AP无线路由器是否开启了AP隔离如果开了设备之间互相访问不到那无论你怎么配置SSH从别的设备发出来的包都无法到达树莓派。解决方法是关闭AP隔离或者让树莓派和你的电脑同时连接到同一个非隔离网络。其次5GHz频段也要关注。如果你的WiFi名是5GHz专用而树莓派SDR区域码没设对扫描信道就会失败。把预配置里的国家地区设置为实际所在地区重新烧录或者修改network-config中的country字段之后重启网络服务。再有就是SSID里的特殊字符问题某些品牌的旧路由器对特殊字符处理有兼容性问题比如中文SSID或带空格、引号的SSID在YAML里如果不正确转义就解析失败。我的建议是为了省事初始化阶段把WiFi SSID改成纯英文数字等系统起来稳定了再在路由器端改回原来的SSID偶尔会遇到一次但这样能快速验证问题。4.5 系统更新时可能遇到的坑首次执行sudo apt full-upgrade的时候最容易碰到的问题是“网络速度慢”和“签名验证失败”。前者换用更快的镜像源或换时段就好后者多数是时间不对系统还没同步时间导致证书过期。如果你在改时区之前就先更新偶尔会踩到这种问题。时间不同步还会导致很多看起来莫名其妙的现象比如Git提交报错、HTTPS请求失败等等。建议你登录后第一件事不是apt update而是先确认时间和时区date sudo timedatectl set-timezone Asia/Shanghai sudo timedatectl set-ntp true还有一点经验如果SD卡写入速度确实太慢更新器可能会因为I/O等待超时出现奇怪报错甚至中途断电会导致文件系统损坏。解决办法是换A2卡或者尽量保持系统轻量Server版本身就比桌面版轻很多没必要为了体验去安装完整桌面。5. 个人实操经验与后续扩展建议5.1 无外设安装的“最省心”组合这套流程我重复过很多次总结出一个最省心的组合Raspberry Pi Imager图形配置 公钥登录 网线优先 SSH内做系统更新。也就是说烧录阶段就把主机名、用户名、无线网络、SSH、密钥一次性设置好上电之后用网线连接路由器做第一次SSH确认稳定之后再把网线抽掉之后全部走WiFi或直接落地到项目里用有线连接。省心的关键在于减少变量。比如预配置网络时如果你同时填了有线网和WiFi某些情况下会造成路由选择混乱。我试过有线WiFi同时配置后SSH连接有时候走的是无线IP但无线信号又不够稳定结果隔几秒就掉线。后来我干脆初始化阶段只保留一个网络连接等系统起来再通过netplan调整多网络方案问题就再没出现过。5.2 安全加固和常用工具安装完成基本安装后我通常做的第一件事是加固SSH让它只能通过密钥登录。修改/etc/ssh/sshd_config确认下面几项PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes然后重启SSH服务sudo systemctl restart ssh之后再装一些日常工具比如curl、git、htop、tree、ncdu等这些在Server版里不一定预装。如果你准备用它跑容器还可以直接安装Docker然后把自己常用的Compose文件管理起来。树莓派5的性能跑几个轻量容器很轻松当家庭服务器或开发测试环境非常合适。5.3 最后分享一个小技巧很多人在无外设安装时最怕的就是“系统坏了还得拆卡重烧”。后来我发现可以用systemd-boot的备份或给/boot/firmware里放一个只读的配置文件降低启动文件意外被改坏的风险。但平时真正实用的技巧是在系统初始化完成后立刻用dd或Raspberry Pi Imager的备份功能给SD卡做一个整卡备份。这样哪怕之后把系统折腾坏了只要把这个备份写回一张新卡三分钟就能回到一个干净的可用状态比重新烧录再初始化要快得多。备份命令很简单把SD卡插到电脑上确认设备名之后执行sudo dd if/dev/sdX of~/pi5-ubuntu-backup.img bs4M statusprogress这个技巧帮我省了不少事尤其是你在一台机器上花了几小时配置各种环境后一张备份卡就等于买了一份“后悔药”。树莓派的乐趣就在于折腾但合理的备份习惯能让你折腾得更安心。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进