Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:allgemein:system:prelink

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
linux:allgemein:system:prelink [07.08.2023 17:04]
marc gelöscht
— (aktuell)
Zeile 1: Zeile 1:
-====== Prelink ====== 
-Viele Programme benötigen Bibliotheken. Dabei gibt es grundsätzlich zwei Möglichkeiten diese in ein Programm zu integrieren. Entweder einmalig - über einen sog. Linker (oder Binder) - wenn das Programm kompiliert wird (statische Verlinkung) oder aber bei jedem Laden des Programms erneut (dynamische Verlinkung). Bei der letzteren Methode werden die Bibliotheken erst bei Bedarf in den Arbeitsspeicher geladen und durch den sogenannten Lader mit dem ausführbaren Programm verbunden. Dadurch muss eine Bibliothek, die von mehreren Programmen genutzt wird, nur einmal im Speicher gehalten werden. Allerdings hat diese Variante den Nachteil, dass bei jedem Programmstart der Lader die ggf. benötigten Bibliotheken suchen und anschließend laden muss, wodurch erhöhte Ladezeiten entstehen. Diese sind umso höher, je mehr Bibliotheken geladen werden müssen. Oft werden jedoch die Bibliotheken nicht sehr häufig gewechselt. Deshalb sind die ablaufenden Operationen meist dieselben. Prelink nutzt dies insofern aus, als dass es das Linken im Voraus ausführt und in der Programmdatei abspeichert. Somit kann man (fast) jedes Programm beschleunigen.\\ 
-\\ 
-Besonders sehr "große" Anwendungen, welche in C++ geschrieben sind sollen vom prelink stark profitieren. Dazu zähl auch die komplette KDE-Umgebung, da man viel Startzeit spart, weil kdeinit nicht die Bibliotheken laden muss. 
- 
-===== Risiken ===== 
- 
-Die Nutzung von prelink birgt zwei Risiken:\\ 
- 
-  * verstümmelte Programme 
-Wenn man nur wenig verfügbaren Festplattenplatz hat, kann Prelink sämtliche Programme verstümmeln. Wie viel freien Speicherplatz man haben sollte kann nicht pauschal gesagt werden, da es vom System bzw. von den installierten Programmen abhängt. Es empfiehlt sich daher während des ersten Laufs von  prelink den Speicherplatz im Auge zu behalten. 
- 
-  * Angriffe durch manipulierte Bibliotheken 
-Prinzipiell ist es möglich, dass bei Verwendung von prelink sogenannte Return_into_libc-Attacken möglich sind. Dazu muss der Angreifer einen lokalen Zugang zum System haben. Weitere Details hierzu findet man im englischen Wikipedia-Artikel zu prelink. 
- 
-===== Prelink ausführen ===== 
-==== Generell ==== 
- 
-Wenn man möchte, dass manche Programme nicht ge-prelinkt werden, wie z.B. wine, muss man in der Datei /etc/prelink.conf mit einem vorangestellten -b blacklisten.  Verzeichnisse, die ge-prelink werden sollten steht ein -l voran, wobei (symbolischen) Links nur innerhalb des Dateisystem gefolgt wird. Mit -h folgt prelink allen Links, auch über die Grenzen des Dateisystems. Nach der Installation enthält die Datei bereits eine sinnvolle Vorbelegung, d.h. normalerweise muss man hier nichts von Hand editieren. 
- 
-Wenn man dies getan hat, sollte man Prelink in /etc/default/prelink 
-  PRELINKING=unknown 
-zu 
-  PRELINKING=yes 
-abändern. Dann wird das System automatisch einmal je Tag von Cron prelinkt. 
- 
-==== Manuell ==== 
-prelink kann mit \\ 
-''# prelink -avmR'' \\ manuell ausgeführt werden. 
- 
-==== Automatisch nach Paketinstallation ==== 
-Da der Cronjob für Prelink - zumindest mit den Standardeinstellungen - nur einmal täglich ausgeführt wird, werden neu installierte Programme nicht automatisch geprelinkt. Dies lässt sich jedoch leicht beheben. Man fügt dazu in die Datei /etc/apt/apt.conf folgende Zeile ein: 
-  DPkg::Post-Invoke {"echo Running prelink, please wait...;/etc/cron.daily/prelink";} 
- 
-===== Prelink rückgängig machen ===== 
- 
-Will man Prelink wieder entfernen, muss man folgende Zeile in /etc/default/prelink ändern (Editor mit Root-Rechten, [4]) :  
-  PRELINKING=yes 
- 
-zu  
-  PRELINKING=no 
- 
-Dann wird das Prelinking beim nächsten Lauf von Cron rückgängig gemacht. Zudem muss die eingefügte Zeile wieder aus der /etc/apt/apt.conf gelöscht werden. 
- 
-Wer das prelinking sofort beseitigt haben möchte führt den folgenden Befehl aus: \\ 
-''# prelink -au '' \\ 
-Achtung: Dies sollte auf jeden Fall vor einer Deinstallation von prelink ausgeführt werden! 
- 
-===== Quellen ===== 
-http://wiki.ubuntuusers.de/Prelink