树莓派直接断电可能会导致SD分区损坏,从而导致无法正常开机,如果修复失败就只能重新刷系统,但愿你之前对系统做了备份…

SD卡本身不适合长时间读写操作,正常情况下到了一定时间都可能会发生数据读写错误。

一个避免上述问题的方法是把系统设置为只读系统,这样就不会在突然断电的情况下导致系统出现错误。

参考链接:Protect your Raspberry PI SD card, use Read-Only filesystem

参考链接:How to make your Raspberry Pi file system read-only (Raspbian Stretch)

# 更新软件包并重启
sudo apt update; sudo apt upgrade
sudo apt reboot# 删除不需要的软件
sudo apt remove --purge wolfram-engine triggerhappy anacron logrotate dphys-swapfile xserver-common lightdm
sudo apt autoremove --purge# 关闭服务
sudo systemctl disable x11-common
sudo systemctl disable bootlogs
sudo systemctl disable console-setup

更换日志管理

sudo apt install busybox-syslogd
sudo dpkg --purge rsyslog

取消swap分区,并设置为read-only

sudo vim /boot/cmdline.txt# 增加三个单词
# console=serial0,115200 console=tty1 root=PARTUUID=393effb4-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait fastboot noswap ro
fastboot noswap ro

将一些系统文件移到临时文件系统

sudo rm -rf /var/lib/dhcp /var/lib/dhcpcd5 /var/run /var/spool /var/lock /etc/resolv.conf
sudo ln -s /tmp /var/lib/dhcp
sudo ln -s /tmp /var/lib/dhcpcd5
sudo ln -s /tmp /var/run
sudo ln -s /tmp /var/spool
sudo ln -s /tmp /var/locksudo touch /tmp/dhcpcd.resolv.conf
sudo ln -s /tmp/dhcpcd.resolv.conf /etc/resolv.conf

修改文件

sudo vim /etc/systemd/system/dhcpcd5.service# PIDFile=/var/run/dhcpcd.pid
PIDFile=/var/run/dhcpcd.pid

更改系统随机种子

sudo rm /var/lib/systemd/random-seed
sudo ln -s /tmp/random-seed /var/lib/systemd/random-seedsudo vim /lib/systemd/system/systemd-random-seed.service[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=/bin/echo "" >/tmp/random-seed # 新增
ExecStart=/lib/systemd/systemd-random-seed load
ExecStop=/lib/systemd/systemd-random-seed savesudo systemctl daemon-reload

修改文件系统为read-only

sudo vim /etc/fstabtmpfs           /tmp            tmpfs   nosuid,nodev         0       0
tmpfs           /var/log        tmpfs   nosuid,nodev         0       0
tmpfs           /var/tmp        tmpfs   nosuid,nodev         0       0

切换RO模式和RW模式

sudo vim /etc/bash.bashrcset_bash_prompt() {fs_mode=$(mount | sed -n -e "s/^\/dev\/.* on \/ .*(\(r[w|o]\).*/\1/p")PS1='\[\033[01;32m\]\u@\h${fs_mode:+($fs_mode)}\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '}alias ro='sudo mount -o remount,ro / ; sudo mount -o remount,ro /boot'alias rw='sudo mount -o remount,rw / ; sudo mount -o remount,rw /boot'PROMPT_COMMAND=set_bash_prompt
sudo vim /etc/bash.bash_logoutmount -o remount,ro /
mount -o remount,ro /boot

重启

sudo reboot

如果出现这样的错误,可能是/tmp的权限问题。

sudo /etc/profile.d/chmod_tmp.sh# 添加这一行
sudo chmod 777 /tmp

树莓派 - 设置只读文件系统,避免分区错误相关推荐

  1. 嵌入式linux只读保护,如何使用squashfs只读文件系统制作Linux系统文件

    在使用嵌入式Linux 系统的时,会出现由于设备意外断电引起文件系统损坏而最终使该设备无法启动的现象.为了应对这种情况,通常会从硬件设计如采用备用电源,无论是锂电池还是超级电容等,或者从系统软件设上加 ...

  2. linux设置分区读写属性,嵌入式Linux ubi文件系统制做、分区设置、只读文件系统,uboot启动参数root...

    当前平台, 基于君正的X10000平台的嵌入式Linux 系统linux 0  目的ubuntu 我要设置根文件系统为可读写, 设置data分区上的文件系统为只读学习 1 设置各文件系统的读写属性sp ...

  3. Linux修改权限的弊端,linux root用户修改权限说是只读文件系统,怎么办?

    因为当来前用户对那个文件没有相应源的权2113限,你可以在那个目录执5261行命4102令 ls -l查看当前文件以1653及相应的所有者和对应的权限,drwxrwxrwx应该是这样的,每一个字母都有 ...

  4. 解决ntfs格式的移动硬盘mount到Linux下时变成只读文件系统的问题

    环境介绍 主机: XP 虚拟机:VirtualBox+Debian6 遇到的问题 我有一块西部数据的移动硬盘,虚拟机中有一些资料需要拷贝到移动硬盘中,然后我将移动硬盘插上后,执行如下设置,将移动硬盘分 ...

  5. 制作linux只读文件系统,一种Squashfs只读根文件系统的远程升级方法及系统的制作方法...

    一种Squashfs只读根文件系统的远程升级方法及系统的制作方法 [技术领域] [0001]本发明涉及嵌入式Linux操作系统的根文件系统,具体是涉及一种Squashfs (南瓜文件系统)只读根文件系 ...

  6. Linux只读文件系统

    By Toradex 胡珊逢 1.     简介 文件系统对于嵌入式系统,正如记忆对于大脑,嵌入式系统失去了文件系统,这往往是严重的问题,轻则导致应用无法启动,数据丢失,严重的情况可能是整个系统启动失 ...

  7. Ubuntu系统下U盘变成只读文件系统的处理办法

    之前把U盘借出了,还回来之后我再想用,发现U盘里的文件只能读取或者复制出去,但是不能修改删除,也不能添加新文件进来,显示该U盘是只读文件系统. 用了以下方法来解决这个问题: 在终端执行以下命令,作用是 ...

  8. 【ubuntu】U盘权限不足,只读文件系统

    网上有很多,出现次数比较多的是这一种说法(但是不适用我的情况): 转自:http://blog.csdn.net/slj_win/article/details/50349976 在Windows下, ...

  9. 【Android 逆向】修改 Android 系统文件 ( ro 只读文件系统 | 系统文件格式 | rootfs | tmpfs | devpts | sysfs |proc | /system )

    文章目录 一.只读文件系统 二.系统文件格式 一.只读文件系统 在 adb shell 命令行中 , 执行 mount 命令 , 会展示 Android 系统中所有的存储分区的权限 ; 在分区后面的括 ...

最新文章

  1. 打工人,今年双十一你刷啥?
  2. java comparable接口作用_Java Comparable 接口
  3. Php数组面包屑导航,php可应用于面包屑导航的迭代寻找家谱树实现方法
  4. SVN Cannot merge into a working copy that has local modifications
  5. CSS中link与import差别
  6. VMware 11安装Mac OS X 10.10
  7. ethtool 原理介绍和解决网卡丢包排查思路(附ethtool源码下载)
  8. 关于云主机拷贝复制资源异常的处理办法
  9. STL中常用容器的数据结构与底层实现
  10. 利用SQL语句创建数据库
  11. C11 标准下的 C 语言编程
  12. idea:java注释模板配置
  13. 见缝插针的人_“见缝插针”的创意人生
  14. Android 一款十分简洁、优雅的日记APP
  15. 解决安装软件时出现“更新错误”或“无法安装”的问题
  16. 《15个提高Google搜索的技巧》
  17. 鸿蒙os正式版推送时间,鸿蒙OS正式版推送时间确定,游戏性能更强,流畅度稳定性均提升...
  18. 计算机房通气换气次数,地下制冷机房,水泵房,配电房的排风量按多少换气次数计算...
  19. STM32 GPIOx_CRL/GPIOx_CRH 寄存器
  20. NEUQ—ACM实验班2.4小测试反思总结

热门文章

  1. [leetcode]203. Remove Linked List Elements链表中删除节点
  2. [c#]Dll自定义目录
  3. java程序发布成exe等
  4. BZOJ2005: [Noi2010]能量采集 莫比乌斯反演的另一种方法——nlogn筛
  5. 关于HTML5中的video和audio元素
  6. [网络安全自学篇] 三十三.文件上传之绕狗一句话原理和绕过安全狗(六)
  7. 【数据结构与算法】之深入解析“最长连续序列”的求解思路与算法示例
  8. Python之通过for循环比较Python与Ruby编程思想的差别
  9. 深度学习——02、深度学习入门 15-18
  10. 大数据WEB阶段 (六)MySql详解(一)