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 unionfs
Tool 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.lst
oder /etc/default/grub2
oder /etc/lilo.conf
und fügen Sie " fsprotect=1G
" den Kernel-Parametern hinzu.
- Ändern Sie 1G nach Bedarf.
- Änderungen übernehmen (dh ausführen
update-grub
)
- Bearbeiten
/etc/default/fsprotect
Sie, 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 myfile
und versuchen, mit dem Befehl darauf zu schreiben :w!
, funktioniert dies und Ihr myfile
wurde 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
, /etc
und vielleicht /home
. Dies könnte mit aufs oder unionfs geschehen . Ich mag das anders , mit /dev/shm
und 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 /var
in /dev/shm
nicht zu viel Platz /static-var
in 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- syslog
Server 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 --bind
ein 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