防止SD卡损坏/创建只读根FS(overlayroot)

防止SD卡损坏/创建只读根FS(overlayroot)

我希望防止运行 Debian 的 OrangePI Zero 2 上的 SD 卡损坏。
我认为最好的方法是拥有一个只读文件系统,所以我尝试按照说明进行操作这里,但在以下步骤中失败了:

$sudo mount -o move /etc /mnt/etc/
mount: /mnt/etc/root-ro: bad option; moving a mount residing under a shared mount is unsupported.

我的目标是防止 SD 卡损坏。

  1. 有没有更好的方法来创建只读文件系统?
  2. 还有其他减少腐败的选择吗?例如fsck每次启动时自动运行?禁用日记功能有帮助吗?还要别的吗?

硬件:OrangePi Zero 2
操作系统:Debian(官方Orangepizero2_3.0.6_debian_bullseye_server_linux5.16.17
如果声音和 gpio 在 Ubuntu 上运行良好,我可以转移到该操作系统(不幸的是,声音和 gpio 在 Armbian 上似乎有问题)。

我是一个“简单”的程序员,不熟悉挂载/fs/覆盖 - 非常感谢任何帮助!

以下是各种坐骑的信息:

$ cat /proc/swaps
Filename    Type        Size    Used    Priority
/dev/zram0  partition   503864  0       5


$ cat /etc/fstab
UUID=5dd5b836-fb32-4678-908e-d23f7a028780 / ext4 defaults,noatime,commit=600,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0


$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            422M     0  422M   0% /dev
tmpfs            99M  836K   98M   1% /run
/dev/mmcblk1p1   30G  2.1G   27G   8% /
tmpfs           493M     0  493M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           493M     0  493M   0% /tmp
/dev/zram1       49M   18M   28M  39% /var/log
tmpfs            99M     0   99M   0% /run/user/0


$ blkid
/dev/mmcblk1p1: UUID="5dd5b836-fb32-4678-908e-d23f7a028780" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="e8ce0794-01"
/dev/zram0: UUID="0d318608-f97b-49cb-ad9a-2868d4158952" TYPE="swap"
/dev/zram1: LABEL="log2ram" UUID="7c3c126a-be5d-491c-89be-a59ce9d002a8" BLOCK_SIZE="4096" TYPE="ext4"

答案1

只读文件系统并不能防止您的 SD 卡死亡。如果不将根分区重新挂载为可写,则无法进行更新,这在某些情况下是一个很大的缺点。您可以做的是调查您的应用程序写入的位置并将其指向 tmpfs。您还可以扩大 tmpfs 分区。

不过,我认为您需要一个现成的解决方案,这就是迪特皮做。它是一个最小的操作系统,考虑到 SD 的使用寿命,默认情况下将日志写入 RAM。我的 RBPi 4 已经使用了两年,每周 7 天,每天 24 小时,到目前为止没有任何问题。

我认为登录RAM功能是由log2ram.您可以用它来将大部分写入请求从 SD 中取出。

答案2

我也是 Overlayroot 的新手,一直在寻找一种简单的方法来在 Orange pi Zero 2 上的我的宠物项目中进行设置。

我找到了一个很好的说明书版本仅适用于 ubuntu。对于 debian,还尝试使用overlayroot 包,但据我了解,需要在那里使用其他解决方案或解决方法。

仅针对基于 Ubuntu 的 Armbian 运行以下命令(橙色 pi 零 2 的官方 Ubuntu 也适用)

sudo apt update
apt-get remove unattended-upgrades
mv /usr/lib/apt/apt.systemd.daily /usr/lib/apt/apt.systemd.daily.DISABLED
apt-get install overlayroot
echo 'overlayroot="tmpfs"' > /etc/overlayroot.conf

使用overlayroot-chroot对系统进行编辑:

cd /media/root-ro
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
overlayroot-chroot

检查并最小化覆盖文件使用的 RAM 空间

df -h /media/root-rw
rm -rf /media/root-rw/overlay/var/

相关内容