只读树莓派 - 关机时避免 SD 卡损坏

  • 概述
  • 关注点
  • 解决方案
  • 在你开始之前
  • 启用只读 /boot
  • 使用“Lite”命令行操作系统
  • 对彼此而言
  • 恢复读/写访问
  • 你还没有完成


原文地址:
https://learn.adafruit.com/read-only-raspberry-pi

作者:菲利普 ·伯吉斯

概述

与大多数在完成后可以简单地关闭的微控制器项目不同,像 Raspberry Pi 这样的计算机需要一个有序的关闭程序……否则存储卡可能会损坏并且系统将不再启动。

在某些情况下,只需拔掉插头肯定会很方便,例如幻灯片或视频亭,或留在非技术用户手中的系统。幸运的是,最近的 Raspberry Pi OS 版本有一个配置选项,可以使系统更能抵抗意外断电。

关注点

Linux——或任何实质性的计算机操作系统、Windows 和 Mac 都是一样的——在幕后他们经常将临时数据写入磁盘(或带有 Raspberry Pi 的 SD 卡)。 这就是我们通常使用关闭命令的原因:每个文件都以已知的有效状态存放。但是如果电源意外断电,这些挥之不去的半文件会导致卡无法启动……可以尝试修补它,但通常没有办法,只能擦掉卡并重新安装所有东西。

解决方案

最近的 Rapsberry Pi OS 版本可以选择将 /boot 分区(内核映像和其他关键文件所在的位置)置于只读模式。如果安装在本系统上的软件只执行阅读和播放操作(例如 幻灯片亭、Fadecandy服务器、万圣节显示器),那么您只需在完成后拔下系统即可。对于数据库、Web 服务器或数据记录等读/写任务来说,它并不理想,但它有一席之地。

在你开始之前

  • 这适用于Raspberry Pi OS和类似的衍生产品(例如 RetroPie),但可能不适用于其他发行版。
  • 设置只读模式应该是部署项目之前的最后一步。获取系统上的所有代码和数据,根据需要自动启动软件,使用通常的启动和关闭方法对其进行正常测试。前期比较容易。一旦您对其操作有 100% 的信心,然后将系统配置为只读引导。
  • 首先备份SD 卡的内容。我们已经在几个版本的 Raspbian 上进行了测试,但可能发生了一些变化,或者被忽视了,并且可能会使 Pi 处于奇怪的中间状态。

启用只读 /boot

我们假设您已启动 Pi 并在网络上……如上所述,在执行此步骤之前,所有内容都已配置且功能齐全(并已备份)。我们还有其他指南涵盖了启动 Raspberry Pi 的基础知识。
使用桌面/GUI“完整”操作系统

您将在 Raspberry Pi 配置工具中找到此设置。从左上角的覆盆子菜单…

Pi→Preferences→Raspberry Pi 配置
转到“性能”选项卡,您将看到“覆盖文件系统”选项。单击“配置…”按钮。

选择“覆盖:启用”和“引导分区:只读”。

单击“确定”并等待系统运行。可能需要一分钟或更长时间才能完成。这个是正常的。

出现提示时重新启动。

使用“Lite”命令行操作系统

这些选项可以在raspi-config工具中找到,该工具必须以 root 身份运行:

sudo raspi-config


向下导航到“性能选项”,然后是“覆盖文件系统”。对启用和写保护问题都选择“是”。

系统工作可能需要一分钟或更长时间,这是正常的。选择“完成”按钮并在出现提示时重新启动。

对彼此而言

你完成了!现在 /boot 分区已安全锁定。但是,如果您需要访问那里的某些内容,例如 config.txt 文件或主要的系统更新,下面给出了临时启用写访问的说明。

对于每个新的操作系统版本,一些配置选项可能会移动到不同的菜单或位置是正常的。如果在显示的位置找不到它,请在其他顶级菜单选项下检查……即使移动,名称也可能保持相似。

恢复读/写访问

如果您需要临时启用读/写访问,例如在 中编辑棘手的配置设置/boot/config.txt,或者影响内核或设备树文件的主要系统更新,可以从命令行完成(如果使用带有 GUI 的“完整”Raspbian,打开终端窗口):

sudo mount -o remount,rw /boot

执行您的编辑或升级,然后重新启动系统(通过 Pi →使用 GUI 关闭,或sudo reboot从命令行)。它将回到只读状态。

如果您需要永久恢复读/写访问权限,您必须首先使用上述临时步骤,然后可以导航到相同的 GUI 或 raspi-config 设置,为 GUI 选项选择“Read-write”,或为 GUI 选项选择“No” raspi-config 写保护问题。然后重新启动,系统恢复正常,具有永久读/写访问权限。

如果您启用了对 /boot 的读/写访问权限,无论是暂时的还是永久的,请始终通过有序的关闭或重新启动来结束您的会话。

你还没有完成

广泛测试修改后的系统,以确保系统启动并且您的应用程序按预期运行。如果不是……您使用的软件是否依赖于 /boot 分区中的临时文件?也许可以调整。

现在制作 SD 卡的映像(使用dd 或 Apple Pi Baker或任何您喜欢的备份工具),如果它是关键应用程序,请至少刻录一个备用的 . 卡片还有其他可能变坏的方式……静态、断电、跌落和迷路……这种只读设置并不总能救你。SD卡现在很便宜!如果您将系统留给他人保管(比如说博物馆的售货亭)并且由于某种原因而失败,则备件会有所帮助,您可以要求他们更换卡,直到您可以去那里进行故障排除。我知道至少有一个 Burning Man 项目在活动的最初几分钟内变得毫无用处,因为他们唯一的一张牌掉了出来,在沙滩上丢失了。

优秀网页翻译:Adafruit - 只读树莓派 - 关机时避免 SD 卡损坏相关推荐

  1. 【树莓派】64G的SD卡无法使用NOOBS安装树莓派的问题

    [树莓派]64G的SD卡无法使用NOOBS安装树莓派的问题 问题描述 1.购买的闪迪64GB内存卡无法使用NOOBS安装 2.系统自带格式化工具无法支持将内存卡格式化为FAT32格式 原因分析 1.使 ...

  2. Ubuntu18.04烧录U-Boot时格式化SD卡的文件类型(RAW 格式)

    Ubuntu18.04烧录U-Boot时格式化SD卡的文件类型 前言 1.问题的提出 2.分析问题 3.用dd命令格式化SD卡 dd命令: 参数: 4.SD卡的烧录 5.再谈SD卡的分区 前言 本文只 ...

  3. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part 5

    高精度 10MHz GPS 驯服钟 GPSDO - Part 5 重大挫折! 回到绘图板 把事情分成两部分 GPSDO 的附加板 原型的初步结果 计数器/记录器版本 2 外壳 我犯了一个愚蠢的布局错误 ...

  4. 树莓派Raspberry Pi 16G SD卡刷系统时默认空间扩容

    这两天需要给树莓派中安装一个lamp环境,但是上安装的东西太多了,默认的系统空间已经被占完.但是SD卡本身是16GB的,如果将树莓派空间扩展到更大呢?只有扩展了才能解决我继续安装软件的需求.查了一下资 ...

  5. 树莓派3 Ubuntu系统 SD卡或U盘启动

    之前先用SD卡装过Ubuntu系统后,用着用着SD卡满了,就拿了个U盘来重装一遍,发现U盘按照SD卡那样的流程安装之后,树莓派配置成可以U盘启动,再修改刻录好的U盘里的两个文件就可以通过U盘启动了. ...

  6. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part 4

    高精度 10MHz GPS 驯服钟 GPSDO - Part 4 监控.测量和记录 我的额外设计目标 摆脱困境 监控 GPSDO 状态报告 测量 GPSDO 10MHz 输出的精度 树莓派串口注意事项 ...

  7. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part3

    高精度 10MHz GPS 驯服钟 GPSDO - Part 3 Lars 代码的新版本,V3.60. 寻找最佳 TC 设置 设置 ADC 线性化参数 揭开谜底 新的 MDEV 和频率图 GPSDO ...

  8. 优秀网页翻译:一个智能旋钮:DIY haptic input knob: BLDC motor + round LCD

    一个智能旋钮:DIY haptic input knob: BLDC motor + round LCD 智能旋钮 硬件 设计 智能旋钮视图 演示视频 3D CAD 建立一个你自己的? 基础PCB 屏 ...

  9. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part 1

    高精度 10MHz GPS 驯服钟 GPSDO - Part 1 第一个原型 设计PCB 一些设计和布局决策 电源 电力调配 控制器电路 振荡电路 修整 OCXO 输出 微调增益设置 OCXO 电路 ...

最新文章

  1. 不能定义声明dllimport_C#:多个声明的一个属性(DLLImport)
  2. JavaWeb(五)之JSTL标签库
  3. python中可以用中文作为变量-Python中用中文变量名、函数名,会影响性能吗?
  4. 【Hibernate步步为营】--关联映射之多对一
  5. 操作数组的流 ByteArrayInputStream 和 ByteArrayOutputStream的简单介绍
  6. [.net基础]访问修饰符
  7. @Transactional注解属性(1)
  8. openh264限制slice/nal分片大小导致的编码数据错误
  9. 第三方app实现微信登录功能
  10. MATLAB图像处理_YUV格式详解
  11. 【云原生Kubernetes系列第二篇】Kubernetes(k8s)核心组件(对的人兜兜转转最后还是会遇见)
  12. 实时渲染入门:静态光照和动态光照
  13. SQLSERVER tempdb 数据库异常增大原因查找
  14. 百度运维部农场,绿色畅想
  15. [毕业生的商业软件开发之路]积累与创新
  16. matlab中如何对一组复数频域信号进行快速傅里叶逆变换
  17. http://zaojiasys.jianshe99.com 建造师数据泄漏,可以查看全部所有人的信息!
  18. 最简单易学的手机打字方法
  19. 020 怎样才可以把py文件前面的小箭头去掉
  20. 在java中使用JDBC连接mysql数据库时的服务器时区值无法识别或表示多个时区的问题解决方案

热门文章

  1. 002-JVM-什么是垃圾
  2. 【校招产品经理/产品运营】面试辅导
  3. 线段树合并:从入门到放弃
  4. 物联网连接压力剧增,即将迎来新阶段
  5. ARM GIC(六)gicv3架构-LPI
  6. 微信小程序——地图定位点marker
  7. 【BUG:unable to connect redis 6379】
  8. H5 中div标签及其属性
  9. H5页面使用html2canvas实现div+图片生成为图片
  10. SVG图形绘制入门第一弹