>Info zum Stichwort Unix | >diskutieren | >Permalink 
Bettina Beispiel schrieb am 15.2. 2006 um 16:20:14 Uhr über

Unix

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 geborenLä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:

* t+60: Alles läuft noch; David Gray singt »This years love« -- wie passend.
* t+120: /usr/share/texmf muss dran glauben.
* t+180: /usr/src/linux verabschiedet sich -- sorry, Linus.
* Nach fast vier Minuten ist der Spuk vorbei; David Gray trällert »Sail away with me, honey«, und Linux läuft immer noch.

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)


   User-Bewertung: +1
Versuche nicht, auf den oben stehenden Text zu antworten. Niemand kann wissen, worauf Du Dich beziehst. Schreibe lieber einen eigenständigen Text zum Thema »Unix«!

Dein Name:
Deine Assoziationen zu »Unix«:
Hier nichts eingeben, sonst wird der Text nicht gespeichert:
Hier das stehen lassen, sonst wird der Text nicht gespeichert:
 Konfiguration | Web-Blaster | Statistik | »Unix« | Hilfe | Startseite 
0.0109 (0.0052, 0.0044) sek. –– 822296945