Import translations for the updating and dtrace chapters.

Translated by:	Rene Ladan
submitted by:	Rene Ladan
Obtained from:	The FreeBSD Dutch Documentation Project
Facilitated by:	Snow B.V.
This commit is contained in:
Remko Lodder 2008-10-20 20:10:20 +00:00
parent 48fda33280
commit ee76ef3d50
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=33097
4 changed files with 1006 additions and 0 deletions
nl_NL.ISO8859-1/books/handbook

View file

@ -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"

View file

@ -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&eacute;</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 ... -->

View file

@ -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"

View file

@ -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&eacute;</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&iuml;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;&nbsp;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&iuml;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&iuml;nstalleerd *kunnen* worden en waarvan &os; Update uit dient te zoeken
# welke daadwerkelijk zijn ge&iuml;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&iuml;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&iuml;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&iuml;nstalleerd, wordt
<command>freebsd-update</command> niet voltooid&nbsp;&mdash;
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&iuml;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;&nbsp;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&nbsp;&mdash;
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&iuml;nstalleerd te worden. Dit is nodig omdat
ge&iuml;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&iuml;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 &gt;&gt; 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&iuml;nspecteerd worden, en er zal een
lijst van hun &man.sha256.1;-hashwaarden, zowel de bekende
waarde in de uitgave en de huidige ge&iuml;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&iuml;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&iuml;nstalleerd of worden
bijgewerkt.</para>
</sect1>
</chapter>