Neue Antwort (22.03.2015)
( Anmerkung: . Die Antwort ist einfacher als zuvor, jedoch nicht sicherer Meine erste Antwort stärker ist , weil Sie Dateien behalten können schreibgeschützt durch fs Mount - Optionen vor . Berechtigungs - Flags So zwingt ein Datei ohne Erlaubnis zu schreiben , schreiben wird nicht funktionieren überhaupt.)
Ja, unter Debian gibt es ein Paket: fsprotect ( Homepage ).
Es verwendet aufs(standardmäßig, könnte aber ein anderes unionfsTool verwenden), um Änderungen an der Live-Sitzung zuzulassen, jedoch standardmäßig im RAM, sodass beim Neustart alles vergessen wird.
Sie können sie einfach installieren, indem Sie Folgendes ausführen:
apt-get install fsprotect
Einmal erledigt, aus dem Online-Dokument:
Danach:
- Bearbeiten Sie
/boot/grub/menu.lstoder /etc/default/grub2oder /etc/lilo.confund fügen Sie " fsprotect=1G" den Kernel-Parametern hinzu.
- Ändern Sie 1G nach Bedarf.
- Änderungen übernehmen (dh ausführen
update-grub)
- Bearbeiten
/etc/default/fsprotectSie, wenn Sie andere Dateisysteme als schützen möchten /.
- neustarten
Möglicherweise möchten Sie auch den Bootloader von Grub mit einem Kennwort schützen oder Änderungen daran verbieten.
Von dort, wenn eine Datei gegen Änderungen geschützt ist, zum Beispiel durch
chmod ugo-w myfile
Wenn Sie als Beispiel verwenden vi myfileund versuchen, mit dem Befehl darauf zu schreiben :w!, funktioniert dies und Ihr myfilewurde geändert. Sie können einen Neustart durchführen, um die nicht geänderten Daten abzurufen myfile.
Das ist mit meiner folgenden ersten Lösung nicht einmal möglich:
Alte (erste) Antwort:
Ja, es ist eine starke Lösung, aber leistungsstark!
R / O nutzbar machen
Sie haben einige Verzeichnisse in montieren rw , wie /var, /etcund vielleicht /home. Dies könnte mit aufs oder unionfs geschehen . Ich mag das anders , mit /dev/shmund mount --bind:
cp -a /var /dev/shm/
mount --bind /dev/shm/var /var
Sie könnten vorher alle Verzeichnisse, die sich im normalen Betrieb nicht ändern müssen, in ein verschieben static-var, als Symlinks in / var anzulegen:
mkdir /static-var
mkdir /static-var/cache
mkdir /static-var/lib
mv /var/lib/dpkg /static-var/lib/dpkg
ln -s /static-var/lib/dpkg /var/lib/dpkg
mv /var/cache/apt /static-var/cache/apt
ln -s /static-var/cache/apt /var/cache/apt
... # an so on
Wenn Sie in ro erneut einhängen, nimmt das Kopieren /varin /dev/shmnicht zu viel Platz /static-varin Anspruch, da die meisten Dateien in diesen Ordner verschoben werden und nur Symlinks in den RAM- Speicher kopiert werden sollen.
Der bessere Weg, dies zu erledigen, besteht darin, einen vollständigen Aus- und Wiedereinschaltvorgang durchzuführen, einen Tag voller Arbeit, und einen Befehl auszuführen, der wie folgt lautet:
find / -type f -o -type f -mtime -1
Sie sehen also, welche Dateien sich auf der Lese- / Schreibpartition befinden müssen.
Protokollierung
Da auf diesem Host kein beschreibbarer statischer Speicher vorhanden ist, müssen Sie zum Speichern des Verlaufs und anderer Protokolle einen Remote- syslogServer konfigurieren .
echo >/etc/syslog.conf '*.* @mySyslogServer.localdomain'
Wenn Ihr System aus irgendeinem Grund ausfällt, wird auf diese Weise alles vorher protokolliert.
Upgrade durchführen
Wenn Sie mount --bindein solches Upgrade ausführen, während das System verwendet wird (ohne dass es ausgeführt werden muss init 1, um die Ausfallzeit zu verringern), ist es einfacher, ein sauberes Stammverzeichnis neu zu erstellen , das das Upgrade ausführen kann :
Nach dem erneuten Einhängen von '/' im Lese- / Schreibmodus :
mount -o remount,rw /
for mpnt in /{,proc,sys,dev{,/pts}};do
mount --bind $mnpt /$mnt$mpnt;
done
chroot /mnt
apt-get update && apt-get dist-upgrade
exit
umount /mnt/{dev{/pts,},proc,sys,}
sync
mount -o remount,ro /
Und nun:
shutdown -r now