diff --git a/nl_NL.ISO8859-1/books/handbook/dtrace/Makefile b/nl_NL.ISO8859-1/books/handbook/dtrace/Makefile new file mode 100644 index 0000000000..0a0e6e03dc --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/dtrace/Makefile @@ -0,0 +1,15 @@ +# +# Build the Handbook with just the content from this chapter. +# +# $FreeBSD$ +# + +CHAPTERS= dtrace/chapter.sgml + +VPATH= .. + +MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} + +DOC_PREFIX?= ${.CURDIR}/../../../.. + +.include "../Makefile" diff --git a/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.sgml new file mode 100644 index 0000000000..99beb23c6d --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.sgml @@ -0,0 +1,410 @@ +<!-- +Recently I suggested to myself that this should become a profiling +and debugging chapter, which covers things like ktrace(1) and +using other debugging (like -x in shell scripts). But then I +realized that, over time and while DTrace becomes better supported, +that might make this chapter too large. +--> + +<!-- + The FreeBSD Dutch Documentation Project + $FreeBSD$ + + %SOURCE% en_US.ISO8859-1/books/handbook/dtrace/chapter.sgml + %SRCID% 1.5 +--> + +<chapter id="dtrace"> + <chapterinfo> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + <authorgroup> + <author> + <firstname>René</firstname> + <surname>Ladan</surname> + <contrib>Vertaald door </contrib> + </author> + </authorgroup> + </chapterinfo> + + <title>DTrace</title> + + <sect1 id="dtrace-synopsis"> + <title>Overzicht</title> + + <indexterm><primary>DTrace</primary></indexterm> + + <indexterm> + <primary>DTrace-ondersteuning</primary> + + <see>DTrace</see> + </indexterm> + + <para>DTrace, ook bekend als Dynamic Tracing, was ontwikkeld door + &sun; als een gereedschap om prestatie-bottlenecks in productie- + en preproductiesystemen op te sporen. Het is in geen enkel opzicht + een debug-gereedschap, maar een gereedschap voor real-time analyse + om prestatie- en andere zaken op te sporen.</para> + + <para>DTrace is een opmerkelijk profileringsgereedschap, met een + indrukwekkende verzameling mogelijkheden om systeemzaken te + diagnosticeren. Het kan ook worden gebruikt om vooraf geschreven + scripts te draaien om zo voordeel te halen uit de mogelijkheden. + Gebruikers kunnen zelfs hun eigen middelen schrijven door gebruik + te maken van de DTrace D Language, wat ze in staat stelt om hun + profilering aan te passen aan hun specifieke behoeften.</para> + + <para>Na het lezen van dit hoofdstuk weet u:</para> + + <itemizedlist> + <listitem> + <para>Wat DTrace is en welke mogelijkheden het biedt.</para> + </listitem> + + <listitem> + <para>De verschillen tussen de DTrace-implementatie van + &solaris; en degene die door &os; wordt aangeboden.</para> + </listitem> + + <listitem> + <para>Hoe DTrace op &os; aan te zetten en te gebruiken.</para> + </listitem> + </itemizedlist> + + <para>Voordat u dit hoofdstuk leest, dient u:</para> + + <itemizedlist> + <listitem> + <para>De beginselen van &unix; en &os; te begrijpen + (<xref linkend="basics">).</para> + </listitem> + + <listitem> + <para>Bekend te zijn met de beginselen van kernelconfiguratie en + -compilatie (<xref linkend="kernelconfig">).</para> + </listitem> + + <listitem> + <para>Wat bekendheid te hebben met beveiliging en hoe het zich + verhoudt tot &os; (<xref linkend="security">).</para> + </listitem> + + <listitem> + <para>Te begrijpen hoe de broncode van &os; te verkrijgen en te + herbouwen (<xref linkend="cutting-edge">).</para> + </listitem> + </itemizedlist> + + <!-- + Temporary warning to avoid listing experimental versions + and production versions of FreeBSD with this technology. + --> + <warning> + <para>Deze mogelijkheid wordt als experimenteel beschouwd. Van + sommige opties kan er functionaliteit ontbreken, andere delen + kunnen in het geheel niet werken. In de loop der tijd zal deze + mogelijkheid als productierijp worden beschouwd en zal deze + documentatie worden aangepast om die situatie te + representeren.</para> + </warning> + </sect1> + + <sect1 id="dtrace-implementation"> + <title>Implementatieverschillen</title> + + <para>Hoewel DTrace in &os; erg lijkt op degene die in &solaris; + zit, zijn er verschillen die uitgelegd moeten worden voordat er + verder wordt gegaan. Het primaire verschil dat gebruikers zullen + zien is dat DTrace specifiek moet worden aangezet op &os;. Er + zijn kernelopties en modulen die aangezet moeten worden om DTrace + juist te laten werken. Deze zullen later worden uitgelegd.</para> + + <para>Er is een kerneloptie <literal>DDB_CTF</literal> die gebruikt + wordt om ondersteuning voor het laden van + <acronym>CTF</acronym>-gegevens van kernelmodulen en de kernel + zelf. <acronym>CTF</acronym> is het Compact C Type Format van + &solaris; welke een beperkte vorm van debuginformatie bevat + die vergelijkbaar is met <acronym>DWARF</acronym> en de befaamde + stabs. Deze <acronym>CTF</acronym>-gegevens worden door de + bouwmiddelen <command>ctfconvert</command> en + <command>ctfmerge</command> aan de binairen toegevoegd. Het + hulpmiddel <command>ctfconvert</command> parst + <acronym>DWARF</acronym>-debug <acronym>ELF</acronym>-secties die + door de compiler zijn aangemaakt en <command>ctfmerge</command> + voegt <acronym>CTF</acronym> <acronym>ELF</acronym>-secties van + objecten samen in hun executables of gedeelde bibliotheken. Meer + informatie over hoe dit voor de bouw van de kernel en &os; aan te + zetten komt eraan.</para> + + <para>Sommige aanbieders voor &os; verschillen van die voor + &solaris;. De meest opmerkelijke is de aanbieder + <literal>dtmalloc</literal>, welke het volgen van + <function>malloc()</function> op soort in de &os;-kernel + toestaat.</para> + + <para>Alleen <username>root</username> mag DTrace op &os; gebruiken. + Dit heeft te maken met beveiligingsverschillen, &solaris; heeft + enkele beveiligingscontroles op laag niveau die nog niet bestaan + in &os;. Hierom is <devicename>/dev/dtrace/dtrace</devicename> + strikt beperkt tot <username>root</username>.</para> + + <para>Tenslotte valt de DTrace-software onder de + <acronym>CDDL</acronym>-licentie van &sun;. De <literal>Common + Development and Distribution License</literal> wordt bij &os; + geleverd, zie + <filename>/usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE</filename> + of bekijk het online op + <ulink url="http://www.opensolaris.org/os/licensing"></ulink>.</para> + + <para>Deze licentie houdt in dat een &os;-kernel met de + DTrace-opties nog steeds onder de <acronym>BSD</acronym>-licentie + valt; de <acronym>CDDL</acronym> komt echter op de proppen wanneer + de modulen in binaire vorm worden verspreid, of wanneer de + binairen zijn geladen.</para> + </sect1> + + <sect1 id="dtrace-enable"> + <title>Ondersteuning voor DTrace aanzetten</title> + + <para>Voeg de volgende regels toe aan het kernelinstellingenbestand + om ondersteuning voor DTrace aan te zetten:</para> + + <programlisting>options KDTRACE_HOOKS +options DDB_CTF</programlisting> + + <note> + <para>Gebruikers van de AMD64-architectuur zullen de volgende + regel aan hun kernelinstellingenbestand willen toevoegen:</para> + + <programlisting>options KDTRACE_FRAME</programlisting> + + <para>Deze optie biedt ondersteuning voor de mogelijkheid + <acronym>FBT</acronym>. DTrace zal zonder deze optie werken; + er zal echter beperkte ondersteuning zijn voor het volgen van + functiegrenzen.</para> + </note> + + <para>Alle broncode moet herbouwd en geherinstalleerd worden met de + <acronym>CTF</acronym>-opties. Om deze taak te volbrengen, wordt + de &os;-broncode herbouwd met:</para> + + <!-- XXXTR: WITH_CTF has been reported to leave a use with a + broken system when used with buildworld. Until this is + fixed, comment out those parts. When uncommenting, kill + the extra screen. + --> + + <screen>&prompt.root; <userinput>cd /usr/src</userinput> +<!-- &prompt.root; <userinput>make WITH_CTF=1 buildworld</userinput> --> +&prompt.root; <userinput>make WITH_CTF=1 kernel</userinput></screen> +<!-- &prompt.root; <userinput>make WITH_CTF=1 installworld</userinput> +&prompt.root; <userinput>mergemaster -Ui</userinput></screen> --> + + <para>Het systeem moet opnieuw gestart worden.</para> + + <para>Nadat opnieuw is opgestart en de nieuwe kernel in het geheugen + is geladen, dient ondersteuning voor de Korn-shell te worden + toegevoegd. Dit is nodig omdat de verschillende hulpmiddelen van + DTrace in <command>ksh</command> zijn geschreven. Installeer + <filename role="package">shells/ksh93</filename>. Het is ook + mogelijk om deze hulpmiddelen in <filename + role="package">shells/pdksh</filename> of <filename + role="package">shells/mksh</filename> te draaien.</para> + + <para>Als laatste dient de huidige DTrace-gereedschapskist verkregen + te worden. De huidige versie is beschikbaar op + <ulink url="http://www.opensolaris.org/os/community/dtrace/dtracetoolkit/"></ulink>. + Het bevat een installatiemechanisme; om gebruik te maken van de + bijgeleverde hulpmiddelen is installatie echter niet nodig.</para> + </sect1> + + <sect1 id="dtrace-using"> + <title>DTrace gebruiken</title> + + <para>Voordat er gebruik wordt gemaakt van de functionaliteit van + DTrace, moet het DTrace-apparaat bestaan. Geef het volgende + commando om het apparaat te laten:</para> + + <screen>&prompt.root; <userinput>kldload dtraceall</userinput></screen> + + <para>Ondersteuning van DTrace zou nu beschikbaar moeten zijn. De + beheerder kan het volgende commando uitvoeren om alle sondes te + bekijken:</para> + + <screen>&prompt.root; <userinput>dtrace -l | more</userinput></screen> + + <para>Alle uitvoer wordt aan het hulpmiddel <command>more</command> + doorgegeven omdat het snel de schermbuffer zal laten overstromen. + DTrace kan nu als werkend worden beschouwd. Het is nu tijd om de + gereedschapskist te bekijken.</para> + + <para>De gereedschapskist is een verzameling van kant-en-klare + scripts die met DTrace gedraaid kunnen worden om informatie over + het systeem te verzamelen. Er zijn scripts om open bestanden, + geheugen, <acronym>CPU</acronym>-gebruik, en nog veel meer te + controleren. Pak de scripts uit met het volgende commando:</para> + + <screen>&prompt.root; <userinput>gunzip -c DTraceToolkit* | tar xvf -</userinput></screen> + + <para>Ga naar die map met <command>cd</command> en zet de + uitvoerpermissies voor alle bestanden waarvan de naam uit kleine + letters bestaat, op <literal>755</literal>.</para> + + <para>De inhoud van al deze scripts moet veranderd worden. Degenen + die naar <filename>/usr/bin/ksh</filename> verwijzen dienen naar + <filename>/usr/local/bin/ksh</filename> te verwijzen, de anderen + die <filename>/usr/bin/sh</filename> gebruiken dienen gewijzigd te + worden om <filename>/bin/sh</filename> te gebruiken, en tenslotte + dienen degenen die <filename>/usr/bin/perl</filename> gebruiken + veranderd te worden om <filename>/usr/local/bin/perl</filename> te + gebruiken.</para> + + <important> + <para>Op dit moment is het voorzichtig om de lezer eraan te + herinneren dat de ondersteuning voor DTrace in &os; + <emphasis>niet compleet</emphasis> en + <emphasis>experimenteel</emphasis> is. Veel van deze scripts + zullen niet werken omdat ze of te &solaris;-specifiek zijn of + omdat ze sondes gebruiken die momenteel niet ondersteund + worden.</para> + </important> + + <para>Op het moment van schrijven worden slechts twee scripts van de + DTrace Toolkit volledig ondersteund in &os;: de scripts + <filename>hotkernel</filename> en + <filename>procsystime</filename>. Dit zijn de twee die we in de + volgende gedeelten van deze sectie zullen bekijken.</para> + + <para>De <filename>hotkernel</filename> is ontworpen om te + identificeren welke functie de meeste kerneltijd gebruikt. Als + het normaal gedraaid wordt, zal het uitvoer die op de volgende + lijkt produceren:</para> + + <screen>&prompt.root; <userinput>./hotkernel</userinput> +Sampling... Hit Ctrl-C to end.</screen> + + <para>De systeembeheerder moet de toetsencombinatie <keycombo + action="simul"><keycap>Ctrl</keycap><keycap>C</keycap></keycombo> + gebruiken om het proces te stoppen. Nadat het gestopt is, zal het + script een lijst van kernelfuncties en timinginformatie weergeven, + waarbij de uitvoer in volgorde van toenemende tijd is + gesorteerd:</para> + + <screen>kernel`_thread_lock_flags 2 0.0% +0xc1097063 2 0.0% +kernel`sched_userret 2 0.0% +kernel`kern_select 2 0.0% +kernel`generic_copyin 3 0.0% +kernel`_mtx_assert 3 0.0% +kernel`vm_fault 3 0.0% +kernel`sopoll_generic 3 0.0% +kernel`fixup_filename 4 0.0% +kernel`_isitmyx 4 0.0% +kernel`find_instance 4 0.0% +kernel`_mtx_unlock_flags 5 0.0% +kernel`syscall 5 0.0% +kernel`DELAY 5 0.0% +0xc108a253 6 0.0% +kernel`witness_lock 7 0.0% +kernel`read_aux_data_no_wait 7 0.0% +kernel`Xint0x80_syscall 7 0.0% +kernel`witness_checkorder 7 0.0% +kernel`sse2_pagezero 8 0.0% +kernel`strncmp 9 0.0% +kernel`spinlock_exit 10 0.0% +kernel`_mtx_lock_flags 11 0.0% +kernel`witness_unlock 15 0.0% +kernel`sched_idletd 137 0.3% +0xc10981a5 42139 99.3%</screen> + + <!-- XXXTR: I attempted to use objdump and nm on /boot/kernel/kernel + to find 0xc10981a5, but to no avail. It would be nice to know + how we should look that up. --> + + <para>Het script werkt ook met kernelmodules. Draai het script met + de vlag <option>-m</option> om deze mogelijkheid te + gebruiken:</para> + + <screen>&prompt.root; <userinput>./hotkernel -m</userinput> +Sampling... Hit Ctrl-C to end. +^C +MODULE COUNT PCNT +0xc107882e 1 0.0% +0xc10e6aa4 1 0.0% +0xc1076983 1 0.0% +0xc109708a 1 0.0% +0xc1075a5d 1 0.0% +0xc1077325 1 0.0% +0xc108a245 1 0.0% +0xc107730d 1 0.0% +0xc1097063 2 0.0% +0xc108a253 73 0.0% +kernel 874 0.4% +0xc10981a5 213781 99.6%</screen> + + <!-- XXXTR: I was unable to match these up with output from + kldstat and kldstat -v and grep. Maybe I'm missing something + seriously obvious. It is 5AM btw. --> + + <para>Het script <filename>procsystime</filename> vangt en beeldt + het tijdsgebruik van systeemaanroepen af voor een gegeven + <acronym>PID</acronym> of procesnaam. In het volgende voorbeeld + wordt er een nieuwe instantie van <filename>/bin/csh</filename> + gedraaid. Het <filename>procsystime</filename> werd uitgevoerd en + bleef wachten terwijl er enkele commando's op de andere instantie + van <command>csh</command> werden getypt. Dit zijn de resultaten + van deze test:</para> + + <screen>&prompt.root; <userinput>./procsystime -n csh</userinput> +Tracing... Hit Ctrl-C to end... +^C + +Elapsed Times for processes csh, + + SYSCALL TIME (ns) + getpid 6131 + sigreturn 8121 + close 19127 + fcntl 19959 + dup 26955 + setpgid 28070 + stat 31899 + setitimer 40938 + wait4 62717 + sigaction 67372 + sigprocmask 119091 + gettimeofday 183710 + write 263242 + execve 492547 + ioctl 770073 + vfork 3258923 + sigsuspend 6985124 + read 3988049784</screen> + + <para>Zoals te zien is, lijkt de systeemaanroep + <function>read()</function> de meeste tijd in nanoseconden te + gebruiken en gebruikte de systeemaanroep + <function>getpid()</function> de minste hoeveelheid tijd.</para> + </sect1> + + <sect1 id="dtrace-language"> + <title>De taal D</title> + + <para>De DTrace-gereedschapskist bevat vele scripts in de speciale + taal van DTrace. Deze taal wordt <quote>de taal D</quote> genoemd + door de documentatie van &sun;, en lijkt sterk op C++. Een + diepgaande discussie over de taal valt buiten het bereik van dit + document. Het wordt uitgebreid behandeld op + <ulink url="http://wikis.sun.com/display/DTrace/Documentation"></ulink>.</para> + </sect1> +</chapter> + + <!-- XXXTR: Should probably put links and resources here. I'm + nervous about this chapter as it may require a partial + re-write and large modification once DTrace is complete, but + at least we can get everyone started ... --> diff --git a/nl_NL.ISO8859-1/books/handbook/updating/Makefile b/nl_NL.ISO8859-1/books/handbook/updating/Makefile new file mode 100644 index 0000000000..42d0c10e65 --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/updating/Makefile @@ -0,0 +1,15 @@ +# +# Build the Handbook with just the content from this chapter. +# +# $FreeBSD$ +# + +CHAPTERS= updating/chapter.sgml + +VPATH= .. + +MASTERDOC= ${.CURDIR}/../${DOC}.${DOCBOOKSUFFIX} + +DOC_PREFIX?= ${.CURDIR}/../../../.. + +.include "../Makefile" diff --git a/nl_NL.ISO8859-1/books/handbook/updating/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/updating/chapter.sgml new file mode 100644 index 0000000000..e3e1511108 --- /dev/null +++ b/nl_NL.ISO8859-1/books/handbook/updating/chapter.sgml @@ -0,0 +1,566 @@ +<!-- + The FreeBSD Documentation Project + $FreeBSD$ + + %SOURCE% en_US.ISO8859-1/books/handbook/updating/chapter.sgml + %SRCID% 1.1 +--> + +<chapter id="updating"> + <chapterinfo> + <authorgroup> + <author> + <firstname>Tom</firstname> + <surname>Rhodes</surname> + <contrib>Geschreven door </contrib> + </author> + </authorgroup> + <authorgroup> + <author> + <firstname>Colin</firstname> + <surname>Percival</surname> + <contrib>Gebaseerd op notities geleverd door </contrib> + </author> + </authorgroup> + <authorgroup> + <author> + <firstname>René</firstname> + <surname>Ladan</surname> + <contrib>Vertaald door </contrib> + </author> + </authorgroup> + </chapterinfo> + + <title>&os; bijwerken</title> + + <sect1 id="updating-synopsis"> + <title>Overzicht</title> + + <indexterm><primary>FreeBSD bijwerken</primary></indexterm> + + <indexterm> + <primary>freebsd-update</primary> + <see>Bijwerken</see> + </indexterm> + + <para>Door de tijd heen is een primair aspect van het + besturingssysteem &os; hetzelfde gebleven. Dit is de eis om + applicaties en gereedschappen te gebruiken om grote en kleine + systeemupdate te verkrijgen.</para> + + <para>Voor vele jaren waren gebruikers die hun systeem wilden + upgraden, beveiligingspatches wilden verzamelen, en updates voor + ports en pakketten wilden verkrijgen zonder de Portscollectie + kapot te maken verplicht om het gereedschap + <application>CVSup</application> te gebruiken.</para> + + <para>Hoewel het gebruik van <application>CVSup</application> nog + steeds wordt ondersteund, en er een ware versie geprogrammeerd in + de taal C aan &os; is toegevoegd, zijn er nieuwe methoden om + systeemupdates te verkrijgen.</para> + + <para>Gereedschappen zoals &man.portsnap.8; en + &man.freebsd-update.8; hebben het upgradeproces gestroomlijnd. + Deze nieuwe methoden verhogen de productiviteit terwijl ze een + eenvoudigere interface voor gebruikers bieden. Sommige nieuwe + gereedschappen kunnen vanuit &man.cron.8; worden gedraaid waardoor + de handmatige tussenkomst van de systeembeheerder wordt + verminderd; een voordeel voor degenen die honderden &os;-machines + in de gaten houden.</para> + + <para>Dit hoofdstuk zal deze nieuwe methoden uitleggen, en vertellen + hoe gebruikers alsmede systeembeheerders voordeel kunnen halen uit + hun praktische en eenvoudige gebruik.<para> + + <para>Na het lezen van dit hoofdstuk weet u:</para> + + <itemizedlist> + <listitem> + <para>Welke gereedschappen gebruikt kunnen worden om het systeem + en de Portscollectie te updaten.</para> + </listitem> + + <listitem> + <para>Hoe <command>freebsd-update</command> te gebruiken om + beveiligingspatches toe te passen en grote en kleine upgrades + van &os; uit te voeren.</para> + </listitem> + + <listitem> + <para>Hoe de toestand van een geïnstalleerd systeem met een + bekende maagdelijke kopie te vergelijken.</para> + </listitem> + </itemizedlist> + + <para>Voor het lezen van dit hoofdstuk dient u:</para> + + <itemizedlist> + <listitem> + <para>De beginselen van &unix; en &os; te begrijpen + (<xref linkend="basics">).</para> + </listitem> + + <listitem> + <para>Bekend te zijn met de beginselen van het instellen en + compileren van de kernel (<xref linkend="kernelconfig">).</para> + </listitem> + + <listitem> + <para>Enigszins bekend te zijn met de Portscollectie en het + installeren van applicaties van derde partijen op &os; + (<xref linkend="ports">).</para> + </listitem> + + <listitem> + <para>Bekend te zijn met de verschillende broncomponenten + waaruit &os; bestaat en hoe het gereedschap + &man.mergemaster.8; te gebruiken + (<xref linkend="cutting-edge">).</para> + </listitem> + </itemizedlist> + </sect1> + + <sect1 id="updating-freebsdupdate"> + <title>FreeBSD Update</title> + + <para>Het toepassen van beveiligingspatches is een belangrijk + onderdeel van het beheren van computersoftware, met name het + besturingssysteem. Dit was voor een lange tijd geen gemakkelijk + proces op &os;. Er moesten patches op de broncode worden + toegepast, de code moest herbouwd worden tot binairen, en daarna + moesten de binairen worden geherinstalleerd.</para> + + <para>Dit is niet langer het geval aangezien &os; nu een gereedschap + heeft dat eenvoudigweg <command>freebsd-update</command> heet. + Dit gereedschap biedt twee gescheiden functies. Ten eerste + voorziet het in het toepassen van binaire beveiligings- en + errata-updates op het basissysteem van &os; zonder de eis om te + bouwen en te installeren. Ten tweede ondersteunt het gereedschap + kleine en grote uitgave-upgrades.</para> + + <note> + <para>Binaire updates zijn beschikbaar voor alle architecturen en + uitgaven die momenteel door het beveiligingsteam worden + ondersteund; voor sommige eigenschappen, zoals de upgrades van + het besturingssysteem &os;, zijn de laatste uitgave van + &man.freebsd-update.8; en &os; 6.3 nodig. Voordat naar + een nieuwe uitgave wordt ge-updated, dienen de huidige + uitgaveaankondigingen gelezen te worden aangezien ze belangrijke + informatie over de gewenste uitgave kunnen bevatten. De + aankondigingen kunnen op de volgende koppeling bekeken worden: + <ulink url="http://www.FreeBSD.org/releases/"></ulink>.</para> + </note> + + <para>Als er een <command>crontab</command> bestaat die de + mogelijkheden van <command>freebsd-update</command> gebruikt, moet + het uitgeschakeld worden voordat aan de volgende operatie wordt + begonnen. De nieuwste versie van + <command>freebsd-update</command> kan geïnstalleerd worden + door het ge<command>tar</command>de en ge<command>gzip</command>te + pakket van de bovenstaande <acronym>URL</acronym> te downloaden en + het te installeren met de volgende commando's:</para> + + <screen>&prompt.root; <userinput>gunzip -c freebsd-update-upgrade.tgz | tar xvf -</userinput> +&prompt.root; <userinput>mv freebsd-update.sh /usr/sbin/freebsd-update</userinput> +&prompt.root; <userinput>mv freebsd-update.conf /etc</userinput></screen> + + <para>Het downloaden is niet nodig voor alle huidige + uitgaven.</para> + + <sect2> + <title>Het configuratiebestand</title> + + <para>Sommige gebruikers willen het configuratiebestand tweaken, + waardoor het proces beter gecontroleerd kan worden. De opties + zijn goed gedocumenteerd, maar voor de volgenden is wat extra + uitleg nodig:</para> + + <programlisting># Componenten van het basissysteem die bijgewerkt moeten blijven +Components src world kernel</programlisting> + + <para>Deze parameter bepaalt welke delen van &os; bijgewerkt + blijven. Standaard wordt de broncode bijgewerkt, het hele + basissysteem, en de kernel. Dezelfde componenten als tijdens de + installatie zijn beschikbaar, het toevoegen van bijvoorbeeld + "world/games" zou de spelpatches toepassen. Het gebruik van + "src/bin" zou de broncode in <filename + class="directory">src/bin</filename> bijgewerkt houden.</para> + + <para>Het beste kan dit op de standaardwaarde blijven aangezien + het veranderen hiervan om specifieke items te bevatten de + gebruiker dwingt om alle items die bijgewerkt dienen te worden + op te noemen. Dit kan rampzalige gevolgen hebben aangezien de + broncode en de binairen asynchroon kunnen raken.</para> + + <programlisting># Paden die beginnen met iets wat overeenkomt met een regel in een IgnorePaths +# statement zullen genegeerd worden. +IgnorePaths</programlisting> + + <para>Voeg paden, zoals + <filename class="directory">/bin</filename> of + <filename class="directory">/sbin</filename> toe om deze + specifieke mappen ongemoeid te laten tijdens het updateproces. + Deze optie kan gebruikt worden om te voorkomen dat + <command>freebsd-update</command> lokale wijzigingen + overschrijft.</para> + + <programlisting># Paden die beginnen met iets wat overeenkomt met een regel in een UpdateIfUnmodified +# statement zullen alleen worden bijgewerkt als de inhoud van het bestand niet is +# gewijzigd door de gebruiker (tenzij veranderingen zijn samengevoegd; zie beneden). +UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile</programlisting> + + <para>Werk configuratiebestanden in de aangegeven mappen alleen + bij als ze niet zijn gewijzigd. Alle veranderingen die door de + gebruiker zijn gemaakt maken het automatisch bijwerken van deze + bestanden ongeldig. Er is een andere optie, + <literal>KeepModifiedMetadata</literal>, die + <command>freebsd-update</command> instrueert om de veranderingen + tijdens het samenvoegen te bewaren.</para> + + <programlisting># Wanneer naar een nieuwe uitgave van &os; wordt ge-upgraded, worden lokale veranderingen van bestanden die overeenkomen met MergeChanges +# samengevoegd in de versie van de nieuwe uitgave. +MergeChanges /etc/ /var/named/etc/</programlisting> + + <para>Lijst van mappen met instellingenbestanden waar + <command>freebsd-update</command> moet proberen om in samen te + voegen. Het proces van bestanden samenvoegen is een serie + van &man.diff.1;-patches die ongeveer gelijk is aan + &man.mergemaster.8; met minder opties, de samenvoegingen worden + ofwel geaccepteerd, of openen een tekstverwerker, of zorgen + ervoor dat <command>freebsd-update</command> afbreekt. Maak in + geval van twijfel een reservekopie van <filename + class="directory">/etc</filename> en accepteer de + samenvoegingen. In <xref linkend="cutting-edge"> staat meer + informatie over het commando <command>mergemaster</command>.</para> + + <programlisting># Map waarin de gedownloade updates en tijdelijke +bestanden +# die door een &os; Update worden gebruikt worden worden opgeslagen. +# WorkDir /var/db/freebsd-update</programlisting> + + <para>Dit is de map waarin alle patches en tijdelijke bestanden + worden geplaatst. In het geval dat de gebruiker een + versie-upgrade uitvoert, dient deze locatie tenminste een + gigabyte aan vrije schijfruimte te hebben.</para> + + <programlisting># Wanneer tussen uitgaven wordt ge-upgraded, dient de lijst van Componenten dan +# strikt gelezen te worden (StrictComponents yes) of slechts als een lijst van componenten + +# die geïnstalleerd *kunnen* worden en waarvan &os; Update uit dient te zoeken +# welke daadwerkelijk zijn geïnstalleerd en die te upgraden (StrictComponents no)? +# StrictComponents no</programlisting> + + <para>Wanneer ingesteld op <literal>yes</literal>, zal + <command>freebsd-update</command> aannemen dat de lijst + <literal>Components</literal> compleet is en zal het niet + proberen om wijzigingen buiten de lijst te maken. Effectief zal + <command>freebsd-update</command> proberen om elk bestand bij te + werken dat op de lijst <literal>Components</literal> staat.</para> + </sect2> + + <sect2> + <title>Beveiligingspatches</title> + + <para>Beveiligingspatches staan op een verre machine en kunnen met + het volgende commando gedownload en geïnstalleerd + worden:</para> + + <screen>&prompt.root; <userinput>freebsd-update fetch</userinput> +&prompt.root; <userinput>freebsd-update install</userinput></screen> + + <para>Als er kernelpatches zijn toegepast moet het systeem opnieuw + opgestart worden. Als alles goed is gegaan dient het systeem + gepatcht te zijn en kan <command>freebsd-update</command> als + een nachtelijke &man.cron.8;-taak gedraaid worden. Een regel + in <filename>/etc/crontab</filename> zou genoeg moeten zijn om + deze taak te volbrengen:</para> + + <programlisting>@daily root freebsd-update cron</programlisting> + + <para>Deze regel verklaart dat eenmaal per dag het commando + <command>freebsd-update</command> gedraaid zal worden. Op deze + manier, door het argument <option>cron</option> te gebruiken, + zal <command>freebsd-update</command> alleen kijken of er + updates bestaan. Als er patches bestaan, zullen ze automatisch + worden gedownload naar de plaatselijke schijf maar niet worden + toegepast. Er zal een email aan de gebruiker + <username>root</username> worden verstuurd zodat ze handmatig + geïnstalleerd kunnen worden.</para> + + <para>Als er iets misging, heeft <command>freebsd-update</command> + de mogelijkheid om de laatste verzamelingen veranderingen terug + te draaien met het volgende commando:</para> + + <screen>&prompt.root; <userinput>freebsd-update rollback</userinput></screen> + + <para>Eenmaal voltooid, dient het systeem herstart te worden als + de kernel of enige kernelmodule is gewijzigd. Dit stelt &os; in + staat om de nieuwe binairen in het geheugen te laden.</para> + + <note> + <para>De <command>freebsd-update</command> werkt alleen met de + kernel <filename>GENERIC</filename>. Als er wijzigingen aan + de kernel <filename>GENERIC</filename> zijn gemaakt of er een + eigen kernel is geïnstalleerd, wordt + <command>freebsd-update</command> niet voltooid — + het zal falen in het eerste geval en een fout produceren in + het laatste.</para> + </note> + </sect2> + + <sect2> + <title>Grote en kleine upgrades</title> + + <para>Dit proces ruimt oude objectbestanden en bibliotheken op + waardoor de meeste applicaties van derde partijen kapot gaan. + Het wordt aangeraden dat alle geïnstalleerde poorten ofwel + verwijderd en geherinstalleerd worden of later ge-upgraded + worden met het hulpmiddel <filename + role="package">ports-mgmt/portupgrade</filename>. De meeste + gebruikers zullen willen proefdraaien met het volgende + commando:</para> + + <screen>&prompt.root; <userinput>portupgrade -af</userinput></screen> + + <para>Dit zorgt ervoor dat alles juist wordt geherinstalleerd. + Merk op dat het instellen van de omgevingsvariabele + <makevar>BATCH</makevar> op <literal>yes</literal> het antwoord + <literal>yes</literal> zal geven op alle prompts tijdens dit + proces, waardoor het niet nodig is om handmatig in het + bouwproces in te grijpen.</para> + + <para>Updates van grote en kleine versies kunnen worden uitgevoerd + door een uitgaveversie als doel aan + <command>freebsd-update</command> op te geven, het volgende + commando zal bijvoorbeeld updaten naar &os; 6.3:</para> + + <screen>&prompt.root; <userinput>freebsd-update -r 6.3-RELEASE upgrade</userinput></screen> + + <para>Nadat het commando is ontvangen, zal + <command>freebsd-update</command> het instellingenbestand en het + huidige systeem evalueren in een poging om de benodigde + informatie te verzamelen om het systeem te updaten. Een lijst + op het scherm zal aangeven welke componenten zijn gedetecteerd + en welke niet. Bijvoorbeeld:</para> + + <screen>Looking up update.FreeBSD.org mirrors... 1 mirrors found. +Fetching metadata signature for 6.3-BETA1 from update1.FreeBSD.org... done. +Fetching metadata index... done. +Inspecting system... done. + +The following components of FreeBSD seem to be installed: +kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games +src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue +src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin +world/base world/info world/lib32 world/manpages + +The following components of FreeBSD do not seem to be installed: +kernel/generic world/catpages world/dict world/doc world/games +world/proflibs + +Does this look reasonable (y/n)? y</screen> + + <para>Nu zal <command>freebsd-update</command> proberen om alle + bestanden die nodig zijn voor de upgrade te downloaden. In + sommige gevallen kan de gebruiker worden gevraagd wat te + installeren of hoe verder te gaan.</para> + + <para>Nadat alle patches zijn gedownload naar het plaatselijke + systeem zullen ze worden toegepast. Dit proces kan afhankelijk + van de snelheid en werklast van de machine even duren. Hierna + zullen instellingenbestanden worden samengevoegd — + voor dit gedeelte van het proces is enige tussenkomst van de + gebruiker nodig aangezien een bestand kan worden samengevoegd of + omdat er een tekstverwerker op het scherm kan verschijnen om het + bestand handmatig samen te voegen. Het resultaat van elke + succesvolle samenvoeging zal aan de gebruiker worden getoond + naarmate het proces verder gaat. Een mislukte of genegeerde + samenvoegpoging zal het proces afbreken. Het is mogelijk voor + gebruikers om een reservekopie van <filename + class="directory">/etc</filename> te maken en belangrijke + bestanden, zoals <filename>master.passwd</filename> of + <filename>group</filename>, later samen te voegen.</para> + + <note> + <para>Het systeem is nog niet veranderd, al het patchen en + samenvoegen gebeurt in een andere map. Wanneer alle patches + succesvol zijn toegepast, alle instellingenbestanden zijn + samengevoegd en het erop lijkt dat het proces soepel verloopt, + dienen de veranderingen verzegeld te worden door de + gebruiker.</para> + </note> + + <para>Als dit proces eenmaal voltooid is, kan de upgrade aan de + schijf toevertrouwd worden met het volgende commando.</para> + + <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen> + + <para>De kernel en kernelmodules zullen als eerste gepatcht + worden. Nu moet de machine opnieuw opgestart worden. Het + volgende commando kan gegeven worden om de machine te herstarten + en dus de nieuwe kernel in het geheugen te laden:</para> + + <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen> + + <para>Als het systeem weer actief is, moet + <command>freebsd-update</command> nogmaals gestart worden. + De toestand van het proces is opgeslagen en dus zal + <command>freebsd-update</command> niet vooraan beginnen, maar + zal het alle oude gedeelde bibliotheken en objectbestanden + verwijderen. Geef het volgende commando om verder te gaan op + dit punt:</para> + + <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen> + + <note> + <para>Afhankelijk van het feit of er versienummers van + bibliotheken zijn opgehoogd, kunnen er slechts twee in plaats + van drie installatiefasen zijn.</para> + </note> + + <para>Alle software van derde partijen dient nu opnieuw gebouwd en + geïnstalleerd te worden. Dit is nodig omdat + geïnstalleerde software van bibliotheken afhankelijk kan + zijn die tijdens het upgradeproces zijn verwijderd. Het + commando <filename + role="package">ports-mgmt/portupgrade</filename> kan gebruikt + worden om dit proces te automatiseren. Dit proces kan met de + volgende commando's gestart worden:</para> + + <screen>&prompt.root; <userinput>portupgrade -f ruby</userinput> +&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db</userinput> +&prompt.root; <userinput>portupgrade -f ruby18-bdb</userinput> +&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db</userinput> +&prompt.root; <userinput>portupgrade -af</userinput></screen> + + <para>Voltooi, nadat dit voltooid is, het upgradeproces met een + laatste aanroep naar <command>freebsd-update</command>. Geef + het volgende commando om alle losse eindjes in het upgradeproces + samen te knopen:</para> + + <screen>&prompt.root; <userinput>freebsd-update install</userinput></screen> + + <para>Start de machine opnieuw op in de nieuwe &os;-versie. Het + proces is voltooid.</para> + </sect2> + + <sect2> + <title>Het vergelijken van systeemtoestanden</title> + + <para>Het gereedschap <command>freebsd-update</command> kan + gebruikt worden om de toestand van de geïnstalleerde versie + van &os; met een bekende goede kopie te vergelijken. Deze optie + evalueert de huidige versie van systeemgereedschappen, + bibliotheken, en instellingenbestanden. Geef het volgende + commando om met de vergelijking te beginnen:</para> + + <screen>&prompt.root; <userinput>freebsd-update IDS >> uitvoerbestand.ids</userinput></screen> + + <warning> + <para>Hoewel de commandonaam <acronym>IDS</acronym> is, is het + in geen geval een vervanging voor een indringdetectiesysteem + zoals <filename role="package">security/snort</filename>. + Aangezien <command>freebsd-update</command> gegevens op schijf + opslaat, is de mogelijkheid om te knoeien duidelijk. Hoewel + deze mogelijkheid verminderd kan worden door de instelling + <varname>kern.securelevel</varname> te gebruiken en de + gegevens van <command>freebsd-update</command> op een + bestandssysteem dat alleen gelezen kan worden op te slaan + wanneer deze niet gebruikt worden, zou een betere oplossing + zijn om het systeem met een veilige schijf te vergelijken, + zoals een <acronym>DVD</acronym> of een veilig opgeslagen + externe <acronym>USB</acronym>-schijf.</para> + </warning> + + <para>Het systeem zal nu geïnspecteerd worden, en er zal een + lijst van hun &man.sha256.1;-hashwaarden, zowel de bekende + waarde in de uitgave en de huidige geïnstalleerde waarde, + afgebeeld worden. Hierom wordt de uitvoer naar het bestand + <filename>uitvoerbestand.ids</filename> gezonden. Het scrollt + te snel voorbij om het met het oog te vergelijken, en het vult + al snel de gehele consolebuffer op.</para> + + <para>Deze regels zijn ook extreem lang, maar het uitvoerformaat + kan vrij eenvoudig geparsed worden. Geef, om bijvoorbeeld een + lijst van alle bestanden te krijgen die verschillen van die in + de uitgave, het volgende commando:</para> + + <screen>&prompt.root; <userinput>cat uitvoerbestand.ids | awk '{ print $1 }' | more</userinput> +/etc/master.passwd +/etc/motd +/etc/passwd +/etc/pf.conf</screen> + + <para>Deze uitvoer is afgekapt, er bestaan veel meer bestanden. + Sommige van deze bestanden hebben natuurlijke veranderingen, het + <filename>/etc/passwd</filename> is gewijzigd omdat er + gebruikers aan het systeem zijn toegevoegd. In sommige gevallen + kunnen er andere bestanden zijn, zoals kernelmodules, die + verschillen aangezien <command>freebsd-update</command> ze + ge-updated kan hebben. Voeg, om bepaalde bestanden of mappen + uit te sluiten, deze toe aan de optie + <literal>IDSIgnorePaths</literal> in + <filename>/etc/freebsd-update.conf</filename>.</para> + + <para>Dit systeem kan gebruikt worden als deel van een uitgebreide + upgrademethode, afgezien van de eerder besproken versie.</para> + </sect2> + </sect1> + + <sect1 id="updating-portsnap"> + <title>Portsnap: een updategereedschap voor de Portscollectie</title> + + <para>Het basissysteem van &os; bevat ook een gereedschap om de + Portscollectie bij te werken: het hulpmiddel &man.portsnap.8;. + Wanneer het wordt uitgevoerd, zal het een verbinding maken met een + verre site, de veilige sleutel controleren, en een nieuwe kopie + van de Portscollectie downloaden. De sleutel wordt gebruikt om de + integriteit van alle gedownloade bestanden te controleren, om er + zeker van te zijn dat ze niet tijdens het downloaden zijn + gewijzigd. Geef het volgende commando om de nieuwste versie van + de bestanden van de Portscollectie te downloaden:</para> + + <screen>&prompt.root; <userinput>portsnap fetch</userinput> +Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. +Fetching snapshot tag from portsnap1.FreeBSD.org... done. +Fetching snapshot metadata... done. +Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. +Fetching 3 metadata patches.. done. +Applying metadata patches... done. +Fetching 3 metadata files... done. +Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. +Applying patches... done. +Fetching 133 new ports or files... done.</screen> + + <para>Dit voorbeeld laat zien dat &man.portsnap.8; verscheidene + patches heeft gevonden en deze met de huidige portsgegevens heeft + gecontroleerd. Het geeft ook aan dat het gereedschap eerder is + gedraaid, als het voor de eerste keer was gedraaid, had het + simpelweg de collectie gedownload.</para> + + <para>Wanneer &man.portsnap.8; succesvol een + <command>fetch</command>-operatie afrondt, bestaan de + Portscollectie en de vervolgpatches die de verificatie doorstaan + hebben op het plaatselijke systeem. De bijgewerkte bestanden + kunnen geïnstalleerd worden door het volgende te + typen:</para> + + <screen>&prompt.root; <userinput>portsnap extract</userinput> +/usr/ports/.cvsignore +/usr/ports/CHANGES +/usr/ports/COPYRIGHT +/usr/ports/GIDs +/usr/ports/KNOBS +/usr/ports/LEGAL +/usr/ports/MOVED +/usr/ports/Makefile +/usr/ports/Mk/bsd.apache.mk +/usr/ports/Mk/bsd.autotools.mk +/usr/ports/Mk/bsd.cmake.mk +<replaceable>...</replaceable></screen> + + <para>Het proces is nu compleet, en applicaties kunnen met de + bijgewerkte Portscollectie worden geïnstalleerd of worden + bijgewerkt.</para> + </sect1> +</chapter>