ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

树莓派5无外设安装Ubuntu完整指南:从裸板到SSH远程控制

树莓派5无外设安装Ubuntu完整指南:从裸板到SSH远程控制 设备到手的当晚我就面对一个现实问题手上只有一块裸板 Raspberry Pi 5、一张闲置的 SD 卡和一台没有多余显示器的笔记本电脑。想在树莓派 5 上装 Ubuntu却连最基础的“看得见屏幕”这个条件都不满足这一步卡了我很久。后来才想明白所谓“无外设安装”其实不是把显示器变出来而是换一套思路把系统烧进 SD 卡之后提前把 WiFi、SSH、用户密码这些配置统统写进卡里让板子上电后自己联网、自己开 SSH我们再从电脑远程登录完成后续所有操作。这篇博文就是完整记录这套方案从选镜像到远程进系统每一步都讲清楚给同样手里只有板子没有屏幕的朋友一个可以直接抄作业的流程。1. 项目背景与核心思路无外设安装到底是怎么一回事1.1 无外设安装解决的现实问题“无外设安装”听起来像是一个很极客的操作但实际上它的使用场景非常普遍。很多人买树莓派 5 的目的就是把它当成一台低功耗的小服务器、一个跑脚本的节点或者一个 Docker 主机这种东西天生就该放在角落里、塞进机柜里而不是占着一张桌子接显示器。我在实际使用中也发现树莓派这类开发板装好后几乎不需要看着它工作大部分时间都是 SSH 连上去敲命令。没有外设安装流程就完全变了。常规安装需要引导界面、需要点按钮、需要输命令这些交互没了系统安装的“信号”也无法通过屏幕反馈给你。于是整个问题的核心变成怎么在没有人工干预的情况下让系统完成启动并进入可远程管理的状态。1.2 核心逻辑先写配置再让系统自己干活无头安装的本质就是把“人要做的事情”提前做掉。树莓派启动时bootloader 会读取 SD 卡第一个分区里的文件这个分区是 FAT32 格式里面存放着内核、设备树、配置文件以及一个名叫 cloud-init 的初始化工具的配置内容。cloud-init 是现代云主机和开发板系统里非常关键的一个组件。它的作用相当于“首次启动管家”系统完成内核加载、根文件系统挂载之后cloud-init 会去读取预置配置文件帮你创建用户、设置密码、配置网络、打开服务。只要我们在写卡之后、上电之前把配置文件改好系统就会像一个按脚本执行的机器人自己把“联网、开 SSH、建用户”这几件事全部做完。所以整个无外设安装可以分为三个明确阶段烧录阶段将 Ubuntu 系统镜像完整写入 SD 卡。预配置阶段修改 boot 分区中的 cloud-init 配置文件告诉系统开机后自动连接 WiFi、启用 SSH、设置默认用户。远程接管阶段板子上电后通过网络发现它的 IP 地址然后用 SSH 登录进去进行系统更新、环境配置等真正意义上的“后续安装”。1.3 为什么选择 Ubuntu 而不是树莓派官方系统树莓派官方推荐的操作系统是 Raspberry Pi OS它基于 Debian对树莓派硬件的适配度最高。但很多人包括我在内仍然选择 Ubuntu原因不外乎这几点第一Ubuntu 的 Server 版镜像非常精简安装完系统占用的磁盘空间小、内存占用低适合长年累月跑服务的场景。第二Ubuntu LTS 版本提供 5 年以上的安全更新支持生命周期长适合搭服务器。第三Ubuntu 的软件生态、文档和社区力量都很强很多运维自动化工具、Docker 镜像、云原生组件对 Ubuntu 的支持是最优先的。第四如果你习惯在 x86 服务器上使用 Ubuntu那么树莓派上用同样的系统会显著降低切换成本。当然Ubuntu 在树莓派上的硬件发挥程度整体不如 Raspberry Pi OS 那么充分特别是 GPU 相关的桌面体验。但对于无外设安装来说这根本不影响因为我们用到的只是网络、CPU、存储和 GPIOUbuntu 这些都支持得很好。2. 准备工作硬件、镜像与写卡工具选型2.1 硬件清单与注意事项在开始操作之前先把需要用到的东西列清楚。无外设安装的硬件要求其实很低但每一样都有讲究硬件要求说明树莓派 5建议 4GB/8GB 内存版本2GB 版本也能跑 Server但内存偏紧SD 卡16GB 以上A2 或 U3 速度等级树莓派 5 对 SD 卡速度要求变高劣质卡会导致启动反复失败读卡器USB 3.0 以上写卡速度和读卡器关系很大电源USB-C5V/3A 以上建议 5V/5A树莓派 5 功耗明显高于上一代电源不足会出现各种诡异问题电脑Windows / macOS / Linux 均可笔记本即可也就是用来写卡和 SSH网线可选一条普通千兆网线如果不想折腾无线网络配置网线直连是最稳妥的方式这里有个细节容易被忽略树莓派 5 的电源如果不够强劲在高负载或启动瞬间可能出现电压跌落。无头安装过程中你看不到屏幕系统可能因此反复重启或者干脆 SD 卡无法稳定写入。我当时就吃过亏一开始用了一个 5V/2.4A 的手机充电器结果系统写完了上电后板子指示灯亮了又灭怎么都不进系统。后来换上 5V/5A 的电源适配器问题迎刃而解。电源问题是无头安装最难排查的坑因为你看不到启动日志所以从一开始就要保证电源够格。2.2 树莓派 5 的 Ubuntu 镜像怎么选Ubuntu 官方为树莓派提供了专门的预安装镜像不要自己去下载 amd64 架构的版本那是给 PC 用的。树莓派 5 是 ARM64 架构需要下载 arm64raspi 对应的镜像。具体来说进入 Ubuntu 官网的 Raspberry Pi 下载页面选择 Raspberry Pi 5 对应的 Ubuntu Server 版本。当前阶段强烈建议选择 24.04 LTS 或更新的 LTS 版本因为树莓派 5 的处理器 BCM2712 和新的 RP1 南桥芯片较新只有较新的内核才能完整支持。旧版 Ubuntu 在树莓派 5 上要么无法启动要么网络、USB 等功能存在兼容性问题。镜像文件名一般长这样ubuntu-24.04-preinstalled-server-arm64raspi.img.xz。注意解读一下这个名字“preinstalled”表示这已经是预安装完成的系统镜像烧录后即可启动“server”表示是精简服务版“arm64raspi”说明是针对树莓派 ARM 平台的版本。整个文件是 xz 压缩格式烧录工具会自动解压不需要手动解压。文件体积大概 1GB 左右解压后系统盘占 8GB 左右所以 16GB 的 SD 卡勉强够用但建议用 32GB 以上给系统和 Docker 镜像之类的留足空间。2.3 写卡工具推荐Raspberry Pi Imager 是首选写镜像工具有不少比如 balenaEtcher、Win32DiskImager、dd 命令等。但在无头安装这个场景下我的首选是树莓派官方推出的 Raspberry Pi Imager因为它在写卡时就能直接完成“预配置”这正好是无头安装最需要的功能。Raspberry Pi Imager 支持 Windows、macOS 和 Linux 三个平台启动后界面非常直观先选择树莓派型号再选择操作系统镜像然后选择要写入的 SD 卡最后确认写入。最关键的是在你点击写入之前可以按 CtrlShiftXmacOS 是 CmdShiftX打开高级选项设置菜单在里面提前设置 SSH、用户、WiFi、主机名。这一套功能完全就是为无外设安装准备的。如果手头实在没有 Raspberry Pi Imager用 balenaEtcher 也可以但 balenaEtcher 只负责写镜像不支持写卡后自动修改配置。这种情况下就必须手动编辑 SD 卡里的配置文件了稍后我会详细讲手动方案。3. 核心环节实现写卡与预配置的完整实操3.1 用 Raspberry Pi Imager 完成一键配置先把 SD 卡插入读卡器连接到电脑。打开 Raspberry Pi Imager按以下步骤操作点击“选择设备”在列表里找到 Raspberry Pi 5。点击“选择操作系统”找到“Ubuntu”这一类目选 Ubuntu Server 24.04 或需要的版本。Imager 本身支持在线下载镜像如果你的电脑已经下载好了 .img.xz 文件也可以选择“使用自定义镜像”来加载本地文件。点击“选择存储设备”选中你的 SD 卡。这里要格外小心别选错盘符写卡会覆盖目标设备所有数据操作前务必确认。点击“下一步”之前按 CtrlShiftX 打开高级选项。这里会有几个关键项需要设置。高级选项面板里我们需要重点配置以下内容设置主机名默认可能是ubuntu这个值会成为局域网内解析的.local名称改成自己想要的名字例如pi5server。启用 SSH勾选“启用 SSH”一般选“使用密码认证”即可也可以在写入前把公钥粘进去实现密钥登录。设置用户名和密码勾选“设置用户名和密码”输入一个用户名默认是ubuntu和密码。注意不要设置过于简单的密码因为 SSH 暴露在局域网里就有被探测的风险。配置无线局域网如果你的树莓派要连 WiFi 而不是插网线在这里输入 WiFi 的 SSID 和密码并选择正确的国家/地区。国家/地区会影响无线频段的选择选错了可能导致 5GHz WiFi 连不上。区域设置将时区改为Asia/Shanghai键盘布局保持默认。设置完成确认后回到主界面点击“写入”。Imager 会先格式化 SD 卡然后写入系统镜像最后会执行一步“自定义设置”的操作也就是把刚才配置的 SSH、用户、WiFi 等信息写入系统分区中的 cloud-init 配置文件。整个过程大概需要五到十分钟取决于 SD 卡的速度和电脑 USB 接口的速度。写入完成后Imager 会提示你拔掉 SD 卡此时系统已经完成了烧录和预配置可以直接进入上电启动环节。3.2 手动修改配置文件不用 Imager 的老派做法如果你手里没有 Raspberry Pi Imager或者你想完全搞清楚系统里到底改了什么手动编辑配置文件是必修课。这种方法更底层也能让你在出现问题时自己排查。用写卡工具balenaEtcher、Win32DiskImager 或 dd把 Ubuntu 镜像写入 SD 卡后不要急着拔卡。此时电脑上应该会出现一个可访问的 FAT32 分区名字通常叫system-boot。进入这个分区你会看到config.txt、network-config、user-data、user-data.full、meta-data等文件。配置 WiFi 需要修改network-config文件。这个文件是 netplan 语法类似 YAML。默认内容会有一个以太网口eth0的配置以及被注释掉的 WiFi 部分。把 WiFi 部分的注释去掉改成这样version: 2 ethernets: eth0: dhcp4: true optional: true wifis: wlan0: dhcp4: true optional: true access-points: 你的WiFi名称: password: 你的WiFi密码有几个地方特别容易出错。SSID 和密码必须用英文双引号包裹如果 WiFi 密码包含特殊字符需要按 YAML 规则转义。每条配置的缩进必须严格保持一致netplan 对缩进非常敏感多一个空格或少一个空格都可能导致配置文件解析失败。改完保存后就可以拔卡。接下来还需要修改user-data文件这个文件控制 cloud-init 的行为包括用户创建和密码设置。默认情况下Ubuntu 镜像内置的逻辑是自动创建一个名为ubuntu的用户密码是ubuntu并且首次登录时必须修改密码。如果你不想在 SSH 登录后手动改密码可以修改其中chpasswd的部分把默认密码改成自己的密码并设置expire: false这样首次登录就不会强制改密了。手动编辑时有一个非常重要的注意点cloud-init 配置默认只在首次启动时执行一次执行完会把相关状态记录到系统磁盘中。如果你发现配置写错了改掉 SD 卡里的文件再启动是没用的因为系统已经在首次启动时执行过了。最干净的方法就是重新烧录一遍镜像或者清除系统区里的 cloud-init 状态目录。这个坑我踩过不止一次后面常见问题里会细说。3.3 通电启动与 IP 地址发现预配置完成后把 SD 卡插入树莓派 5接好网线或确保 WiFi 环境就绪再插上电源。此时板子会开始启动无头安装无法看到任何画面所以我们只能通过“网络行为”来判断是否成功。首次启动需要的时间比平时长一些因为 cloud-init 要做用户创建、软件源初始化等工作通常在 30 秒到 2 分钟之间。启动完成后它就默默出现在局域网里了。下一步是找到它的 IP 地址。常用的方法有这么几种如果树莓派通过网线连接路由器登录路由器管理后台在“DHCP 客户端列表”或“已连接设备”里找主机名对应的条目能看到分配到的 IP。在电脑上执行arp -a命令查看局域网内的 IP 与 MAC 地址对应关系树莓派的 MAC 地址段有迹可循可以按厂商前缀判断。用 nmap 扫描局域网nmap -sn 192.168.1.0/24具体的网段按你自己的局域网修改扫描结果里会显示主机名和开放端口。如果上述方法都不行可以试试 mDNS 解析。在 Mac 或 Linux 上直接ping ubuntu.local如果主机名改过就ping 你设置的主机名.local。在 Windows 上 mDNS 支持可能不完整建议用网络扫描工具。我个人最推荐的做法是直接在路由器后台看因为你已经知道大概时间和技术背景了配合手机热点场景下也能在“已连接设备”里找到。拿到 IP 后远程接管的最后一块拼图就齐了。4. SSH 远程接管与系统初始化4.1 三种操作系统的 SSH 连接方法树莓派 5 上的 Ubuntu Server 默认开启了 SSH 服务在新版镜像中如果你用 Imager 配置过 SSH 开关就会开启。接下来从电脑发起连接Windows 系统自带 OpenSSH 客户端直接打开终端cmd 或 PowerShell执行ssh 用户名IP地址例如ssh ubuntu192.168.1.100如果是首次连接SSH 会提示确认主机指纹输入yes回车即可。之后输入刚才设置的密码就进入了树莓派的终端界面。macOS 和 Linux 同样使用ssh命令方式完全一致。如果你在 Imager 里配置了 SSH 密钥登录登录时无需输入密码。但要注意公钥配置在写卡阶段已经写入系统连接时要确保本地的私钥文件路径正确必要时用ssh -i ~/.ssh/你的私钥 用户名IP指定。4.2 首次登录后的必要初始化第一次进入系统后我习惯先快速完成下面这几步让系统处于一个干净、可用的状态查看系统基本信息。执行uname -a查看内核版本执行lsb_release -a查看 Ubuntu 版本确认确实是跑在 ARM64 平台上。更新软件源。Ubuntu 默认使用官方源如果你的网络访问官方源相对较慢可以改成国内镜像源。修改源文件/etc/apt/sources.list.d/ubuntu.sources把archive.ubuntu.com替换成你所在地区的镜像地址。我常用的是清华和阿里云的镜像源具体地址不同时期可能有调整访问对应厂商官网获取最新地址即可。执行系统更新sudo apt update sudo apt upgrade -y系统更新可能需要几分钟到十几分钟取决于网络速度和软件包数量。这一步建议首次登录就做让系统处于最新的安全补丁状态。调整主机名。如果你在 Imager 里没设置过可以在命令行修改sudo hostnamectl set-hostname pi5server修改后需要重新登录或者重启才会生效。设置时区并校准时间。树莓派没有主板上的硬件时钟时间同步主要依赖 NTP。执行sudo timedatectl set-timezone Asia/Shanghai sudo timedatectl set-ntp true这样系统会自动通过网络同步时间避免因为时间不准导致 HTTPS 请求和各类日志时间错乱。顺手安装一些基础工具。我会装htop、git、curl、vim这类常用软件方便后续维护sudo apt install -y htop git curl vim4.3 无头运行状态下的远程运维技巧树莓派 5 作为无头服务器长期运行有几件事养成习惯之后会非常省心。第一是学会用journalctl查日志。系统任何服务启动失败都可以用journalctl -u 服务名查看对应日志。比盲猜靠谱得多。第二是随时关注温度和频率。树莓派 5 性能释放更强散热需求更高。执行vcgencmd measure_temp vcgencmd measure_volts可以看到 CPU 温度和核心电压。温度建议控制在 80°C 以下如果长期高温说明散热片或风扇没装好或者机箱通风有问题。第三是配置定时任务和远程重启。无头设备难免遇到系统无响应如果 SSH 连不上可以直接断电重启但这样做对文件系统不友好。我习惯在进入系统后把关键配置备份好必要时通过 SSH 执行sudo reboot远程重启。第四如果网络环境支持建议给树莓派设置一个 DHCP 静态地址保留在路由器后台把 IP 和 MAC 绑定这样每次重启 IP 都不会变省去反复找 IP 的麻烦。5. 踩坑实录无头安装常见问题与排查方法5.1 电源供电不足引发的疑难杂症无头安装最让人头疼的问题往往不是软件配置而是电源。树莓派 5 的峰值功耗相比前代提升明显如果不使用官方推荐的 5V/5A 电源在高负载场景下可能出现电压不稳定系统表现出间歇性重启、SSH 连接断开、SD 卡写入异常等问题。排查方法很直接先换一个足额电源包括数据线也要检查有些 USB-C 线只能充电不能传数据或者线材压降太大会导致电压不足。同时可以查看系统日志里有没有voltage相关提示。这个问题的隐蔽之处在于很多时候系统能起来但跑了一会儿就自己“挂了”让人以为是系统问题实际上是供电不足。5.2 SSH 连接拒绝的排查思路如果上电后树莓派已经连上网但 SSH 连不上通常有这几个原因查看 IP 是否正确。常见错误是用错了网段或者在路由器上看到了别的设备 IP 当成了树莓派。使用nmap -sn扫一圈对比主机名就能确认。检查 SSH 服务是否开启。如果用的是手动写配置可能遗漏了开启 SSH 的步骤。重新拔卡插到电脑上查看system-boot分区看看镜像里是否包含了能够触发ssh服务启动的标志。在老版本树莓派系统中只要在 boot 分区根目录放一个名为ssh的空文件即可开启 SSH。在 Ubuntu 镜像是通过 cloud-init 配置控制的所以如果没配置好最保险的方法是重新烧录镜像。还要考虑防火墙因素。如果局域网内有主机防火墙拦截了 22 端口也会连接失败。多数家用路由器默认不做隔离但如果开过访客网络或者设备隔离选项就要注意把树莓派和电脑放在同一个 VLAN。5.3 cloud-init 配置不生效的坑cloud-init 最典型的“坑”就是配置只在第一次启动时生效。如果你第一次上电时 WiFi 密码填错了拔卡改好配置再插回去系统并不会重新执行因为 cloud-init 已经把配置执行过的状态写到了/var/lib/cloud/这个目录下。解决办法有两种一种是重新烧录整个系统彻底干净另一种是保留系统手动清理 cloud-init 状态后让配置重新执行sudo cloud-init clean sudo reboot但这里有一个前提你已经能通过 SSH 或串口登录进系统了。这就有个悖论——如果网络配置错了系统本来就连不上网你根本进不去教务系统只能重新烧录。所以我建议在首次上电前尽量把网络配置检查三遍尤其是 SSID 的大小写、密码里的特殊字符、缩进是否一致。5.4 SD 卡写入不稳定与启动失败树莓派 5 对 SD 卡的要求比树莓派 4B 更高。如果 SD 卡速度等级太低或者本身就是劣质扩容卡写卡过程中可能没有报错但上电启动时就会出现各种异常——卡在启动 logo、启动到一半自动重启、文件系统损坏等。这类问题的排查重点在 SD 卡质量。建议优先选择 A2/V30 级别的 A 类大牌卡写入速度稳定。如果条件允许可以用 SD Card Association 的官方工具或f3工具对卡进行全盘读写测试排除扩容卡的风险。另外树莓派 5 支持从 NVMe SSD 启动后续做服务器的话可以直接考虑升级到 SSD 方案性能和稳定性都会大幅提升。6. 进阶玩法无外设安装还能怎么玩6.1 用串口做最后的救急通道SSH 当然是无头安装的主角但它依赖网络。如果系统启动后网络始终不通或者你想看完整的启动日志UART 串口就是最后的救急通道。树莓派 5 的 GPIO 上有一组专用的调试串口引脚通常是 GPIO 14/15用 USB 转 TTL 串口模块连接不需要屏幕也能看到完整的启动过程。接线方法比较简单串口模块的 TX 接树莓派的 RXGPIO 15RX 接树莓派的 TXGPIO 14GND 接 GND。电脑上通过minicom、screen或者 Windows 的串口工具连接波特率一般是 115200。串口的作用不仅是看启动日志还能在系统完全“断网”时给你一个命令行入口属于无头安装里最硬核的保底技能。6.2 从 SD 卡到 NVMe SSD彻底摆脱低速存储树莓派 5 原生支持 PCIe 接口通过 HAT 扩展板可以接上 NVMe 固态硬盘。无头安装同样适用这个方案你可以在电脑上把 Ubuntu 镜像写入 NVMe 硬盘再通过 USB 转 PCIe 的扩展盒连到电脑上写卡或者先在 SD 卡上启动系统然后把系统完整复制到 NVMe 上之后切换到 NVMe 启动。如果使用 NVMe 方案写镜像的方式和写 SD 卡类似只是目标设备变成了 NVMe 硬盘。树莓派 5 的 EEPROM 需要更新到较新的版本才能从 NVMe 启动具体操作是用rpi-eeprom-update或raspi-config里的启动顺序设置来处理。这个扩展性让树莓派 5 作为小服务器时性能和稳定性都提升一个档次搅动 SD 卡的那种卡顿感基本消失。6.3 自动化配置批量部署的启发无头安装还有一种值得扩展的思路是自动化批量部署。一旦你会手动配置 cloud-init就可以把user-data、network-config这些文件模板化配合自动化脚本批量烧录多张 SD 卡每一张卡刷成一套独立系统。树莓派在小型实验环境、教学机房、IoT 边缘节点这些场景中经常需要批量部署这种“无头自动配置”的方式正是批量交付的雏形。我自己在实际使用中的体会是无外设安装看起来门槛高摸清原理之后反而比插着显示器装系统更高效——因为所有配置都是代码化、文件化的可以反复复现不会出现“手工点到一半点错按钮”的情况。最后再分享一个小技巧每次给树莓派做好一套系统后把整张 SD 卡做一个镜像备份存到电脑上。下次再需要部署同类环境直接用备份恢复十分钟就可以得到一个和之前完全一致的系统比从头配置省事太多。
RELATED READING

延伸阅读

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