1. 到底什么是"没有外设装系统":需求边界与准备清单
1.1 "没有外设"不等于"没有网络"
很久前我就有这种经历:树莓派5到手,SD卡、Type-C电源、网线都有,但显示器是HDMI 1.4的老电视,转接线还找不到了;就算能找到,鼠标键盘也得翻箱倒柜。于是"把Ubuntu安装到树莓派5上"这件看似基础的事,本质变成了一个问题:在没有任何交互设备的情况下,怎么让操作系统自己完成安装并让我远程登录进去。
先说清楚"没有外设"到底指什么。本文说的外设,是显示器、键盘、鼠标这类标准交互设备。没有它们,系统就无法在本地展示安装界面,你也无法在本地输入任何命令。但有一件事不能省:网络。无论是网线、Wi-Fi还是手机热点,你至少需要一条能让树莓派5和你的电脑通信的路由。换句话说,"无外设"不是"全隔离",而是把安装过程从"看着屏幕点下一步"改成"提前把配置写好,让系统开机后自己跑完,再从网络接管"。
适合看这篇内容的人也很清晰:想把树莓派5当成一台低功耗服务器、跑Docker、做下载机、做内网穿透节点的用户;或者说像我这样手边确实没有适配外设,却急着让板子先亮起来的人。整个过程不依赖额外硬件,只需要一台日常电脑、一张SD卡、一个读卡器和一个合理的供电方案。
1.2 动手前的物料清单
无外设安装的准备工作比普通装机更讲究,因为你没有机会在安装中途改任何东西,所有信息都要在烧录镜像之前决定好。我的建议清单如下:
| 物料 | 说明 | 为什么必须有 |
|---|---|---|
| 树莓派5主板 | 4GB/8GB/16GB 版本均可 | 核心设备 |
| microSD卡 | 建议16GB以上,A2等级 | 系统盘,5代对卡速更敏感 |
| 读卡器 | USB读卡器或电脑内置SD槽 | 在电脑上写入镜像 |
| USB-C电源 | 5V/5A 27W官方电源或同等规格 | 树莓派5功耗比4代高,供电不足会导致各种诡异问题 |
| 网络 | 网线接入路由器,或预先配置好的Wi-Fi | SSH远程接管的唯一通道 |
| 一台电脑 | Windows/macOS/Linux均可 | 烧录镜像、扫描IP、SSH登录 |
散热器我也建议提前装上。树莓派5的发热比前代明显,不加主动散热片时,长时间高负载会触发降频;虽然和安装系统关系不大,但会影响你装完后跑业务时的稳定性。
1.3 树莓派5的启动介质选择:SD卡起步就行,NVMe可以后补
树莓派5的启动顺序比4代友好很多,官方固件默认支持从microSD卡、USB存储和NVMe启动,不需要像老版本那样先在特定模式下烧写OTP位。很多朋友会问:既然支持NVMe,能不能直接跳过SD卡?
我的建议是,第一次装Ubuntu时老老实实用microSD卡。原因有三个:
- NVMe需要额外的M.2 HAT扩展板,这是额外成本;
- NVMe上的Ubuntu镜像烧录方式和SD卡一致,但排查启动问题时多一层硬件变量;
- SD卡的安装流程经过最多人验证,遇到问题资料最好找。
关于SD卡规格,树莓派5的卡槽支持SDR104模式,理论上理论传输更快,但实际瓶颈往往在卡本身。优先认准A2标志,其次选大厂的Class 10/U3/V30卡。如果只是一张老旧的Class 4卡,我劝你直接换掉,启动过程容易卡死,后续扩容、写日志都会拖后腿。
2. 用 Raspberry Pi Imager 把用户、SSH、Wi-Fi 全部预埋进镜像
2.1 镜像选型:Server 还是 Desktop,LTS 还是尝鲜
无外设场景下,Ubuntu Server 是首选。这点不用纠结。树莓派5目前官方支持良好的主线版本包括Ubuntu 23.10之后的版本,写这篇文章时最省心的选择是24.04.x LTS。LTS意味着有长期维护更新,对跑服务的场景更稳;非LTS版本虽然内核较新,但每隔半年就要考虑迁移升级,服务器节点没必要追新。
有些人会想:我装个Desktop版,以后接上显示器还能用图形界面。这个想法没问题,但在无外设起步阶段,Desktop版会多出一整套桌面环境和显卡驱动,首次启动时间更长,系统占用更高,而你此刻根本用不到图形界面。更合理的路线是装Server版,等SSH能连上之后,真有桌面需求再执行:
sudo apt install ubuntu-desktop-minimal这样桌面是后加的,不进则退也容易卸载。系统底子始终是一个干净、轻量的服务器。
2.2 高级设置一次性的三件事:SSH、账户、Wi-Fi
Raspberry Pi Imager 是无外设安装的核心工具,因为它能在烧录镜像的同时,把首次启动需要的预配置信息一并写进SD卡的分区里。我通常叫这步"预埋配置"。
打开Imager后,右上角选择设备为 Raspberry Pi 5;然后在"选择操作系统"里找到 Ubuntu 分类,选择 Ubuntu Server 24.04.x LTS (64-bit)。接下来是最容易忽略的一步:点击设置图标,或者直接在键盘上按Ctrl+Shift+X(macOS 是Cmd+Shift+X)打开高级选项。
在这个对话框里,务必要设置三件事:
- 设置主机名:建议改成有辨识度的名字,例如
pi5-server。主机名会直接影响后续 mDNS 解析,比如你可以在终端里直接ssh ubuntu@pi5-server.local,不必先查IP。 - 启用SSH:选择"允许使用密码登录",或者如果你已经把公钥准备好了,选择"仅允许公钥登录"更安全。第一次无外设装机,我建议先用密码登录跑通链路,之后再改成密钥登录。
- 设置用户名和密码:这里设置的账户会在系统首次启动时由cloud-init创建。请设置强密码,不要用默认的
ubuntu/ubuntu。 - 配置Wi-Fi:如果不用网线,这一步必须填,包括SSID、密码和无线国家区域。国家区域别乱填,它会影响某些国家频段是否可用。
设置完成后,再点击"写入"。这个过程中Imager会按照树莓派5的分区要求,自动完成分区、烧录和校验。写入完成后,系统会提示可以安全弹出SD卡,这时再插到树莓派5上。
2.3 为什么我坚持用 Imager 而不是手动 dd
很多老用户习惯在Linux上用dd直接写入镜像:
sudo dd if=ubuntu.img of=/dev/sdX bs=4M status=progress这在纯启动卡场景下没问题,但放到无外设安装里就少了一半功能:dd只负责把镜像写到卡上,不负责写预配置。镜像烧完之后,你还得手动挂载SD卡的system-boot分区,编辑user-data、network-config和SSH配置,哪怕只是改错一个YAML缩进,首次启动时cloud-init就会静默失败,而你面前又没有屏幕,很难第一时间发现问题。
Imager把预配置这个动作收敛到了图形界面,各种字段都帮你校验好,避免了很多低级错误。它还能在写完以后做读回验证,防止卡或者是写入过程中的静默数据损坏。无外设场景下的原则就是:把能在电脑上解决的错误,全部在插卡之前解决掉。
3. 上电之后的"盲人摸象":用指示灯和网络判断系统状态
3.1 树莓派5的供电红线:5V/5A 不是随便说说
树莓派5的官方电源是27W,输出规格5V/5A,支持USB-PD协议。这一点和上一代有本质区别。树莓派4的15W电源在满载时已经勉强,树莓派5的CPU高负载阶段瞬时电流会更大。我曾见过有人用手机充电头给树莓派5供电,系统时而能启动,时而启动到一半就重启,绿色的ACT灯闪两下就灭。
如果你只有普通的18W PD充电头,很多在空载时能启动,但一旦进入Ubuntu内核解压、软件包升级这种高负载阶段,电压就会跌落。低压不仅导致重启,长期反复欠压还可能损坏SD卡的文件系统。所以条件允许,用官方27W电源或至少能稳定输出5V/5A的品牌电源。看供电是否正常,登录系统后可以这样确认:
vcgencmd get_throttled返回0x0表示目前没有任何限流或欠压事件;如果返回非零,比如0x50000,说明发生过欠压或温度降频,需要先解决供电与散热。vcgencmd在Ubuntu上如果没有,先执行:
sudo apt install libraspberrypi-bin3.2 绿灯的"摩斯密码":无显示状态下的启动判断
没有显示器时,板上LED是你唯一的本地信息源。树莓派5上有一颗红色电源LED和一颗绿色ACT活动LED。上电后,红色LED常亮不代表一切正常,只代表供电基本到位;绿色LED才是关键。
正常情况下,通电后绿色LED会先不规则闪烁,说明引导程序正在读取SD卡、加载固件和内核。如果卡上没有可启动的系统,或者固件读不到卡,绿灯可能会连续闪烁几次后进入某种固定节奏,甚至完全不闪。这个节奏在不同固件版本里有微妙差异,所以我的经验是:绿灯完全不亮,先摸电源和卡;绿灯闪烁但五六分钟都无法连接网络,重点看镜像烧录和预配置。
系统进入Ubuntu后,绿色LED会随存储读写活动而闪烁。此时不要依赖它判断"系统是否完全就绪",因为Ubuntu首次启动时cloud-init要做的事情很多,包括创建用户、生成SSH主机密钥、扩展根分区、应用网络配置。这个过程有时需要几分钟,LED偶尔安静一段时间并不代表卡死。
3.3 三种定位IP的方法,按熟练度排序
系统跑起来后,你要回答的下一个问题是:"它现在在哪?"三种方法我都常用,按对新手友好度排序:
方法一:路由器后台。登录你的路由器管理页面,找到DHCP客户端列表,按主机名找到你设置的pi5-server,记下IP。这是最直观、最不容易出错的方式。
方法二:mDNS主机名解析。如果电脑和树莓派在同一个局域网,并且系统里装了avahi,可以直接:
ping pi5-server.local能ping通之后,SSH也能直接写主机名:
ssh ubuntu@pi5-server.local方法三:扫描局域网。如果路由器后台地址列表太乱,或者你懒得登录,可以用nmap扫描:
nmap -sn 192.168.1.0/24把网段替换成你实际的路由器网段即可。树莓派网卡的MAC地址有固定前缀,如果你的扫描工具显示MAC,能一眼认出来。
无论如何,建议把树莓派的IP和MAC记在一个固定地方。它会成为后续所有远程操作的地基。
4. 拿到 SSH 权限后的第一轮系统初始化
4.1 第一次 SSH 连接前需要先理解 cloud-init
很多人的无外设安装卡在一个奇怪环节:镜像烧好了,卡插上了,IP也找到了,但SSH连不上。其实这不是失败,而是Ubuntu的首次启动比Raspberry Pi OS更"啰嗦"。
Ubuntu官方树莓派镜像使用cloud-init作为首次启动配置工具。你在Imager里设置的用户名、密码、SSH、Wi-Fi,本质都会被写进SD卡的system-boot分区里的user-data和network-config文件。机器第一次开机时,系统会启动cloud-init服务,读取这些文件,创建用户、设置SSH、应用网络配置、扩展根分区。这个过程的长短取决于SD卡速度和镜像版本,慢的时候可能三五分钟。
所以,刚刚通电的前两三分钟里,SSH连不上或者ping不通都很正常。我的习惯是,通过路由器后台确认树莓派已经拿到IP之后,再耐心等一会儿。如果你想确认系统内部的初始化进度,可以登录进去后执行:
cloud-init status --wait它会显示running或done。看到done再开始做系统配置,能避免在初始化未完成时手工改配置造成冲突。
4.2 基础初始化:更新、时区、交换分区与防火墙
SSH连上后的第一步,我总是先做四个基础动作。这不是什么高深技巧,而是服务器长期稳定的底层保障。
先更新软件源和系统包:
sudo apt update sudo apt full-upgrade -yUbuntu的upgrade和full-upgrade有区别,后者会处理依赖变化,对第一次安装尤其重要。更新完如果需要重启内核,直接重启一次:
sudo reboot接着设置时区。树莓派默认时区通常是UTC,日志时间会和本地时间对不上,排查问题时很别扭:
sudo timedatectl set-timezone Asia/Shanghai然后确认根分区是否已经扩展到整张SD卡。Ubuntu镜像默认由cloud-init的growpart模块处理扩容,正常情况下/会占满整个分区。用df -h /看一眼,如果容量还停留在镜像原始大小,才考虑手工扩容。
内存充裕的树莓派5默认不配swap,但跑Docker或者编译软件时,swap仍然是重要的安全垫。我习惯给它加一个2GB的swap文件:
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab最后,把防火墙打开,只放行SSH:
sudo ufw allow OpenSSH sudo ufw enable云服务器上很多人习惯不碰防火墙,但内网设备长期暴露在局域网里,保留最小开放面总没有坏处。
4.3 固定IP与进一步远程管理准备
DHCP分配IP固然方便,但路由器重启或者租约过期后,树莓派的IP可能变化,下次SSH就要重新查。服务于长期无外设使用,我建议在系统内配置固定IP。
Ubuntu Server版默认由netplan管理网络。先看一下现有配置文件:
ls /etc/netplan/ cat /etc/netplan/50-cloud-init.yaml如果当前网络是DHCP,我会新建一个独立文件,比如/etc/netplan/99-static.yaml:
network: version: 2 ethernets: eth0: dhcp4: no addresses: - 192.168.1.2/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 192.168.1.1 - 223.5.5.5这里的eth0要替换成实际网卡名,可以通过ip addr确认。修改后不要直接netplan apply把自己锁在外面,先执行:
sudo netplan try这个命令会先应用配置并等120秒确认。如果网络正常,按回车确认;如果配置有问题导致断连,它会在超时后自动回滚,你依然能保持原SSH连接。这个小技巧在远程操作里救过我多次。
如果不想在系统里改,也可以在路由器里做DHCP地址保留,把树莓派的MAC和一个固定IP绑定,效果类似,但配置文件做到系统层更可控,以后换路由器也不受影响。
5. 无外设安装最常见的三个坑:供电、Wi-Fi 与 IP 丢失
5.1 启动失败:先查供电和卡,再查烧录
无外设场景下最让人头疼的,是树莓派5通电后绿灯完全不动。我的排查顺序永远是固定的,避免乱试。
第一步,验证电源。手边有万用表就测一下USB-C输出电压,没有就换一个官方27W电源再试。很多"启动失败"其实是供电电流不够,尤其是让你用手机充电头时,空载能亮灯,加载系统就断电重启。
第二步,重新插拔SD卡,确保卡插到位。树莓派5的SD卡槽有卡扣结构,要推到底。
第三步,把SD卡插回电脑,用Imager重新烧录一次,这次勾选"写入后验证"。如果换了镜像依然启动不了,换一张卡测试。某些标称高速的杂牌卡,实际写入后存在坏块,表现就是启动过程随机中断。
第四步,如果有条件,用串口线接GPIO看日志。这是最后手段,但对定位问题最有效。树莓派5的GPIO串口默认在Ubuntu下可能需要手动开启,这里不展开,遇到再说。
记住一个原则:不要在没确认电源和卡的时候反复烧录镜像。很多时候问题根本不在镜像。
5.2 Wi-Fi 连不上:从 2.4GHz、隐藏网络到网段冲突
无外设装机用Wi-Fi的人很多,问题也最多。最常见的原因是我们在Imager里只填了SSID和密码,但没有正确选择无线区域。国家区域会影响Wi-Fi信道的合法性,如果你的路由器在5GHz频段用了某些信道,区域设置不对就会搜索不到,表现为系统起来了但根本没连上路由。
排查时,先老老实实把Imager高级设置里的无线区域改成和中国大陆对应的CN,并把Wi-Fi先换成2.4GHz频段测试。2.4GHz穿透力和兼容性都更好,适合首次启动阶段。等系统跑通,再通过:
nmcli radio nmcli dev wifi list确认网卡能识别多少可用网络,再切回5GHz。
另一个隐蔽问题叫"AP隔离"。很多家用路由器的访客网络或者双频合一功能会开启AP隔离,导致接入同一Wi-Fi的设备互相不能通信。表现是树莓派确实连上了Wi-Fi,路由器后台也能看到它,但你的电脑无论如何都ping不通它。如果出现这种情况,去路由器后台关掉AP隔离,或者干脆把树莓派用网线接路由器。
这里多说一句:如果路由器后台能看到树莓派已连接,但SSH始终不通,先ping一下IP,再telnet ip 22看22端口通不通。连端口都不通,问题在网络层,不要反复怀疑系统没有启动。
5.3 没有路由器时,用网线直连和静态IP应急
有些场景下真的没有路由器。比如你出差住酒店,只有一台笔记本;或者树莓派要临时在室外开工,周围完全没有Wi-Fi基础设施。这种情况下也不是无解,关键是在烧录镜像时提前写好静态IP。
卡写完后,不要急着弹出,手动挂载SD卡的system-boot分区,找到network-config文件,把以太网口写成静态:
network: version: 2 ethernets: eth0: dhcp4: no addresses: - 192.168.50.2/24然后电脑的网口也手动配置成192.168.50.1/24,用网线把树莓派5和电脑直连。现在的网卡基本都支持自动翻转,普通网线就行。接好后,树莓派会被固定在192.168.50.2,电脑直接SSH过去。要注意的是,文件里旧配置要先看一遍,不要留两个冲突的eth0配置,否则netplan会直接报错。
如果没有网线,另一个方案是用手机热点。打开热点,把树莓派和电脑都连到同一个热点上,树莓派的IP能在手机热点的已连接设备列表里看到。热点本质就是一个微型路由器,比直连网线还要方便,只是机身发热和耗电会稍高一些。这两个方法我都实测过,都能在没有传统路由器的情况下完成无外设安装。
6. 长期无人值守使用树莓派5的配置沉淀
6.1 过热降频与日志:无人值守的可靠性设计
系统装好只是开始,树莓派5长时间当服务器用,散热和日志才是真正的长期话题。
树莓派5的CPU在重负载下温度上升很快,官方主动散热器是成本最低的解决方案。安装后可以定期检查:
vcgencmd measure_temp vcgencmd get_throttled温度超过85度才开始降频,但长时间保持在70度以上,对SD卡寿命不太友好。我的经验是尽量让温度长期维持在60度以下,尤其当SD卡作为系统盘时,高温会使卡上的主控更容易出坏块。如果你发现温度频繁突破80度,先检查散热器是否贴实,再检查机箱风道。
日志方面,Ubuntu默认的journald日志是保存在内存里的,重启后容易丢。打开持久化存储很关键:
sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald之后再排查历史问题,可以用journalctl回溯到上次运行的记录,而不至于两眼一抹黑。
6.2 把装机流程脚本化,重装不会累
树莓派5这张SD卡迟早会写坏或者想换更大的卡。与其每次重装都从头手点一遍,不如把初始化过程整理成一个脚本,下次直接执行。
我的习惯是维护一个init-pi5.sh,里面包含更新源、装基础工具、设置时区、创建swap、配置netplan静态IP、开启UFW防火墙这些固定动作。脚本不复杂,但能保证每次装出来的环境一致。真正到需要重装的场景,你只需要:用Imager重新烧录镜像、插卡上电、等cloud-init跑完、执行一次脚本。整个过程可以控制在二十分钟以内。
如果你连预配置都想脚本化,也可以直接研究cloud-init的user-data,把用户、SSH密钥、软件包安装都写进去。Imager高级设置帮我们做了第一层,完整的cloud-init语法可以做更多。
6.3 我保留的一个小习惯:设备标签与地址台账
最后分享一个很朴素但有效的习惯:维护一份设备清单。
我自己会在路由器DHCP里给树莓派5固定一个IP,例如192.168.1.2,然后在纸上或者笔记软件里记下四样东西:主机名、MAC地址、固定IP、系统版本。SD卡上也用记号笔写上日期和系统版本。不要小看这一步,等你手里同时有三四块树莓派、好几张SD卡时,任何一块不知道跑着什么系统的卡都会变成灾难现场。
无外设安装本身是一次性的动作,但它背后暴露的问题其实是远程管理思维:一切配置前置,一切状态可观测,一切变更可回滚。把树莓派5当成一台没有显示器的服务器来对待,很多后来的维护问题都会少很多。