diff options
Diffstat (limited to 'xml/htdocs/doc/nl/prelink-howto.xml')
-rw-r--r-- | xml/htdocs/doc/nl/prelink-howto.xml | 437 |
1 files changed, 0 insertions, 437 deletions
diff --git a/xml/htdocs/doc/nl/prelink-howto.xml b/xml/htdocs/doc/nl/prelink-howto.xml deleted file mode 100644 index e95873b991..0000000000 --- a/xml/htdocs/doc/nl/prelink-howto.xml +++ /dev/null @@ -1,437 +0,0 @@ -<?xml version='1.0' encoding="UTF-8"?> -<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> - -<!-- - Sync: 1.21 ---> - -<guide link="doc/nl/prelink-howto.xml"> -<title>Gentoo Linux Prelink Gids</title> -<author title="Author"><mail link="cretin@gentoo.org">Stefan Jones</mail> -</author> -<author title="Editor"><!-- zhen@gentoo.org --> -John P. Davis -</author> -<author title="Editor"><mail link="peesh@gentoo.org">Jorge Paulo</mail> -</author> -<author title="Editor"><mail link="swift@gentoo.org">Sven Vermeulen</mail> -</author> -<author title="Translator"><mail link="blubber@gentoo.org">Tiemo Kieft</mail> -</author> - -<license/> - -<abstract> -Deze gids legt je uit hoe je gebruik kan maken van de prelink ondersteuning in -Portage 2.0.46 en later. -</abstract> - -<version>1.4</version> -<date>7 September 2003</date> - -<chapter> -<title>Inleiding</title> -<section> -<title>Wat is prelinken en hoe kan het mij helpen?</title> -<body> - -<p> -De meest algemene programmas maken gebruik van gedeelde bibliotheekbestanden. -Deze moeten tijdens de uitvoering in het geheugen geladen worden en de -verschillende symbolische referenties dienen gemapped te worden naar hun -werkelijke adreswaarden. Voor de meeste kleine programmas is dit dynamisch -linken zeer snel. Maar programmas die geschreven zijn in C++ en die veel -bibliotheek-afhankelijkheden hebben ondervinden een langdurige pauze tijdens -het laden van deze bibliotheekbestanden. -</p> - -<p> -Op de meeste systemen worden deze bibliotheekbestanden niet vaak aangepast, en -wanneer een programma uitgevoerd wordt zijn de operaties die moeten ondernomen -worden om het programma te linken zeer vaak dezelfde. <c>prelink</c> maakt -hiervan gebruik door deze linking-informatie op te slaan in het uitvoerbaar -bestand, daarom ook de naam "prelinking". Opdat de linker, -ld-linux.so, prelinking ondersteunt moet je glibc >= 2.3 hebben. -</p> - -<p> -Prelinking kan de opstarttijd van programma's verbeteren. Een typisch voorbeeld -is een KDE programma wiens laadtijd tot 50% kan verbeterd worden. Het enige -onderhoud die nodig is hiervoor is het heruitvoeren van prelink telkens een -bibliotheek van een gepre-linked programma geupgrade is. -</p> - -</body> -</section> -<section> -<title>Samenvatting</title> -<body> -<ul> -<li> -Prelinking gebeurt via een programma genaamd <c>prelink</c>. Het verandert het -bestand zodat deze sneller opstart. -</li> - -<li> -Indien een bibliotheekbestand aangepast werd na het prelinken moet je de -applicatie opnieuw herprelinken, anders zal je geen snelheidswinst verkrijgen. -</li> - -<li> -De aanpassing in het bestand is volledig reversibel. <c>prelink</c> heeft een -"undo" functie. -</li> - -<li> -Nieuwe versies van Portage herkennen de verandering van md5ums en mtimes van de -binaries indien deze door <c>prelink</c> toegepast werden. -</li> - -<li> -Je moet glibc-2.3 of later hebben samen met de binaries van -binutils-2.13.90.0.xx. -</li> -</ul> -</body> -</section> - -</chapter> - -<chapter> -<title>Prelink instellen</title> -<section> -<title>De programmas installeren</title> -<body> -<note> -We veronderstellen dat je een Gentoo-1.4 systeem hebt en dat deze gecompileerd -werd met gcc-3.2 of later en via binutils-2.13.90.0.xx. Dit is vereist opdat de -bestanden kunnen geprelinked worden. -</note> - -<warn> -Je <e>moet</e> glibc-2.3.1 of later hebben, anders zal <c>prelink</c> al je -binaries naar de wip helpen! -</warn> - - -<p> -Update eerst je Portage-structuur, aangezien veel van de nodige applicaties -nieuw zijn en er constant patches toegevoegd worden. -</p> -<pre caption = "De Portage-structuur updaten"> -# <c>emerge sync</c> -</pre> - -<p> -Zorg er nu voor dat je Portage-2.0.46 of later geinstalleerd staan hebt. Dit is -noodzakelijk opdat portage de geprelinkede bestanden herkent en deze correct -verwijdert wanneer dat gevraagd wordt. Dit is omdat prelinking de md5sum's van -de bestanden aanpast. -</p> - -<pre caption = "De Portage versie controleren en indien nodig upgraden"> -# <c>emerge ">=portage-2.0.46"</c> -</pre> - -<p> -Nu kan je de prelinking-tool emergen. Het proces zal zelf controleren of je -systeem veilig kan geprelinked worden. -</p> - -<pre caption = "Prelink installeren"> -# <c>emerge prelink</c> -</pre> - -<p> -Een klein aantal mensen kregen errors tijdens het emergen van <c>prelink</c> -wegens de falende tests. Deze testen zijn er voor veiligheidsredenen, -<c>prelink</c>'s gedrag is namelijk niet controleerbaar indien je deze -testen uitschakelt. De emerge errors zijn meestal enkel afhankelijk van de -core packages; binutils, gcc en glibc. Probeer deze packages in die volgorde -te heremergen. -</p> - -<note> -Tip: Indien je een fout krijgt probeer dan <c>prelink</c> zelf te compileren -(./configure; make; make check). Indien dit faalt kan je de *.log bestanden in -de testsuite directorie lezen. Deze kunnen interessante zaken bevatten. -</note> - -<p> -Indien je een aantal stappen hebt die je kan reproduceren op een ander systeem, -gelieve deze dan door te mailen naar <mail link="cretin@gentoo.org">Stefan -Jones</mail>. -</p> - -</body> -</section> - -<section> -<title>Configuratie</title> -<body> - -<p> -Portage zal vanzelf het <path>/etc/prelink.conf</path> bestand aanmaken waarin -vermeld wordt welke bestanden <c>prelink</c> mag prelinken. -</p> -<p> -Jammergenoeg kan je geen programmas prelinken die door oudere versies van -binutils zijn gecompileerd. Het merendeel van deze applicaties komen van -voorgecompileerde, binaire packages die in /opt geinstalleerd staan. Het -volgende bestand zal <c>prelink</c> vragen om niet aan die bestanden te komen. -</p> - -<pre caption="/etc/env.d/99prelink"> -PRELINK_PATH_MASK="/opt" -</pre> - -<note> -Je kan extra directories toevoegen door ze onderling via ":" te -scheiden. -</note> - -</body> -</section> -</chapter> - - - - -<chapter> -<title>Prelinking</title> -<section> -<title>Prelink gebruik</title> -<body> -<p> -De auteur gebruikt het volgende commando om alle binaries in de gegeven -directories (vermeld in <path>/etc/prelink.conf</path>) te prelinken: -</p> - -<pre caption = "De nodige bestanden prelinken"> -# <c>prelink -afmR</c> -</pre> - -<warn> -Men heeft al opgemerkt dat, indien je weinig vrije ruimte hebt op je schijf, en -je begint met de bestanden te prelinken, dat sommige bestanden afgeknipt worden -(en dus niet meer functioneren). Maak gebruik van het <c>file</c> of -<c>readelf</c> commando om de status van een bestand te controleren. Of -controleer van te voren hoeveel ruimte je vrij hebt op je harde schijf -doormiddel van <c>df -h</c>. -</warn> - -<p> -Uitleg over de opties: -</p> - -<p><b>-a</b></p><p>Allemaal, prelink alle binaries</p> - -<p><b>-f</b></p><p> -Verplicht <c>prelink</c> om al geprelinkede binaries opnieuw te prelinken. Dit -is nodig aangezien prelink stopt wanneer ze al geprelinkede binaries tegenkomt -terwijl hun bibliotheekbestandafhankelijkheden veranderd zijn. -</p> - -<p><b>-m</b></p><p> -Hou rekening met de beschikbare virtuele ruimte. Dit is nodig indien je veel -bibliotheekbestanden hebt die geprelinked dienen te worden. -</p> - -<p><b>-R</b></p><p> -Random, maak de adres-ordening random; dit verbetert de bescherming tegen -buffre overflows -</p> - -<p> -Voor meer opties en details, zie <i>man prelink</i>. -</p> - -</body> -</section> -</chapter> -<chapter> -<title>Gekende problemen en oplossingen</title> - -<section> -<title>"Kan niet prelinken tegen niet-PIC gedeelde bibliotheken"</title> -<body> -<p> -De reden hiervan zijn slecht gecompileerde bibliotheken die met gcc's -fPIC -optie zijn gecompileerd. -</p> - -<p> -Het volgende is een lijst van probleembibliotheken en packages die je moet -heremergen indien je bovenstaande fout krijgt: -</p> - -<pre caption = "Oplossingen"> -<codenote>Voor de ORBit bibliotheek: /usr/lib/libIIOP.so.0.5.17</codenote> -emerge ">=sys-apps/tcp-wrappers-7.6-r4" ORBit -<codenote>Voor de libz bibliotheek: usr/lib/libz.so.1.1.4</codenote> -emerge ">=sys-libs/zlib-1.1.4" -<codenote>Voor svgalib: /usr/lib/libsvga.so.xx</codenote> -emerge ">=media-libs/svgalib-1.9.16" -<codenote>Voor de XFree openGL library: libGLU.so.1</codenote> -emerge ">=x11-base/xfree-4.2.1-r2" -<codenote>Voor libpcap.so.0.6</codenote> -emerge ">=net-libs/libpcap-0.7.1-r2" -<codenote>Voor de lcms library: /usr/lib/liblcms.so.1</codenote> -emerge ">=media-libs/lcms-1.09" -</pre> - -<note> -Veel bibliotheken linken statisch tegen zlib en/of tcp-wrappers, dus moet je -deze ook heremergen. -</note> - -<p> -Indien je problemen verkrijgt bij het prelinken van QT/KDE, upgrade dan eerst -naar >=x11-base/xfree-4.2.1-r2 en >=x11-libs/qt-3.1.0-r1. Indien QT nog steeds -faalt probeer dan QT te compileren zonder xinerama ondersteuning door -myconf="-no-xinerama ${myconf}" in de qt ebuild toe te voegen. -</p> - -<p> -Hier is een lijst van bibliotheken die niet gefixed werden of kunnen gefixed -worden: -</p> -<ul> -<li>De bibliotheken in de Wine package, inclusief winex. Het zou de MS Windows uitvoerbare bestanden toch niet versnellen.</li> -<li>De bibliotheek van media-video/mjpegtools, /usr/lib/liblavfile-1.6.so.0</li> -</ul> - -<p> -Indien je problemen ondervindt met een bibliotheek die hier niet vermeld werd, -rapporteer deze dan met, indien mogelijk, een patch om <i>-fPIC</i> toe te -voegen aan de relevante CFLAGS. -</p> - -</body> -</section> - -<section> -<title> -Gestopt tijdens prelinken van een bestand, zoals "1631 Aborted ...." -</title> -<body> - -<p> -Je moet de <i>-f</i> optie meegeven aan <c>prelink</c>, ie reprelink het ganse -systeem. Probeer <i>prelink -af</i>. -</p> - -</body> -</section> - -<section> -<title>"<file>: error while loading shared libraries: unexpected reloc type..."</title> -<body> -<p> -Dit is opgelost in <i>sys-libs/glibc-2.3.1-r2</i> op 2002/11/18, heremerge -glibc indien jouw versie ouder is. -</p> - -<p> -Het uitvoeren van <i>prelink -u -a -m; prelink -a -m</i> helpt soms ook. Indien -ook dit mislukt probeer dan gewoon <i>prelink -u <file></i> -</p> - -</body> -</section> - -<section> -<title> -Ik heb problemen met NVidia OpenGL bibliotheken -</title> -<body> -<p> -De geaccelereerde OpenGL bibliotheken die bij nvidia-glx zitten zijn volgens -een niet-standaard manier gecompileerd waardoor prelinken waarschuwingen geeft. -Hier moet je je niet echt zorgen over maken - je kan het ook niet voorkomen, -enkel de mensen van NVidia zelf kunnen dat. Je kan altijd terugkeren naar de -xfree versie van libGL.so indien je geen 3D-acceleratie nodig hebt. De nvidia -xfree driver werkt echter perfect. -</p> -</body> -</section> - -<section> -<title> -Wanneer ik mijn systeem prelink werken sommige statische binaries niet meer -</title> -<body> - -<p> -Voor zover we over glibc bezig zijn bestaat er niet zo iets als een 100% -statische binarie. Indien je een programma statisch compileert met glibc dan -kan/zal het nog steeds afhangen van andere systeembestanden. Hieronder vind je -een (vertaalde) uitleg van Dick Howell. -</p> -<p> -"Ik veronderstel dat het idee is dat alles in dat ene bestand staat, dus -dat er niets meer afhangt van lokale bibliotheken op het systeem. Jammergenoeg -is dit bij Linux, en ik denk zelfs bij alles wat GLIBC gebruikt, niet het -geval. Er is wat heet "libnss" (name service switch, sommige mensen noemen het -network security system) die bepaalde functies aanbiedt voor het bereiken van -verschillende databases voor identiteits verificatie, netwerkinformatie en -andere zaken. De bedoeling ervan was om programmas onafhankelijk te maken van -de apart geconfigureerde netwerkomgeving van de machine. Een goed idee, maar -veranderingen aan GLIBC kunnen echter leiden tot problemen wanneer je dit -laadt. En je kan "libnss" niet statisch linken, want het is individueel -afhankelijk van systeem tot systeem. Ik denk dat de problemen komen van het -statisch linken van andere GLIBC-bibliotheken, vooral "libpthread", "libm" en -"libc", van waaruit incompatibele calls komen naar de "libnss" functies." -</p> - -</body> -</section> - -<section> -<title> -Prelink stopt met "prelink: dso.c:306: fdopen_dos: Assertion `j == k' -failed." -</title> -<body> -<p> -Dit is een gekend probleem wat mooi uitgelegd staat op <uri -link="http://bugs.gentoo.org/show_bug.cgi?id=13878">deze pagina</uri>. Prelink -kan niet werken met UPX-gecomprimeerde uitvoerbare bestanden. Vanaf -prelink-20021213 is er geen oplossing behalve het verbergen van de bestanden -terwijl je aan het prelinken bent. Zie de uitleg over de configuratie van -prelink hierboven voor meer informatie over hoe je dat doet. -</p> -</body> -</section> - -<section> -<title>Ik gebruik grsecurity en het lijkt erop dat prelink niet werkt</title> -<body> -<p>Om een systeem te prelinken waar grsecurity op draait gebruikmakend van -randomized mmap() base, is het nodig om "randomized mmap() base" uit -te schakellen voor <path>/lib/lid-2.3.*.so</path>. Dit kan gedaan worden met -<c>chpax</c>, maar moet gedaan worden zonder dat het bestand in gebruik is -(m.a.w. starten van een liveCD).</p> -</body> -</section> - -</chapter> - -<chapter> -<title>Conclusie</title> -<section> -<body> -<p> -Prelinken kan de start-tijd van verschillende grote programmas enorm -verbeteren. Ondersteuning hiervoor zit in Portage. Prelinking is tevens veilig -aangezien je altijd je aanpassingen kan terugschroeven voor eender welk -bestand indien je op problemen stoot. -Veel geluk nog! -</p> - -</body> -</section> - -</chapter> - -</guide> |