Raspberry Pi Overlay Root Filesystem 教程
项目介绍
Raspberry Pi Overlay Root Filesystem 是一个开源项目,旨在保护 Raspberry Pi 的根文件系统免受写入操作,同时允许所有应用程序正常运行并写入临时覆盖文件系统。该项目通过创建一个 initramfs 镜像,包含覆盖模块和一个引导脚本来挂载根分区,实现根文件系统的只读保护。
项目快速启动
1. 克隆项目仓库
git clone https://github.com/nils-werner/raspi-overlayroot.git
cd raspi-overlayroot
2. 创建 initramfs 镜像
将覆盖模块添加到 initramfs 配置中:
echo overlay >> /etc/initramfs-tools/modules
3. 添加引导脚本
将以下引导脚本放置在 /etc/initramfs-tools/scripts/overlay
目录下:
# Local filesystem mounting -*- shell-script -*-
#
# This script overrides local_mount_root() in /scripts/local
# and mounts root as a read-only filesystem with a temporary (rw)
# overlay filesystem
# /scripts/local local_mount_root() [ local_top
/bin/sh
sudo -v
if grep -qs 'overlayroot' /proc/cmdline; then
echo "Overlayroot not enabled. Aborting."
exit 1
fi
sudo mount -o remount,rw /overlay/lower
sudo mount --bind /boot /overlay/lower/boot
sudo mount -o remount,rw /overlay/lower/boot
sudo arch-chroot /overlay/lower
sudo umount /overlay/lower/boot
echo "Leaving read-write filesystems. The filesystems remain mounted read-write until next reboot."
4. 生成 initramfs 镜像并重启
sudo mkinitcpio -P
sudo reboot
5. 启用 overlayroot
编辑 /boot/cmdline.txt
文件,在末尾添加 overlayroot
:
root=/dev/mmcblk0p2 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop overlayroot
重启后,系统将提示任何对文件系统的更改在重启后将不会持久化。
应用案例和最佳实践
应用案例
- 教育环境:在教育环境中,使用覆盖根文件系统可以保护系统免受学生误操作的影响,确保每次重启后系统状态一致。
- 开发测试:开发人员可以使用覆盖根文件系统来测试应用程序,而不会影响实际的系统文件。
最佳实践
- 定期备份:尽管覆盖根文件系统保护了系统文件,但仍建议定期备份重要数据。
- 监控系统状态:使用系统监控工具来跟踪覆盖文件系统的使用情况,确保系统稳定运行。
典型生态项目
- Raspbian:Raspberry Pi 的官方操作系统,支持覆盖根文件系统功能。
- raspi-config:Raspberry Pi 的配置工具,可以方便地启用和配置覆盖根文件系统。
通过以上步骤和最佳实践,您可以有效地使用 Raspberry Pi Overlay Root Filesystem 项目,保护您的 Raspberry Pi 系统免受写入操作的影响。