[[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(1)]] Viele Programme benötigen Bibliotheken. Dabei gibt es grundsätzlich zwei Möglichkeiten, diese in ein Programm zu integrieren: * bei jedem Laden des Programms erneut (dynamische Verlinkung) oder * einmalig über einen sog. Linker (oder Binder) bei der Kompilierung des Programms (statische Verlinkung) Bei der ersten Methode werden die Bibliotheken erst bei Bedarf in den Arbeitsspeicher geladen und durch den 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ählt auch die komplette KDE-Umgebung, da man viel Startzeit spart, weil kdeinit nicht die Bibliotheken laden muss. = Risiken und Fehler = Die Nutzung von prelink birgt allerdings auch Risiken. == Verstümmelte Programme == Wenn man nur wenig verfügbaren Festplattenplatz hat, kann Prelink sämtliche Programme verstümmeln. Man sollte während des Prelinkings ab und zu mit '''readelf''' oder '''file''' die Programme kontrollieren. Wie viel freien Speicherplatz man haben sollte, kann nicht pauschal gesagt werden, da es vom System bzw. von den installierten Programmen abhängt. == Angriffe durch manipulierte Bibliotheken == Prinzipiell ist es möglich, dass bei Verwendung von prelink [wikipedia:Return_into_libc: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 [wikipedia_en:Prelinking:]. == Bugs == Zitat manpages (man prelink): Some architectures, including IA-64 and HPPA, are not yet supported. 01 March 2007 = Installation = Installieren [1] der folgenden Pakete: {{{#!vorlage Paketinstallation prelink, universe }}} = Prelink ausführen = == Blacklisten von Anwendungen == Vor dem ersten Prelinking sollte man wissen, dass es einige Programme gibt, die im Nachhinein entweder gar nicht oder schlechter laufen würden. Diese Anwendungen sind zu einem großen Teil schon in der Datei '''/etc/prelink.conf''' eingetragen. Jedoch fehlen ein paar wichtige. Um diese abzuwählen, öffnet man diese Datei mit einem Editor und Root-Rechten [4]. Selbst hinzufügen sollte man z.B. folgende: {{{ -b /usr/bin/skype -b /usr/bin/wine }}} === prelink.conf === Will man die Datei weiter bearbeiten, sollte man außerdem beachten: * `-b` gilt für Dateien und Ordner, die nicht nicht "ge-prelinkt" werden. * `-l` speziell für Verzeichnisse, die ge-prelinkt werden, wobei symbolischen Links nur innerhalb des Dateisystem gefolgt wird. * `-h` für alle Links, auch über die Grenzen des Dateisystems. == Prelink vorbereiten == Will man nun den Vorgang starten, sollte man in der Datei '''/etc/default/prelink''': {{{ PRELINKING=unknown }}} zu {{{ PRELINKING=yes }}} abändern. Damit wird das System automatisch einmal je Tag via [:Cron:] prelinkt. == Der erste Start == Zunächst sollte der Cronjob per {{{#!vorlage Befehl sudo run-parts --verbose /etc/cron.daily/ }}} einmalig ausgeführt werden. Je nach System kann dies einige Zeit in Anspruch nehmen. Nach diesem Vorgang ist das System "ge-prelinkt". Es sollten zumindest bibliothekenintensive Programme (etwas) schneller starten. == Prelink für Neuinstallationen automatisch ausführen == 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 erstellt dazu mit Hilfe eines Editors und Root-Rechten [4] die Datei '''/etc/apt/apt.conf.d/19prelink''' mit folgendem Inhalt: {{{ dpkg::Post-Invoke {"echo Running prelink, please wait...;/etc/cron.daily/prelink";} }}} = Kubuntu/KDE SC beschleunigen = Für Nutzer von Kubuntu bzw. KDE kann sich prelinken besonders lohnen. Nicht nur von der Geschwindigkeit, auch von der Arbeitsspeichernutzung. Man sollte deshalb mit einem Editor in die Datei '''/etc/environment''' mit Root-Rechten [4] folgenden Eintrag anhängen: {{{ KDE_IS_PRELINKED="true" }}} = Prelink rückgängig machen = {{{#!vorlage Warnung Dies sollte man auch unbedingt machen, bevor prelink wieder deinstalliert wird! }}} Will man prelink wieder entfernen, führt man im Terminal [3] den folgenden Befehl aus: {{{#!vorlage Befehl sudo prelink -au }}} Diese macht das prelinken sofort rückgängig. Zudem muss die angelegte Datei '''/etc/apt/apt.conf.d/19prelink''' wieder gelöscht und der Eintrag {{{ KDE_IS_PRELINKED="true" }}} aus '''/etc/environment''' entfernt werden. Erst jetzt sollte man prelink deinstallieren. = Links = * [archwiki:Prelink:] im Arch-Wiki * [https://wiki.gentoo.org/wiki/Prelink Prelink] {en} im Gentoo-Wiki * [:System:] {Übersicht} - Übersichtsartikel # tag: System, Tuning