{"id":18073268,"url":"https://github.com/quantumlibet/immutablefs","last_synced_at":"2026-04-30T01:31:11.375Z","repository":{"id":259711592,"uuid":"879257004","full_name":"QuantumLibet/immutablefs","owner":"QuantumLibet","description":"make the root filesystem immutable on a debian/armbian/raspbian installation","archived":false,"fork":false,"pushed_at":"2024-11-02T23:12:11.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-03T21:38:43.878Z","etag":null,"topics":["armbian","debian","filesystem","immutable","pi-os","raspberry"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QuantumLibet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-27T12:38:40.000Z","updated_at":"2025-03-24T13:04:29.000Z","dependencies_parsed_at":"2024-10-28T08:10:01.746Z","dependency_job_id":null,"html_url":"https://github.com/QuantumLibet/immutablefs","commit_stats":null,"previous_names":["quantumlibet/immutablefs"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuantumLibet%2Fimmutablefs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuantumLibet%2Fimmutablefs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuantumLibet%2Fimmutablefs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QuantumLibet%2Fimmutablefs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QuantumLibet","download_url":"https://codeload.github.com/QuantumLibet/immutablefs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378141,"owners_count":20929296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["armbian","debian","filesystem","immutable","pi-os","raspberry"],"created_at":"2024-10-31T10:05:45.837Z","updated_at":"2026-04-30T01:31:11.331Z","avatar_url":"https://github.com/QuantumLibet.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ImmutableFS for Raspberry Pi\n\n\u003c/br\u003e\n\nThis script installs (if necessary) and then enables/disables an union filesystem based on the `overlayroot` OverlayFS implementation.\nThat's a mouthful for: It makes the current root filesystem read-only and redirects all writes to the memory.\n\nThe idea is taken from `raspi-config`.\nIf you have a Raspberry Pi, `sudo raspi-config` offers the same and more, via a GUI.\n\n\u003c/br\u003e\n\n### Usage:\n\n    /path/to/immutablefs.sh [ enable | disable | info]\n\nIt requires `sudo` (as in: `sudo` must be available and the user calling the script must have permissions to use `sudo`).\n\n\n\u003c/br\u003e\n\n### Motivation:\n\nThe motivation for this was simple: I wanted to freeze an installation, experiment on/with it, and unfreeze it. A poor man's time machine of sorts.\n\nTo do so is simple: Redirect writes to the filesystem to the machine's memory instead. Done.\nThis basically makes the filesystem read-only. To reset the machine to the original state, just reboot, since that looses all contents of the memory.\n\nThis has turned out to be useful in different places, e.g. with my (smol) fleet of Raspberry Pi's. There I freeze machines, once they have the desired state.\nA poor man's immutable operating system.\nTo update the machine, I'll unfreeze it (which requires a reboot), update it, and freeze it again (which requirest yet another reboot). Simple, really.\n\n\n\u003c/br\u003e\n\n### Implementation:\n\nThis uses the (debian) [`overlayroot`](https://packages.debian.org/bookworm/overlayroot) package, which is part of the (debian) [`cloud-initramfs-tools`](https://packages.debian.org/source/bookworm/cloud-initramfs-tools) that have been upstreamed to debian from the Canonical `overlayroot` package, part of the bigger (Canonical) [`cloud-initramfs-tools`](https://launchpad.net/cloud-initramfs-tools) package.\n\n\u003c/br\u003e\n\n### Sources:\n\n[OverlayFS on The Linux Kernel](https://docs.kernel.org/filesystems/overlayfs.html)\n\n[OverlayFS on the ArchLinux man page](https://wiki.archlinux.org/title/Overlay_filesystem)\n\n[OverlayFS on Wikpedia](https://en.wikipedia.org/wiki/OverlayFS)\n\n[Protecting the Root Filesystem on Ubuntu](https://spin.atomicobject.com/protecting-ubuntu-root-filesystem/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantumlibet%2Fimmutablefs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquantumlibet%2Fimmutablefs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquantumlibet%2Fimmutablefs/lists"}