Skip to content

Research the use of a Read-Only-Filesystem #51

@vollstock

Description

@vollstock

This is an AI-generated how-to (in German):

1. Read-Only-Root-Dateisystem einrichten

A. Fstab anpassen

Öffne die /etc/fstab und ändere die Mount-Optionen für die Root-Partition:

sudo nano /etc/fstab

Ersetze die Zeile für / (z.B. /dev/sda1) durch:

/dev/sda1  /  ext4  ro,errors=remount-ro  0  1
  • ro: Mountet das Dateisystem nur lesbar.
  • errors=remount-ro: Falls Fehler auftreten, wird es erneut als Read-Only gemountet.

B. Kernel-Parameter anpassen

Bearbeite die GRUB-Konfiguration, um das System standardmäßig als Read-Only zu booten:

sudo nano /etc/default/grub

Ändere die Zeile GRUB_CMDLINE_LINUX zu:

GRUB_CMDLINE_LINUX="ro"

Aktualisiere GRUB:

sudo update-grub

C. System neu starten

sudo reboot

Nach dem Neustart ist das Root-Dateisystem schreibgeschützt.

2. Schreibbares Verzeichnis /assets einrichten

Um /assets schreibbar zu machen, gibt es zwei Ansätze:

A. Separate Partition für /assets

  1. Erstelle eine neue Partition (z.B. /dev/sda2) und formatiere sie:
    sudo mkfs.ext4 /dev/sda2
  2. Mounten in /etc/fstab:
    /dev/sda2  /assets  ext4  defaults  0  2
  3. Verzeichnis erstellen und mounten:
    sudo mkdir /assets
    sudo mount /assets

B. OverlayFS (falls keine separate Partition möglich)

OverlayFS kombiniert ein Read-Only- und ein Read-Write-Dateisystem:

sudo mkdir /rw /ro /assets
sudo mount -t tmpfs tmpfs /rw
sudo mount --bind / /ro
sudo mount -t overlay overlay -o lowerdir=/ro,upperdir=/rw,workdir=/rw/work /assets

Hinweis: Diese Lösung ist temporär und geht nach einem Neustart verloren. Für permanente Lösungen ist eine separate Partition besser.

3. Temporär in Read-Write umschalten (für Updates)

A. Root-Dateisystem remounten

sudo mount -o remount,rw /

Jetzt können Updates installiert werden:

sudo apt update && sudo apt upgrade -y

B. Nach Updates wieder Read-Only setzen

sudo mount -o remount,ro /

4. Automatisierung für Updates (optional)

Um Updates zu vereinfachen, kannst du ein Skript erstellen (z.B. /usr/local/bin/update-system):

#!/bin/bash
mount -o remount,rw /
apt update && apt upgrade -y
mount -o remount,ro /

Skript ausführbar machen:

sudo chmod +x /usr/local/bin/update-system

Wichtige Hinweise

  • Logs: Falls Logs in /var/log geschrieben werden müssen, kannst du /var/log auf eine RAM-Disk umleiten oder eine separate Partition nutzen.
  • Dienste: Manche Dienste (z.B. MySQL, Docker) benötigen Schreibrechte. Diese müssen entsprechend konfiguriert oder auf /assets umgeleitet werden.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions