树莓派这块巴掌大的板子,第一次接触的人多半会经历同一套流程:下单时很兴奋,觉得它差不多能顶一台小电脑;东西到手,插电,屏幕黑的,绿灯一闪一闪,人就卡在那儿了。我这几年帮朋友配过不下二十块板子,从早期的 3B+ 到 4B、Zero 2 W,再到手边这块 5,出问题的地方惊人地集中:卡没烧对、电给不够、无线国家码没设、Python 装包被系统拦下来。所以这篇树莓派入门手册不打算把官方文档再抄一遍,我按“从拆快递到让板子连续跑上半年”的真实顺序写,每一步都在解释为什么这么做、哪儿最容易翻车。不管你是想做个家庭文件服务器、跑个自用的小服务、接传感器做自动化,还是单纯想让孩子摸摸硬件,下面这套流程照着走都能落地。
1. 动手之前先把三件事想明白
1.1 你的需求决定了买哪块板子
新手最常见的错误是先买板子再想用途,结果买了个顶配,插上电只用来跑个命令行,风扇还吵得要命;或者贪便宜买了 Zero,回头发现要接网线、要跑容器,处处受制。我把这几年的经验压成一句话:先确定“要不要图形界面”“要不要接一堆外设”“要不要 7×24 小时开着”,答案出来,型号基本就定了。
只做单点任务、要极低功耗、要塞进小盒子里的场景,Zero 2 W 很合适,代价是没有有线网口、内存只有 512MB、排针还得自己焊。要接摄像头做图像处理、要跑多个服务、偶尔还想开个桌面看看网页,4B 的 4GB 或 8GB 版本是性价比最高的选择。而对算力有明确要求,比如本地跑个小模型、做多路视频解码、要 PCIe 接 NVMe 硬盘,那就直接上 5,别在 4B 上纠结,省下来的时间比省下的钱值钱。
下面这张表是我给朋友推荐时最常用的对照,参数都是从实际使用角度筛过的,不是把规格书照搬:
| 型号 | 处理器 | 内存档位 | 供电要求 | 接口特点 | 适合谁 | 主要短板 |
|---|---|---|---|---|---|---|
| Zero 2 W | 四核 A53 1GHz | 512MB | 5V/2A micro-USB | 无有线网口、mini HDMI、需自焊排针 | 单点采集、便携小项目 | 内存小,跑桌面基本没法用 |
| 4B | 四核 A72 1.5GHz | 1/2/4/8GB | 5V/3A USB-C | 双 micro-HDMI、2×USB3、千兆网口 | 通用主力机、家庭服务 | 满载发热明显,需要散热片 |
| 5 | 四核 A76 2.4GHz | 2/4/8GB | 5V/5A PD | 双标准 HDMI、2×USB3、PCIe 扩展 | 算力需求高、要多任务 | 必须配主动散热,价格上去了 |
选型时容易被忽略的是“电源接口”这一栏。Zero 系列是 micro-USB,4B 是 USB-C 但要求 5V/3A,5 直接要 5V/5A 的 PD 供电。很多人拿手机充电头凑合,能点亮,但一插 USB 硬盘就重启,这个坑后面第 5 章会专门讲。
1.2 配件清单:哪些钱绝对不能省
我见过太多人板子买得挺爽快,配件全靠凑,最后折腾三天得出的结论是“树莓派不好用”。其实问题从来不在板子。下面这份清单按“必需”和“可选”分好,价格量级也标了,你可以对着买。
| 配件 | 是否必需 | 建议规格 | 为什么这么选 |
|---|---|---|---|
| 存储卡 | 必需 | 16–32GB,标注 A1 或 A2、U3 | 容量大了没用,卡的王道是随机读写和耐久度 |
| 电源 | 必需 | 与型号匹配的 5V/3A 或 5V/5A PD | 欠压是新手故障率第一的原因,没有之一 |
| 读卡器 | 必需 | USB 3.0 独立读卡器 | 用笔记本自带卡槽烧录失败率高得离谱 |
| 散热 | 4B/5 必需 | 4B 用铝制散热片,5 用主动风扇 | 温度到阈值直接降频,你会以为板子坏了 |
| 外壳 | 建议 | 带风扇位、能露出全部接口 | 裸板放桌上,静电和短路是真实风险 |
| 视频线 | 视情况 | 4B 用 micro-HDMI,5 用标准 HDMI | 两种线不通用,买错的人非常多 |
| 网线 | 建议 | 超五类以上 | 首次配置走有线,比无线少一半麻烦 |
| 面包板套件 | 做硬件时必需 | 杜邦线、330Ω 电阻、LED | 接传感器前先拿 LED 练手,成本几块钱 |
这里有两个特别值得说的取舍。
第一是存储卡。它便宜,但它是整台机器里唯一有机械磨损的部件,也是最常见的“莫名其妙坏掉”的元凶。买卡别看容量看两个标:A1/A2 是应用性能等级,代表随机读写能力,A2 比 A1 快一截;U3 是持续写入速度等级。杂牌卡标着 64GB 卖十几块,标称速度能写,随机读写一塌糊涂,装完系统开机要转两分钟,这种卡我扔过好几张。
第二是电源。官方电源贵是贵,但它做的事很单纯:保证电压不塌。你用一个标称 5V/2A 的老充电头带 4B,插着键盘鼠标能跑,一旦 CPU 满载,电压跌下去,系统直接给你来个欠压标记,运气不好就是文件系统损坏。这个钱省不得,后面第 5 章我会讲怎么用命令查欠压历史。
2. 系统烧录:整台机器最容易翻车的一步
2.1 烧录流程拆解与每一步的意图
官方烧录工具把流程做得很傻瓜,但傻瓜流程背后每一步都有意义,理解了你才知道出问题时该退回到哪一步。
第一步是选型号和系统版本。工具会列出当前所有可选项,注意看系统版本号后面的代号,不同代号之间差异很大,尤其是涉及网络配置的部分,第 2.2 节会展开。选的时候还有一个“系统位数”的问题,新板子(4B 的 4GB 以上、5 的 4GB 以上)可以直接上 64 位系统,老型号老老实实 32 位,装错了根本起不来。
第二步是“编辑设置”。这个齿轮图标是新手最容易跳过、老手最先点开的地方。点进去把主机名、用户名密码、无线名称和密码、无线国家码、时区、键盘布局一次性填好,工具会在烧录时把这些配置写进引导分区,首次启动自动生效。这一步做好了,后面 80% 的首次启动问题都不会发生。
第三步是写入,写完之后工具会做一次校验。校验这一步千万别手动跳过,存储卡是假货重灾区,写进去的数据读出来不一致的情况比想象中常见。校验失败就换卡,别抱侥幸。
写完拔卡之前还有一个动作值得养成习惯:看一眼卡里有没有生成firstrun.sh之类的首次启动脚本,有就说明设置生效了,没有就说明你设置没保存成功,得重来。这个小检查帮我省过好几次重烧。
2.2 无显示器启动:最经典的一个坑
大部分人的第一台树莓派是没有显示器的,走的是“烧好卡、插网线、从电脑 SSH 进去”的路子。这条路本身没问题,但从系统换成新版之后,网上流传的老教程基本全废了。
老办法是往引导分区根目录扔两个文件:一个空文件叫ssh,用来打开远程登录;一个叫wpa_supplicant.conf,里面写无线名称和密码。在旧版系统上这套做法用了好多年,很多博文至今还这么写。
但是新版系统把网络管理从原来的组件换成了另一套,wpa_supplicant.conf已经不再被读取。你按老教程配好,插电,等十分钟,路由器后台里根本看不到设备,于是开始怀疑板子坏了。这个问题我至少帮三个人排查过,全是这个原因。
正确做法有两个,按可靠程度排序:
第一个,也是最省事的,就是用烧录工具的“编辑设置”界面填无线信息,它会自动生成首次启动脚本,首次开机执行完就把这些配置落到系统里,无线直接连上。填的时候注意“无线国家码”一定要选对,选错了 5GHz 频段直接不可用,信号也弱,这是另一个高频坑。
第二个是退回到有线。插上网线,路由器后台找一台新出现的设备,用主机名或者 IP 直接 SSH 进去,进去之后再配无线。这条路径最笨但最可靠,我强烈建议第一次装系统的人都走一遍,因为你能亲眼看到“网络通了”这个状态,后面出问题才好对比。
如果你手上没有网线也没有 HDMI 线,还有个办法是拿手机开个热点,把热点名称设成简单的纯英文,密码用 8 位纯数字,再用烧录工具写到卡里。手机热点不涉及国家码那些事,成功率明显高一些。
提示:不要依赖“看绿灯判断启动成功”。不同型号的绿灯含义不一样,正常运行时绿灯也是随机闪烁的,代表存储卡在读写。要确认启动成功,最直接的是看路由器后台有没有新设备上线。
2.3 存储卡参数背后的真实含义
买卡时那几个标到底看什么,我用人话翻一遍。
容量看 16GB 到 32GB 就够。系统本身占七八个 G,剩下十几个 G 放代码和日志绰绰有余,数据大了应该挂外置盘,而不是靠卡硬撑。容量越大,卡的磨损管理越复杂,反而更容易在某一块区域先坏。
A1 和 A2 是应用性能等级,专指随机读写,这正是系统运行最吃的东西:开机加载几百个小文件、运行程序读配置,全是随机小 I/O。A2 要求比 A1 高一个数量级,价格差不了多少,能买 A2 就买 A2。
U3 是持续写入速度等级,对应录像、写日志这类连续写入场景。做摄像头项目的话这个参数比 A 等级更重要,写不满会掉帧。
还有一个参数表上很少标但真实存在的东西:耐久度。存储卡用的是闪存颗粒,每个块有擦写次数上限。系统盘的特点是频繁写日志和临时文件,一天写几百兆很常见,久了就是坏块。后面第 5 章会讲怎么用系统自带的手段把这个写入量压下去,能让一张卡的寿命从半年拉到三五年。
3. 首次上电:从黑屏到能敲命令
3.1 上电后的三种结局与判断方法
插电那一瞬间,结果基本逃不出三种。
第一种,屏幕亮了,出现启动日志滚动,最后停在登录提示或者桌面。恭喜,进第 3.2 节。
第二种,绿灯有规律地闪,屏幕全黑。这种闪码是引导阶段失败的外在表现,不同型号、不同闪法对应的问题不一样,但顺序上你得先排除软件问题:把卡重烧一遍,如果还是同样闪法,再怀疑硬件。重烧能解决的情况占了绝大多数,因为写入校验失败、配置脚本写坏这些问题都不会有任何提示,你只能靠重烧排除。
第三种,绿灯常亮不闪,屏幕黑的或者一直停在彩色画面。常亮不闪通常意味着卡根本没被正确读取,要么卡没插到底,要么卡槽接触不良,要么卡本身在这个板子上不兼容。彩色画面卡住则多半是引导文件读到了但系统起不来,还是先重烧,用另一张卡重烧,交叉验证一步到位。
这个阶段最忌讳的是“一边改配置一边试”。你一上来就改启动配置文件、改分辨率、加各种参数,出问题之后你根本不知道是哪一项导致的。干净的镜像先跑通,跑通了再一项一项加,这是唯一靠谱的排查节奏。
3.2 系统配置工具里真正需要改的几项
系统自带一个文本界面的配置工具,命令行里敲它的名字就能进。里面选项一大堆,新手容易全改一遍,其实真正需要动的就几项。
主机名(Hostname):改成有意义的名字,比如家里叫你给这块板子起的功能名。改完之后用名字就能访问,不用记 IP,这个便利性在设备多了之后特别明显。
密码:默认密码是公开的,虽然只在局域网里,也建议改掉。改密码不要用太复杂的特殊符号,因为有些老式终端对特殊字符支持不好,登录时会莫名其妙失败。
启动方式:可以选启动到命令行或者启动到桌面。做服务器用的一定选命令行,省内存、省启动时间、少一堆后台进程。只有真需要图形界面时才选桌面,而且可以配成“手动登录后才启动桌面”,需要时再开。
接口开关:远程登录、屏幕共享、串口、I2C、SPI、单总线这些开关默认都是关的。接传感器的时候发现读不到设备,十次有八次是这里没打开。特别注意串口那一项,系统默认把串口留给控制台输出,想拿串口接外设必须先关掉控制台功能,只留硬件串口,这一步不做,你接上去收到的全是系统日志而不是传感器数据。
本地化设置:时区、键盘布局、无线国家码。时区不改,日志时间全错,排查问题时会被误导。无线国家码不改,5GHz 直接不可用。
性能选项:里面有个超频和图形内存分配的设置。图形内存只有在你用桌面或者接摄像头做预览时才需要调,纯命令行跑服务的话把它调到最小,能多腾出一点内存。超频不建议新手碰,散热跟不上就是白白降频。
3.3 局域网内的远程连接:两种方式怎么选
远程登录(SSH)是必须掌握的。打开之后,在另一台电脑的终端里敲一行命令加上板子的地址,输密码进去,操作体验跟坐在板子前面完全一样。日常改配置、装软件、看日志、跑脚本全靠它。
用名字访问需要网络里有个名字解析服务,苹果和 Linux 系统默认支持,Windows 上可能得额外装一个组件。不想折腾就直接在路由器后台查 IP,用 IP 连,稳定省事,缺点是 IP 可能会变,解决办法是在路由器里给板子绑定固定 IP。
屏幕共享(VNC)是可选项,用在需要看图形界面的场景,比如偶尔开个浏览器、跑个需要界面的配置工具。开启之后用客户端连上去,分辨率可以在配置里固定下来,不然默认跟随显示器,没显示器的时候会给你一个很小的画面,看着难受。
这里有个经验:两块板子接同一个网络的时候,主机名别重名。重名会导致名字解析随机指到其中一台,你改了半天配置发现改的是另一块,那种体验非常糟糕。
注意:远程登录只在局域网内用就够了。如果你的使用场景需要从外面访问家里的板子,请优先考虑在路由器上做端口映射之外更规范的方式,并注意账号密码强度与访问控制,不要图省事用弱口令。这一点比任何配置技巧都重要。
4. 让板子真正干活:从点灯到常驻服务
4.1 GPIO 点灯:硬件世界的第一个实验
软件环境跑通之后,接硬件是很多人的下一步。第一个实验无脑推荐点灯,成本几块钱,能把“软件控制物理世界”这件事完整走一遍。
接线很简单:找一个标着通用输入输出的引脚(按芯片编号算,比如编号 17 的那个,在物理排针上是第 11 位),从它引一根线到 330Ω 电阻,电阻另一端接 LED 长脚,LED 短脚接任意一个接地引脚。电阻不能省,它限制电流,省掉的话发光二极管和引脚都可能烧。极性也不能接反,长脚是正极,接反了不亮但不会坏。
代码层面用 Python 最省事,系统里通常预装了控制库:
from gpiozero import LED from time import sleep # 17 是芯片侧的编号,不是物理引脚号,这里最容易搞混 led = LED(17) while True: led.on() sleep(1) led.off() sleep(1)这里必须强调一个新手血泪点:芯片编号和物理引脚编号是两套体系。网上教程有的按物理位置数第几根,有的按芯片编号写 17,你照抄的时候对不上号,灯就是不亮,然后开始怀疑人生。我的建议是统一用芯片编号,因为代码库默认就是这个体系,接线时对着引脚图找就行,形成习惯后不会再错。
还有两条硬件纪律。第一,引脚的电平是 3.3V,不能把 5V 直接接到输入引脚上,会烧。第二,单个引脚能提供的电流很小,几十毫安级别,驱动继电器、电机这类负载必须经过三极管或者驱动模块,直接接上去轻则不工作,重则烧板子。
4.2 Python 环境管理:新版系统定下的新规矩
如果你按网上的老教程装包,大概率会撞上这样一条报错:当前环境由系统统一管理,请使用虚拟环境或系统包管理器。这不是报错写错了,是新版系统有意为之,目的是不让用户随手装包把系统自带的 Python 环境搞乱。
正确姿势是给每个项目建独立虚拟环境:
sudo apt update sudo apt install -y python3-venv mkdir -p ~/projects/sensor && cd ~/projects/sensor python3 -m venv venv source venv/bin/activate pip install -r requirements.txt建好之后,每次跑程序前先激活这个环境,命令行前面会出现环境名,表示当前在这个环境里。这样不同项目的依赖互不干扰,某个项目要旧版本的库,另一个要新版本,都能同时存在。
为什么要费这个事?我踩过的坑:早期图省事直接用系统 Python 装了一堆库,后来某次系统升级,系统自带的工具依赖某个库的特定版本,跟我装的冲突,升级直接失败,最后只能重装系统。虚拟环境就是为了避免这种连带伤害。
如果你确实需要在系统级装一个包(比如某个命令行工具),可以用系统包管理器装,或者加一个明确的参数告诉 pip“我知道我在干什么”,但这个参数不该出现在日常流程里。
还有个小细节:系统里同时存在 Python 3 的两个小版本时,python3指向哪个会影响你以为装了但实际没装的情况。养成用python3 --version确认一下的习惯,配合虚拟环境用绝对路径调解释器,能少掉一半的玄学问题。
4.3 用 systemd 让程序开机自启
脚本在终端里跑得好好的,一关掉终端就停了,这是新手第二个灵魂拷问。答案是用系统自带的服务管理器把它托管起来,好处是开机自启、崩了自动重启、日志统一管理。
写一个服务文件,放在系统的服务目录里:
[Unit] Description=Sensor Logger Service After=network-online.target Wants=network-online.target [Service] Type=simple User=pi WorkingDirectory=/home/pi/projects/sensor ExecStart=/home/pi/projects/sensor/venv/bin/python /home/pi/projects/sensor/main.py Restart=on-failure RestartSec=5 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target几个字段值得解释。ExecStart里我直接写了虚拟环境里的解释器绝对路径,这样不依赖激活状态,服务启动时一定能找到依赖。Restart=on-failure配合RestartSec=5意味着程序崩了五秒后自动拉起,做长期采集的项目这个是标配。After=network-online.target保证网络就绪之后再启动,否则程序一起来就要联网,网络还没好,直接失败一次。
写完执行三条命令:
sudo systemctl daemon-reload sudo systemctl enable --now sensor-logger.service systemctl status sensor-logger.service第一条让系统重新读配置,第二条设为开机自启并立刻启动,第三条看状态。出问题就看日志:
journalctl -u sensor-logger.service -f-f是持续跟踪,适合一边改代码一边看输出。日志里能看到程序自己的打印,也能看到崩溃堆栈,比在终端里跑强得多。
提示:服务文件里的用户不要写成 root。用普通用户跑,权限出了问题系统会拦住你,反而暴露了设计缺陷;用 root 跑,一个路径写错就可能删掉不该删的东西。
5. 长期运行:供电、散热与存储卡寿命
5.1 欠压是隐形杀手
板子跑着跑着突然重启、USB 设备掉线、网络断开,很多人第一反应是系统有 bug,其实是电不够。
系统里有条命令能直接查这件事:
vcgencmd get_throttled返回值是一串十六进制数。0x0表示一切正常。如果不是 0,把它拆开看每一位代表什么,我把常用的几位整理如下:
| 位值 | 含义 | 怎么处理 |
|---|---|---|
| 0x1 | 当前正在欠压 | 立刻换电源或换更粗的线 |
| 0x2 | 当前正在降频 | 检查供电和散热 |
| 0x4 | 当前因温度受限 | 加散热 |
| 0x10000 | 曾经发生过欠压 | 看历史,说明电源撑不住峰值 |
| 0x20000 | 曾经发生过降频 | 同上 |
| 0x40000 | 曾经因温度受限 | 散热方案需要升级 |
注意后三位是“曾经”,记录的是历史。哪怕现在电压正常,只要历史位被置上,就说明你某个时刻电不够用了。这种情况最常见于插着 USB 硬盘启动的瞬间,或者 CPU 满载跑几分钟后。
配套还有一条温度命令:
vcgencmd measure_temp我自己的经验阈值:待机超过 60 度就该加散热了,满载超过 80 度一定会降频。4B 贴个铝制散热片能降十几度,5 必须上主动风扇,被动散热压不住。
电源这块还有几个细节。线材比充电头更容易被忽视,同一条线插在同一个头上,换一条粗一点的能直接消掉欠压警告,因为细线的压降很明显。USB 供电的板子尽量别用带开关的插排,开关接触电阻也会带来压降。板子外接大功率设备(硬盘、屏幕、电机)时,给外设单独供电,别指望主板的 USB 口能供得起。
5.2 散热方案怎么选
散热不是越贵越好,是按型号和使用强度配。
4B 上,一块贴得严实的铝制散热片就能覆盖绝大多数场景,成本十几块。要跑持续满载的任务(视频转码、编译),加个带风扇的外壳,注意选风扇从外壳往外抽风的,往里吹的会把灰尘全灌进去。
5 上必须主动散热,官方那个主动散热器带风扇和导热垫,跟系统有联动,温度低时风扇不转或者低速转,安静。用第三方风扇也行,但要确认固定方式够紧,压不住就是白装。
Zero 系列功耗低,一般不需要散热,塞在密闭小盒子里跑满载的话贴个小散热片就够。
还有个容易被忽略的点是外壳风道。全封闭的亚克力盒子看着好看,热量全闷在里面,我见过一块 4B 塞在无孔盒子里,待机就 70 多度。买外壳的时候看一眼有没有进出风口,比看颜值重要。
5.3 把存储卡的写入量压下去
存储卡是消耗品,延长寿命的思路就一条:减少不必要的写入。系统自带几个手段,配置起来都不难。
第一个是关闭交换分区。系统默认在卡上划一块空间当虚拟内存,内存不够时往里写,写入量极大。板子内存有 4GB 以上的话,直接用系统配置工具里的选项把它关掉,或者把交换文件换到外置盘上。我见过一块卡三个月就报废的,交换分区贡献巨大。
第二个是把日志写到内存。系统日志一天能写几十兆,全落在卡上。可以用轻量的日志缓冲方案把日志先攒在内存里,定时批量落盘,写入次数能降一个数量级。这个改动不大,但对卡友好得多。
第三个,也是最彻底的,是把根文件系统设成只读,用一个内存层做叠加。系统配置工具的“性能”页里有这个开关,打开之后所有写入都进内存,重启就清空,卡基本不再被写。代价是系统改配置后重启会丢,所以适合“配置好了就不再动”的机器,比如做一个固定的采集终端、一个固定的播放设备。我的做法是先把机器调好、备份一份镜像,再打开这个开关,感觉操作失误可能弄乱系统时就重启一下,几秒钟恢复原状。
第四个是配置文件的调整。系统启动配置里可以关掉一些不必要的写入源,比如把临时目录挂到内存里。这个改动需要一点基础,但效果明显。
6. 常见问题排查实录
6.1 开不了机类问题速查
下面这张表是我这几年被问得最多的开机问题,按“先查什么”的顺序排的,从上往下试,八成问题在前两行就能解决。
| 现象 | 最可能原因 | 排查动作 |
|---|---|---|
| 绿灯不亮,完全没反应 | 供电不足或电源不兼容 | 换匹配规格的电源,看板上指示灯是否有反应 |
| 绿灯常亮不闪,屏幕黑 | 存储卡未被识别 | 重新插卡,换一张卡交叉验证 |
| 绿灯规律闪码,屏幕黑 | 引导文件读取失败 | 用干净镜像重烧,换读卡器 |
| 卡在彩色画面 | 系统文件损坏 | 重烧,烧录时务必做校验 |
| 屏幕一直黑但设备在线 | 输出接口或线材问题 | 优先用靠近电源口的那个 HDMI 口,换线 |
| 开机几十秒后自动重启 | 欠压 | 查欠压命令,换电源和线 |
| 系统能起但极慢 | 存储卡性能差 | 换 A2 等级的卡 |
补两条表里放不下的经验。一是分辨率问题:接某些显示器时没有画面,是因为系统输出的分辨率超出显示器支持范围,可以在启动配置里强制一个保守的分辨率试一下,能出画面就说明是这个问题,再逐级往上调。二是键盘鼠标:USB 设备接在蓝色口上和黑色口上,对某些老设备兼容性不一样,接上认不到就换个口试试,这个土办法经常管用。
6.2 网络与远程连接类问题
连不上是第二大类问题,我按排查顺序捋一遍。
先确认设备在不在线。登录路由器后台,看设备列表里有没有新出现的条目。这一步能一刀切开两类问题:列表里有,说明网络没问题,问题在登录配置;列表里没有,说明根本没连上网络。
连不上网络的话,按前面 2.2 节的思路倒推:无线配置是不是用了老办法(旧配置文件已经失效)、国家码是不是没设、无线名称里是不是有中文或者特殊字符、密码里有没有容易被转义掉的符号。这几条我都遇到过,尤其是中文名称,看着没事,实际连不上。
设备在线但登录不进去,问题多半在账号。用户名在新版系统里有变化,老的pi账号不再默认存在,你按老教程输pi当然进不去。这时候要么接显示器本地登录,要么把卡拔下来挂到另一台电脑上改配置,要么重烧时在设置界面里把用户名设成好记的。
还有一种情况是 IP 变了。路由器分配的地址有租期,到期可能换一个,你用旧地址连当然失败。解决办法在前面提过:在路由器里给板子的网卡地址绑定固定 IP,一劳永逸。
最后是一个很隐蔽的点:两台设备主机名重名。你连上去改了半天,发现改的是另一台,那种感觉非常酸爽。设备一多就统一命名规范,比如按功能加序号。
6.3 几条踩坑才换来的私房经验
先备份,再折腾。系统跑通、配置调好、程序装完的那一刻,立刻把卡拔下来用读卡器把整张卡读成镜像文件存起来,几 GB 而已,硬盘上放着不心疼。之后无论怎么折腾坏了,写回去十分钟恢复,比重装一遍省几小时。这个习惯我从第三块板子开始养,救过我至少五次。
一次只改一个东西。改配置、装驱动、换硬件,一次只动一样,动完立刻验证。同时改三样,出问题之后你只能全部回退,前面调好的参数也白调了。我看到新手最容易犯的就是一口气按三篇不同的教程改一遍,然后系统起不来,不知道哪一步的问题。
先在本地终端跑通,再交给服务托管。程序还在调试阶段就配成开机自启,出问题你连报错都看不见,只能靠日志猜。我的流程是本地终端跑通、连续跑十几分钟不出错、确认依赖齐全,最后一步才写成服务。
把常用命令记在一个文本文件里。板子上那台机器迟早会重装,你调过的每一个参数、写过的每一条命令,重装时都得再来一遍。我现在每块板子的家目录里都有一个notes.md,记着电源型号、散热方案、装了哪些包、服务怎么起、遇到什么问题怎么解的。这个文件比任何教程都值钱,因为它记的是你这台机器的具体情况。
最后一条是关于期望值的。树莓派不是服务器,也不该被当成服务器用。它能做的事情很多,但它的边界很清晰:内存有限、IO 带宽有限、没有硬件冗余。把它放在合适的位置上,它就能连续跑一年不出问题;非要让它干超出能力的事,它就会用各种莫名其妙的方式告诉你不行。我现在的用法很简单,一块 4B 管文件共享和定时备份,一块 5 管需要算力的任务,各司其职,一年多没碰过。这种“配好就不用管”的状态,才是这类小板子最舒服的打开方式。