logoOL.gif
user_gelb_schwarz_or.gif
logoUL.gif
logoUR.gif claim.gif
LinuxUser LinuxCommunity EasyLinux Linux-Magazin International
      Anzeige
TFT Monitor bei Mercateo kaufen.
Neues Netbook? Ein Preisvergleich lohnt sich.
Bei uns finden sie Notebooks, PDAs und Drucker mit Testberichten und Tipps.
Diamant Buchhaltungssoftware – transparent und detailliert auch für die Konzernbuchhaltung.
Günstige Shareware Programme als direkte Downloads im Software Portal.
Bis zu 70% sparen durch Preisvergleich.
      Anzeige

Erschienen in LinuxUser 03/2003   »   Ausgabe bestellen

Logout

The Final Shutdown: rm -rf /

von Lars Packschies

t=0: Vier Daumen drücken gleichzeitig die [Return]-Taste. Der Befehl lautet rm -rfv / -- als Schnapsidee geboren ("Läuft rm-rf / eigentlich durch?") stand schnell fest, dass ein altes, nur noch archäologisch interessantes System dran glauben sollte.

t+1: Schnelles Ende in einer Endlosschleife:

removing all entries of directory //boot
removing directory itself: //boot

In schneller Abfolge fliegen uns diese Zeilen um die Ohren. Dass rm -rf / alles löschen soll, hat man oft und überall gelesen. Reines Mysterium, denn gemountete Partitionen lassen sich auf diese Weise nicht entfernen. Spätestens beim ersten Mountpoint ist Schluss. Auf unserem Delinquenten ist die Lage recht einfach: Nur /boot hält uns auf. Ein einfaches umount /boot entfernt das letzte Hindernis. Ab jetzt geht alles ganz schnell:

Die Festplatte ist leer, doch wir haben kein df mehr, um es zu prüfen. Ein ls scheitert natürlich ebenso. Daher weichen wir auf echo * .* aus. Die einzigen Überlebenden sind /dev, /proc und die zuvor gestarteten Prozesse. Irgendwann wird das System schon merken, dass es im dritten Stock keinen Boden mehr unter den Füßen hat. Man hat schon Linux-Installationen mit 2GB gesehen, bei denen weniger funktionierte.

Eine root-Shell und damit die Bash Builtins bleiben uns. /proc/meminfo wäre interessant, doch cat hat uns verlassen. Mit den Bordmitteln der Shell lässt sich jedoch Abhilfe schaffen:

function cat() { while read a; do echo "$a"; done < $1; }

Die Funktion cat ersetzt so weitgehend das fehlende Programm: Zeilenweise schaufelt uns die Schleife mittels der Variable a den Inhalt der übergebenen Datei auf den Bildschirm. Der Aufruf cat /proc/meminfo liefert nun die gewünschte Information.

Was läuft denn noch?

David Gray ist bei "Say hello, wave goodbye". Zeit, dem in den letzten Zügen liegenden System den Rest zu geben. Wir wollen alle verbleibenden Prozesse löschen. Die zunächst einleuchtend erscheinende Idee, alle Prozess-IDs von 1 bis 65535 in einer while-Schleife zu killen, nimmt uns die root-Shell bei PID 911. Tastatur weg, Maus weg, X nutzt nix. Von außen ist der Rechner immer noch mit ping zu erreichen -- eth0 verlässt das sinkende Schiff mit dem Reset-Knopf zuletzt.

Totgesagte leben länger: Zwar ist der Kernel gelöscht, doch liegen seine Datentrümmer immer noch an der von LILO vermuteten Stelle. Der Kernel bootet, doch der Versuch, die Mutter aller Prozesse (/sbin/init) zu starten, scheitert:

Kernel panic: No init found.
Try passing init= option to kernel.

(hej)

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.




Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2010 Linux New Media AG

[Linux-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Ubuntu User] [Linux Technical Review] [Linux Magazine] [Linux Pro Magazine] [Ubuntu User]
[EasyLinux Poland] [Linux Magazine Poland] [Linux Magazine Brasil] [EasyLinux Brasil] [Linux Magazine Spain]