
树莓派这块小板子我前后上手过十几块从最早只能点亮一个 LED 的型号到后来能跑容器、能当小型图像处理节点的版本中间踩的坑基本没落下过。很多人对它的第一印象是便宜的迷你电脑买回来插上电源、烧个系统、点几下然后就放进抽屉里吃灰——真正让它卡住的往往不是写代码而是供电不足、存储卡质量、镜像烧录方式这些看起来极其琐碎的环节。这篇内容就是把我这些年带人入门时反复讲的那套流程整理出来从买之前的选型判断到开箱配件到系统烧录、首次上电、无显示器远程接入再到让 GPIO 真正动起来、出问题怎么一步步定位、长期挂着跑怎么不翻车。它适合完全没接触过单板计算机的新手也适合用过一阵但总在某个环节反复翻车的人读完你应该能独立把一块板子从盒子里带到稳定干活的状。1. 板子到手前先定用途三类玩法对应的型号门槛1.1 小电脑和控制器是两条完全不同的路树莓派最常见的用法其实分成三类搞清楚自己属于哪一类能省下不少冤枉钱。第一类是当桌面小电脑用接显示器、键盘鼠标写文档、看网页、跑轻量编辑器。第二类是当无人值守的服务节点塞在角落接网线或者连无线跑一个网站、一个文件共享服务、一个定时任务。第三类是当硬件控制器接传感器、继电器、摄像头做数据采集或者自动化。这三类对硬件的要求差别很大。第一类吃内存和存储速度第二类吃稳定供电和网络第三类吃 GPIO 引脚的可用性和实时性。同型号的板子在这三种场景下的表现可以天差地别——一台跑桌面很吃力的配置做数据采集节点可能绰绰有余反过来一台能流畅跑桌面的机器接上传感器后因为散热不足在夏天频繁降频也很常见。我一般建议新手先诚实回答一个问题这块板子插上电之后你希望它每天在做什么如果答不上来那不如先从一个具体的小目标开始比如每小时记录一次室内温湿度并存成文件这个目标足够小但会逼着你把烧录、联网、远程登录、定时任务整条链路都走一遍。1.2 型号选择的一条实用分界线市面上的型号代数跨度很大参数表看多了容易晕。我给新手的判断标准其实只有一条看你需不需要 GPIO 之外的计算性能。如果只是点灯、读传感器、控制继电器、做个简单的数据上报任意一块带 40 针排针的现代型号都够用内存 1GB 起步就行甚至可以选更便宜的简化版本。这类任务瓶颈几乎从来不在算力上。如果你打算跑桌面、跑浏览器、跑轻量数据库、做图片处理那内存至少要 4GB存储不要依赖 SD 卡。8GB 的版本在跑多标签浏览器或容器时会舒服很多但这个舒服是边际收益递减的不要为了数字好看多花钱。至于要不要买最新一代我的看法是新一代在接口速度、供电规格、PCIe 扩展上提升明显如果你打算长期用、打算接 SSD、打算跑稍微重一点的服务直接上新一代更省心。如果只是练手点灯上一代甚至上两代的二手板子完全够用价格能便宜一大截。唯一要注意的是老型号的系统支持周期太老的型号在新版系统上可能会缺驱动或者性能捉襟见肘。1.3 内存和存储的取舍顺序如果把预算拆成几份我建议的优先级是稳定电源 靠谱存储卡 散热 内存容量。这个顺序可能和直觉相反因为内存是参数表上最显眼的数字但实测下来内存不够最多是卡顿和交换电源不够和存储卡坏了是直接死机、数据丢失。内存不够的典型表现是系统频繁读写交换分区操作延迟明显上升但进程不会崩。电源不够的典型表现是跑一会儿随机重启、USB 设备掉线、存储卡出现只读状态——这些故障看起来毫无规律排查起来极其折磨人。存储卡质量差的典型表现是系统用几个月后突然起不来或者文件系统报错需要修复。所以我的实际建议是宁可选低一档内存也要把电源和存储卡配到位。2. 配件清单里最容易省错的三样东西2.1 电源所有玄学故障的头号嫌疑新手最常见的翻车方式是拿一个手机充电头接上去。看起来能亮能开机甚至能用一阵子但问题会在负载上来之后集中爆发编译一个稍大的包、插上一个 USB 硬盘、摄像头开始工作——电压瞬间跌落板子直接重启或者把存储卡写坏。不同型号对电源的要求不一样。较新的型号普遍要求 5V/3A 级别的供电更新的型号在满负载时对电流要求更高还涉及供电协议协商。这类板子对电压波动非常敏感因为它的供电电路设计余量不大线材一长、接头一松压降就很可观。我在实际使用中的判断方法很朴素用一根足够短、足够粗的线接一个标称电流明显高于需求的电源适配器。不要用那种带开关的多口 USB 分线器不要用细软的充电线不要用长度超过一米的线。如果板子上有电源指示灯观察它在负载变化时是否闪烁或变暗——这几乎是欠压最直观的信号。系统里也有工具可以查。较新的系统提供了查询欠压状态的命令返回一个位掩码全零表示一切正常vcgencmd get_throttled如果返回值不是throttled0x0说明当前或曾经发生过欠压、降频、过热。这个命令我建议每次遇到莫名其妙的卡顿时都先跑一遍它能排掉一大半嫌疑。注意这个命令记录的是曾经发生过的状态插上电源的瞬间波动也会被记下来。想复位这个标志最简单的办法是完全断电重插然后再观察是否复现。2.2 存储卡寿命比容量更值得花钱存储卡是另一个大坑。很多人买卡只看容量和标称速度几十块买一张大容量卡结果系统跑三个月就起不来。原因在于这类卡的设计目标是相机拍完就拔写入模式是突发的大块写入而操作系统跑起来是持续的、小块的、分散的写入还带日志和交换对卡的耐久度要求高得多。选卡的时候除了容量更值得看的是应用性能等级标记和耐久系列。带应用性能等级标记的卡针对随机读写做了优化系统响应会明显更顺。容量方面现代系统装完加常用软件32GB 是底线64GB 会舒服不少但没有必要追求更大——卡越大备份和镜像的时间越长。还有一个容易被忽略的点卡的实际可用寿命和写入量强相关。日志、临时文件、交换分区都在持续写入。如果你的节点要长期挂着跑后面第 8 节会讲怎么减少无谓写入。如果写入量本来就很大比如要跑数据库或者做视频录制那就别用卡了直接上外接固态盘。2.3 散热与外壳这不是外观问题新手往往把外壳当装饰实际上它直接影响稳定性。较新的型号在满负载时功耗不低被动散热片压不住温度很快就能冲到降频阈值。系统默认的降频起点大概在 80 摄氏度附近到 85 摄氏度会进一步限制频率。降频本身不危险但它会让你的编译时间翻倍、视频转码卡顿还会让为什么我的板子这么慢变成一个长期的困惑。我一般会给需要长时间满载的机器配一个带风扇的铝制外壳或者至少一块大面积的金属散热片加一个小风扇。判断够不够用的方法很直接跑一段满载测试然后持续观察温度# 终端里循环观察温度 while true; do vcgencmd measure_temp; sleep 2; done如果满载十分钟后温度稳定在 70 摄氏度以下那基本没问题如果在 80 摄氏度附近反复徘徊就该考虑加散热了。下面这张表是我给新手的配件优先级参考按这个顺序花钱基本不会浪费配件优先级踩坑后果我的实际建议电源适配器最高随机重启、存储卡损坏标称电流留足余量线短而粗存储卡最高系统几个月后无法启动选应用性能等级标记的耐久卡32GB 起散热方案高满载降频、性能腰斩金属外壳加风扇满载控在 70 度以内外壳与固定中短路、排针受力变形绝缘底壳别让板子直接躺在金属上显示器与键鼠按需只影响首次配置体验无头安装可以完全省掉扩展板与传感器按需买多了闲置先买一个跑通了再补表格里显示器与键鼠这一项很多人以为必须买其实完全可以省掉。下一节讲的无头安装方式能让你在不接任何显示器的情况下把系统配置完。3. 烧录系统为什么不能把镜像文件直接拖进卡3.1 镜像不是文件是整块磁盘的副本新手最容易犯的一个错是把下载回来的镜像文件当成普通文件复制到已经格式化的卡里然后插上板子期待它开机。这必然失败因为镜像文件不是一个文件而是一整块磁盘的逐字节快照里面包含了分区表、引导区、文件系统元数据。正确的做法是把这份快照原样还原到卡上覆盖掉卡原有的分区结构。理解了这一点很多操作就说得通了为什么烧录完在电脑上看不到卡里的内容因为电脑只认识第一个分区而有些系统用的分区格式电脑不认为什么烧录会清空卡上所有数据为什么烧录完不能直接拔卡缓冲区还没刷完分区表可能写不全。同样地我能不能直接在卡里改配置文件这个问题也就有答案了能但只能改系统里能被电脑识别的那一个分区通常是启动分区。这个特性在无头配置时非常有用。3.2 用官方烧录工具的完整步骤我推荐用官方的镜像烧录工具理由很实际它会自动下载最新的系统镜像、自动校验下载完整性、内置了首次启动的预配置项还能记住你上次的选择。手动下载镜像再用通用工具写入当然也行但多了一步校验新手容易漏。完整流程大致是这样打开工具选择目标设备型号。这一步不是装饰选对型号能保证它给你推荐的镜像和你的硬件匹配。选择操作系统。新手直接选默认的桌面版就行如果确定要无头运行选精简版体积小、启动快、占用少。选择存储设备。这一步务必确认盘符选错了会把你电脑上的移动硬盘清空这个事故我见过不止一次。点开设置入口填入主机名、用户名、密码、无线网络信息、时区、键盘布局。写入等待完成工具会自动校验。关于第 4 步有几个细节值得单独说。主机名建议改成有意义的名字比如node-a、sensor-01之后在同一局域网里用名字访问会比记 IP 方便得多。用户名不要用默认的那个现代系统在首次启动时本来就要求你创建用户用默认名会带来一堆权限和路径上的混淆。密码不要太简单因为一旦这台机器暴露在局域网里弱密码就是最大的风险点。无线网络信息这里有个隐含的坑它只支持常见的家用加密方式如果你用的是企业级认证或者隐藏 SSID预配置会失败这种情况只能走有线或者接显示器手动配置。3.3 首次插卡的正确姿势烧录完成后工具通常会提示可以拔出。我的习惯是先等工具显示校验完成再在系统里安全弹出这个设备然后拔卡。跳过安全弹出这一步在写入量大、卡速慢的情况下确实有可能出现分区表没写完的情况。插卡之前先确认板子处于完全断电状态。带电插拔存储卡在大多数型号上不是设计预期行为虽然在实践中经常没出事但没有必要冒这个风险。然后接上电源。第一次启动会比之后慢很多因为它要做分区扩容、生成密钥、初始化各种服务。这个过程可能持续一到三分钟屏幕可能长时间停在某个画面或者黑屏不要因为没反应就反复断电重启。我见过有人因为等不及在系统正在扩容文件系统的时候拔电结果卡直接变成半残状态只能重烧。判断是否真的启动成功最可靠的信号是板子上的状态指示灯正常的系统在启动完成后会有规律地闪烁。如果灯长时间完全不动那才是真的出问题了排查方法在第 7 节。4. 第一次上电没有显示器也能把它拉进局域网4.1 有屏路线和无头路线的差别接显示器是最直观的方式插上 HDMI、接上键盘鼠标开机就是图形界面跟着向导走一遍就完事。这条路线适合手边正好有显示器的人也适合完全不熟悉命令行的新手。但绝大多数情况下你手边没有多余的显示器和键鼠而且即使有这套东西长期占着桌面也很碍事。无头路线就是为这个场景设计的烧录时把用户名、密码、无线网络都预置好开机后它自己连上网络你用另一台电脑通过命令行或者远程桌面接管。我之前提过有些系统版本需要手动在启动分区放一个空的ssh文件来开启远程登录较新的烧录工具已经在设置里提供了开关勾上就行。这两种方式效果一样本质都是让系统在启动时把远程登录服务拉起来。4.2 找到它的 IP三种可行办法无头安装的第一道坎是它在哪。我常用的办法有三个按可靠性排序第一个是路由器管理页面查 DHCP 租约。登录路由器后台找已连接设备列表看有没有一个陌生的、名字和你设置的主机名一致的设备。这个办法最可靠因为它直接读的是分配记录。第二个是用主机名解析。现代系统普遍支持本地域名解析直接在另一台电脑上尝试ping node-a.local如果这个名字能解析出地址说明解析服务工作正常。这个办法在部分网络环境下会失败比如路由器屏蔽了组播、或者你的客户端系统没装对应的解析组件。第三个是网段扫描。先看自己电脑的地址和掩码推测出网段然后扫一遍# 查看本机地址 ip addr # 扫描网段需要先安装扫描工具 sudo apt install arp-scan sudo arp-scan --interfaceeth0 --localnet扫描结果里找那个厂商前缀匹配的设备。这个办法稍麻烦但在前两个都失败时最管用。提示如果这台机器要长期使用找到 IP 之后建议在路由器里做一个静态地址绑定把 MAC 地址和 IP 固定下来。否则某天路由器重启、租约变化你的脚本和远程连接会集体失效而你会以为是机器坏了。4.3 首次登录后必须做的几件事连上之后第一件事是登录并改掉那些默认值。现代系统首次启动会要求你创建用户这个环节已经规避了默认账号的风险但还有几项值得立刻确认# 确认系统版本和内核 uname -a cat /etc/os-release # 确认存储空间是否已经扩容到整张卡 df -h # 确认时区 timedatectl # 更新软件包索引 sudo apt updatedf -h这一条要特别看。正常情况下根分区应该已经扩展到接近整张卡的容量如果显示的可用空间只有一两个 GB说明扩容没做需要进配置工具手动触发一次。时区也很关键。如果你的脚本要按时间记录数据、要跑定时任务时区错了会导致所有时间戳偏移后面排查问题时会被误导得很惨。4.4 远程传文件和图形界面命令行够用之后下一步通常是我想把文件传上去或者我想看看桌面。文件传输最省事的办法是用 SFTP 协议很多文件管理器原生支持填上地址、用户名、密码就能像本地目录一样拖拽。命令行下用scp也行# 从本地上传到板子 scp ./data.csv usernode-a.local:/home/user/ # 从板子下载到本地 scp usernode-a.local:/home/user/log.txt ./如果要图形界面可以在配置工具里开启远程桌面服务然后用支持该协议的客户端连接。需要提醒的是远程桌面在低配型号上体验一般尤其是较老的型号桌面渲染会明显卡顿。如果只是偶尔看看够用如果打算长期当远程工作站那还是接显示器更实际。5. 系统调优换源、扩容、关掉用不上的东西5.1 存储扩容这件事最好一次做对前面提到过扩容。这里展开说一下原理烧录时写入的是固定大小的镜像分区表里记录的分区大小也是固定的所以第一次启动后根分区只占用了镜像那么大的空间剩下的容量是空闲的。系统在首次启动时会自动把分区扩到整张卡但如果中途断电或者卡有问题这一步可能没完成。手动触发的方式是进配置工具找扩展文件系统那一项确认执行然后重启。重启后用df -h再看一眼如果根分区容量还是很小那说明卡本身有问题或者分区表损坏了需要重新烧录。还有一个相关细节现代系统的分区布局和旧版不一样启动分区挂载在/boot/firmware/而不是/boot/。修改启动配置文件时如果路径用错改动不会生效而你可能会以为是配置没起作用。5.2 软件源为什么要换怎么换默认软件源在境外更新和安装时的下载速度可能非常慢装一个几十兆的包等十分钟体验很差。换成地理位置更近的镜像站点是标准操作。较新的系统版本换了配置格式源定义放在独立目录里格式也不是传统的单行写法。动手前先看一眼现状ls /etc/apt/sources.list.d/ cat /etc/apt/sources.list.d/*.sources改的时候把里面的地址主机部分替换成离你近的镜像站点即可路径结构保持一致。改完执行sudo apt update如果没有任何报错并且能正常拉取索引说明改对了。注意不要同时保留多个来源相同但地址不同的源容易出现版本冲突和依赖解析失败。改之前建议先备份原文件出问题直接还原。5.3 配置工具里那几个值得动的开关配置工具是新手最该熟悉的东西一个命令进去大部分常用设置都能找到sudo raspi-config我通常会动这几个接口开关串口、I2C、SPI、摄像头、远程登录按需开启。不开的话接上传感器也读不到数据这是新手最常见的硬件坏了误判。启动选项是否自动登录到桌面、是否等待网络再启动。做无人值守节点时这两项影响很大。性能选项GPU 内存分配、超频。默认值通常够用超频要配合散热否则得不偿失。本地化语言、时区、键盘布局。中文环境下还要额外装字体否则界面会出现方块。5.4 中文显示和输入如果要用图形界面中文显示需要额外处理。系统默认可能只带了极简字体中文会显示成方块。装一套完整字体就能解决sudo apt install fonts-noto-cjk输入法如果要用需要装输入法框架和中文引擎配置环境变量后重启会话。这块在低配型号上体验一般我的建议是能用命令行就用命令行中文输入的需求放在另一台机器上处理效率高得多。6. 让 GPIO 动起来一个温湿度节点和一条控制回路6.1 引脚编号的坑先讲清楚GPIO 相关的第一个坑永远是编号方式。同一根物理引脚在不同资料里可能有三四种叫法物理位置号、芯片的 GPIO 编号、某个库自己定义的编号。如果你照着教程接线、照着另一份教程写代码十有八九会对不上。我的做法是接线看物理位置图写代码用芯片编号并且在代码注释里把物理位置也标上。这样下次回头看代码时不会懵。较新的库默认就用芯片编号也就是那个常被叫做 BCM 编号的体系这一点要在代码里明确指定别依赖默认值。接线时的基本安全常识也要说一句GPIO 引脚是 3.3V 逻辑不是 5V。直接把 5V 信号灌进去会烧引脚而且这种损坏往往是永久的。传感器供电前务必确认它的工作电压需要电平转换的场合不要省那个转换模块。6.2 接一个 I2C 温湿度传感器I2C 是最适合新手的传感器接口两根信号线加电源地线能挂多个设备接线简单。以常见的温湿度气压传感器为例接线是电源接 3.3V地接地数据线接数据引脚时钟线接时钟引脚。先开接口再装工具然后扫描总线确认设备在不在sudo apt install i2c-tools sudo i2cdetect -y 1输出会是一个表格正常情况下你能看到某个地址位置显示成十六进制数字比如76或77。如果全是横杠说明设备没被识别优先查接线是否插反、供电是否有电、接口是否真的开启了。这一步能排掉八成的传感器坏了。读数据用 Python 库最方便。较新的系统对全局安装包有限制建议建虚拟环境并且带上系统包的可见性否则底层硬件访问库会找不到python3 -m venv --system-site-packages ~/sensor/venv source ~/sensor/venv/bin/activate pip install adafruit-blinka adafruit-circuitpython-bme280读取脚本大致是这样import time import board import adafruit_bme280 i2c board.I2C() sensor adafruit_bme280.Adafruit_BME280_I2C(i2c, address0x76) while True: print(f温度 {sensor.temperature:.2f} C f湿度 {sensor.relative_humidity:.1f} % f气压 {sensor.pressure:.1f} hPa) time.sleep(60)这里有个实际经验传感器读数和真实环境温度会有偏差尤其是传感器靠近板子本身的时候板子的发热会把读数抬高两三度。我一般会把传感器用排线引出去离板子至少十厘米或者加一个简单的通风外壳。这个细节在数据记录类项目里影响很大很多人以为是传感器精度问题其实是热干扰。6.3 点灯和按钮最朴素但最能验证链路在接传感器之前我建议先用一个 LED 和一个按钮把 GPIO 的基本读写跑通。这个练习看起来幼稚但它能验证接口开启、引脚编号、库能用、权限没问题这一整条链路。用高层封装库可以写得非常短from gpiozero import LED, Button from signal import pause led LED(17) button Button(27) button.when_pressed led.on button.when_released led.off pause()LED 记得串一个限流电阻几百欧姆就够直接接会拉大电流。按钮建议用内部上拉或者下拉电阻避免悬空导致读数乱跳。如果这段代码跑起来没反应排查顺序是先用命令行工具直接控制引脚确认硬件通再检查代码里的引脚编号体系最后看用户是否在 GPIO 访问组里。这个顺序是我踩了很多次之后固定下来的比乱试快得多。6.4 把脚本变成开机自启的服务脚本在终端里跑得好好的一关终端就停这在节点类项目里不可接受。用服务管理器托管是最稳妥的方式比往启动脚本里塞命令可靠得多因为它能处理崩溃重启、日志收集、启动顺序依赖。写一个服务定义文件放在系统服务目录下[Unit] DescriptionEnv Sensor Logger Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple Useryouruser WorkingDirectory/home/youruser/sensor ExecStart/home/youruser/sensor/venv/bin/python /home/youruser/sensor/main.py Restartalways RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target几个关键点ExecStart要用虚拟环境里的解释器绝对路径不要指望环境变量User不要留空用普通用户而不是管理员账户Restartalways配合RestartSec能让脚本崩溃后自动拉起来但间隔别设太短否则会在崩溃循环里疯狂写日志。启用并启动sudo systemctl daemon-reload sudo systemctl enable sensor-logger sudo systemctl start sensor-logger sudo systemctl status sensor-logger查看日志用journalctl -u sensor-logger -f这个命令我在调试阶段几乎一直挂着。7. 卡住时的排查链路无显示、连不上、随机重启7.1 上电完全没反应的定位顺序先看指示灯。正常上电后电源灯应该稳定常亮状态灯会有闪烁动作。如果电源灯很暗或者闪烁第一嫌疑是供电——换电源、换线、去掉所有外接设备再试。这一步能解决相当一部分板子坏了的误判。如果电源灯正常常亮状态灯完全不闪那大概率是存储卡没被识别。处理办法断电取出卡插到电脑上看能不能读出来用工具检查卡的分区和文件系统是否完好实在不确定就重烧一次。重烧能解决绝大多数软件层面的启动失败。还有一种情况是卡没问题但启动卡在某一步。这时候接上显示器看启动输出是最快的判断方式屏幕上会明确告诉你卡在哪。如果手边没有显示器也可以通过网络判断如果它能拿到 IP 但服务没起来说明系统起来了只是服务有问题如果完全找不到那还停留在更早的阶段。7.2 有电但屏幕没画面这个问题的原因比想象中多。较新的型号有两个视频输出口其中只有一个在启动早期有输出接错口就是黑屏。换另一个口试试这是最常见的答案。其次是线材和显示器兼容性。有些显示器对信号电平比较挑或者分辨率协商失败表现就是全程黑屏。换一根线、换一台显示器能快速排除。再其次是配置问题。启动配置文件里如果被改过分辨率、输出模式、hdmi_boost之类的参数可能导致输出异常。把配置恢复到接近默认值再试或者直接重烧。7.3 远程连不上的分层排查SSH 连不上是最常见的求助场景我的排查顺序是固定的从下往上逐层确认第一步确认机器真的在网络上。在路由器后台看设备列表有没有它的记录。没有记录说明网络层就没通问题在无线配置或者网卡。第二步确认地址没变。之前连得上、现在连不上最常见的原因就是地址变了。用主机名连一遍或者重新扫一次网段。第三步确认端口可达。用探测命令看目标端口是否开放nc -zv node-a.local 22如果端口不通但机器在线说明服务没起来。可能是没开启远程登录也可能是服务启动失败。这种情况基本只能接显示器或者用串口登录进去看状态。第四步确认认证没问题。密码错、密钥不匹配、用户不存在都会报拒绝。这类错误信息很明确仔细看提示就行别急着怀疑网络。第五步看是不是被安全策略拦了。短时间内多次失败登录可能触发防护机制把你自己的地址封了。这种情况等一会儿或者从另一台机器试就能确认。7.4 跑一会儿就重启的成因这类问题几乎都指向三个方向供电、散热、存储。供电的判断前面说过查欠压标志位。散热也说过循环看温度。存储的判断方法是看系统日志里有没有文件系统错误、I/O 错误。如果有大量读写错误那卡基本可以判定要换了。还有一种不太常见但确实存在的情况外接设备瞬时电流过大。接上大功率 USB 设备或者多个传感器时瞬时电流拉高会触发保护。解决办法是用带独立供电的扩展设备别让板子自己扛。8. 长期挂机的维护温度、日志、备份与卡寿命8.1 温度和频率的日常观察一个长期运行的节点我建议养成隔一阵看一眼温度的习惯。不用天天看但至少要有一个基线认知知道它在正常负载下大概多少度。这样某天风扇被灰堵了、外壳通风变差了你能从数字上立刻发现。# 当前温度 vcgencmd measure_temp # 当前频率 vcgencmd measure_clock arm # 欠压与降频历史 vcgencmd get_throttled三条一起看基本能判断出机器当前的健康状况。8.2 减少无谓写入延长卡寿命存储卡最怕的是持续的小块写。系统里有几个写入大户系统日志、临时文件、交换分区、各种服务的缓存。能做的优化有几项。第一如果内存够用把交换分区调小或者关掉减少交换带来的写入。第二日志级别调到只记录重要信息别把所有调试输出都落盘。第三给临时目录挂内存盘重启就清空写入不进卡。第四有些服务会频繁写状态文件如果不需要持久化关掉它的状态保存。这些优化都有代价关掉日志会让排查问题变难关掉交换会让内存吃紧时直接触发进程被杀。我的建议是按需做别一股脑全上。如果写入量真的很大最彻底的方案还是把系统迁到外接固态盘上从根本上解决问题。8.3 备份的正确做法备份这件事我的观点很明确能做的时候赶紧做别等到卡坏了才想。做法有两种。第一种是整盘镜像。把卡取下来插到电脑上用工具读成镜像文件保存。这个方式最完整恢复也最直接缺点是文件大、耗时长。做之前建议先清理缓存和临时文件能显著压缩体积。第二种是只备份数据。把重要配置和产出文件同步到另一台机器或者外部存储系统本身坏了就重烧。这个方式轻量但恢复时要重新装软件、改配置。我的实际做法是两者结合数据每天同步系统每做一次大的配置变更就做一次整盘镜像。这样既不用担心数据丢失又能在系统崩掉时快速回到已知可用的状态。8.4 更新节奏和升级的边界关于系统更新我的经验是不要天天更新也不要从不更新。天天更新的问题是某次上游包更新引入的不兼容可能让你的服务突然起不来而你没有时间排查。从不更新的问题是安全补丁缺失而且隔太久一次性升级跨越大版本出问题的概率更高。我一般会保持一个节奏常规的软件包更新隔一段时间做一次做之前先备份跨大版本的系统升级如果当前环境稳定、没有必须的新特性就先不升等确认新版本在你用到的功能上没有坑再说。升级前的检查清单很简单有没有未保存的数据、有没有做好的备份、有没有回滚方案。这三条都满足再动手出问题也不慌。最后一点个人体会带了这么多新手入门我发现真正卡住人的从来不是不会写代码而是不知道自己的问题属于哪一类。板子不亮可能是电源、可能是卡、可能是接线、可能是配置每一类的排查手法完全不同。所以上面我尽量把每个问题都按先查什么、再查什么的顺序写清楚而不是直接给答案。这套顺序是我自己踩了几十次坑之后固定下来的照着走效率最高。还有一个我觉得很值得分享的习惯每做一次配置变更就在一个笔记文件里记一行写了什么、为什么写、改的是哪个文件。三个月后系统出问题这一行记录能救命。我见过太多人改了一堆参数出问题后完全想不起来自己动过什么只能重烧重来。至于那块买回来吃灰的板子与其让它在抽屉里躺着不如从最小的目标开始——让它每小时记一次温度、让它每天备份一次文件、让它在你回家前把灯打开。能跑通一个完整的小闭环比看十篇教程有用得多。