cutting-edge -> 1.227
This commit is contained in:
Remko Lodder 2007-12-27 20:03:26 +00:00
parent e01d1a2e1a
commit aca40872d7
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=31181

View file

@ -3,7 +3,7 @@
$FreeBSD$ $FreeBSD$
$FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.47 2006/01/07 11:27:42 siebrand Exp $ $FreeBSDnl: doc/nl_NL.ISO8859-1/books/handbook/cutting-edge/chapter.sgml,v 1.47 2006/01/07 11:27:42 siebrand Exp $
Gebaseerd op: 1.222 Gebaseerd op: 1.227
--> -->
<chapter id="cutting-edge"> <chapter id="cutting-edge">
@ -740,8 +740,7 @@
<para>Controleer <para>Controleer
<filename>/usr/share/examples/etc/make.conf</filename> <filename>/usr/share/examples/etc/make.conf</filename>
(<filename>/etc/defaults/make.conf</filename> in en <filename>/etc/make.conf</filename>. Het
&os;&nbsp;4.X) en <filename>/etc/make.conf</filename>. Het
eerste bestand bevat standaard definities, waarvan de meeste eerste bestand bevat standaard definities, waarvan de meeste
uitgecommentarieerd zijn. Om hiervan gebruik te maken als het uitgecommentarieerd zijn. Om hiervan gebruik te maken als het
systeem opnieuw opgebouwd wordt vanuit de broncode, moeten ze systeem opnieuw opgebouwd wordt vanuit de broncode, moeten ze
@ -752,10 +751,8 @@
daar redelijke waardes in te vullen voor een systeem.</para> daar redelijke waardes in te vullen voor een systeem.</para>
<para>Een typische gebruiker wil waarschijnlijk de regels <para>Een typische gebruiker wil waarschijnlijk de regels
<makevar>CFLAGS</makevar> en <makevar>NO_PROFILE</makevar> (of <makevar>CFLAGS</makevar> en <makevar>NO_PROFILE</makevar> uit
<makevar>NOPROFILE</makevar> in &os;&nbsp;5.X en ouder) uit
<filename>/usr/share/examples/etc/make.conf</filename> <filename>/usr/share/examples/etc/make.conf</filename>
(<filename>/etc/defaults/make.conf</filename> in &os;&nbsp;4.X)
kopieren naar <filename>/etc/make.conf</filename> en het kopieren naar <filename>/etc/make.conf</filename> en het
commentaar verwijderen.</para> commentaar verwijderen.</para>
@ -791,15 +788,6 @@
<filename>/var/spool/clientmqueue</filename> te <filename>/var/spool/clientmqueue</filename> te
cre&euml;ren.</para> cre&euml;ren.</para>
<para>De oplossing is om <filename>/usr/src/etc/group</filename>
te controleren en de lijst met groepen te vergelijken met die
van het bij te werken systeem. Als daar groepen bestaan die
nog niet op een systeem staan, moeten deze worden gekopieerd.
Hetzelfde geldt voor het hernoemen van groepen in
<filename>/etc/group</filename> die hetzelfde GID hebben maar
een andere naam dan in
<filename>/usr/src/etc/group</filename>.</para>
<para>&man.mergemaster.8; kan in voorbereidende modus gedraaid <para>&man.mergemaster.8; kan in voorbereidende modus gedraaid
worden als de optie <option>-p</option> wordt meegegeven. Dan worden als de optie <option>-p</option> wordt meegegeven. Dan
worden alleen de bestanden vergeleken die essentieel zijn voor worden alleen de bestanden vergeleken die essentieel zijn voor
@ -852,7 +840,7 @@
<screen>&prompt.root; <userinput>shutdown now</userinput></screen> <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
<para>Als alternatief kan tijdens het opstarten de optie <para>Als alternatief kan tijdens het opstarten de optie
<option>-s</option> worden meegegeven. Het systeem start dan <option>single user</option> worden gekozen. Het systeem start dan
in single-user modus. Op de shell prompt moet dan worden in single-user modus. Op de shell prompt moet dan worden
ingegeven:</para> ingegeven:</para>
@ -904,8 +892,8 @@
&prompt.root; <userinput>rm -rf *</userinput></screen> &prompt.root; <userinput>rm -rf *</userinput></screen>
</sect2> </sect2>
<sect2> <sect2 id="cutting-edge-recompilebase">
<title>Broncode hercompileren</title> <title>Broncode van het basis systeem hercompileren</title>
<sect3> <sect3>
<title>Uitvoer bewaren</title> <title>Uitvoer bewaren</title>
@ -1003,20 +991,18 @@ Script done, &hellip;</screen>
<screen>&prompt.root; <userinput>make <replaceable>doel</replaceable></userinput></screen> <screen>&prompt.root; <userinput>make <replaceable>doel</replaceable></userinput></screen>
<para>Het <maketarget>world</maketarget> doel is opgesplitst in <para>Waar <replaceable>doel</replaceable> een van de vele
twee delen: <maketarget>buildworld</maketarget> en bouw opties is. De eerste target moet echter altijd
<maketarget>installworld</maketarget>. Vanaf versie <makevar>buildworld</makevar> zijn.</para>
5.3 van &os; verandert <maketarget>world</maketarget>
dusdanig dat het helemaal niet meer werkt omdat het
gevaarlijk is voor de meeste gebruikers.</para>
<para>Zoals de namen impliceren bouwt <para>Zoals de namen impliceren bouwt
<maketarget>buildworld</maketarget> een compleet nieuwe boom <maketarget>buildworld</maketarget> een compleet nieuwe boom
onder <filename>/usr/obj</filename> en onder <filename>/usr/obj</filename> en
<maketarget>installworld</maketarget> installeert deze boom <maketarget>installworld</maketarget>, een andere target,
op de huidige machine.</para> installeert deze boom op de huidige machine.</para>
<para>Dit is erg handig om twee redenen. Als eerste biedt het <para>Het hebben van verschillende opties is handig om twee
redenen. Als eerste biedt het
de mogelijkheid om de bouw veilig te doen met de wetenschap de mogelijkheid om de bouw veilig te doen met de wetenschap
dat geen enkel draaiend onderdeel van een systeem geraakt dat geen enkel draaiend onderdeel van een systeem geraakt
wordt. De bouw is <quote>zelf ondersteunend</quote>. wordt. De bouw is <quote>zelf ondersteunend</quote>.
@ -1048,7 +1034,7 @@ Script done, &hellip;</screen>
<screen>&prompt.root; <userinput>make buildworld</userinput></screen> <screen>&prompt.root; <userinput>make buildworld</userinput></screen>
<para>Het is nu mogelijk om de optie <option>-j</option> mee te <para>Het is mogelijk om de optie <option>-j</option> mee te
geven aan <command>make</command>, wat resulteert in meerdere geven aan <command>make</command>, wat resulteert in meerdere
processen die tegelijkertijd draaien. Dit heeft het meeste processen die tegelijkertijd draaien. Dit heeft het meeste
effect op machines met meerdere processoren. Echter, omdat effect op machines met meerdere processoren. Echter, omdat
@ -1068,12 +1054,6 @@ Script done, &hellip;</screen>
<para>Als er meerdere processoren in een systeem zitten en <para>Als er meerdere processoren in een systeem zitten en
gebruik gemaakt wordt van een SMP kernel, probeer dan waardes gebruik gemaakt wordt van een SMP kernel, probeer dan waardes
tussen de 6 en 10 en bekijk hoe het systeem reageert.</para> tussen de 6 en 10 en bekijk hoe het systeem reageert.</para>
<para>Deze mogelijkheid is nog steeds fragiel en commits in de
broncode verbreken deze mogelijkheid vaak. Als het opnieuw
bouwen van de wereld mislukt, probeer dan nogmaals te
compileren zonder deze opties alvorens een probleemrapport
aan te maken.</para>
</sect3> </sect3>
<sect3> <sect3>
@ -1085,9 +1065,9 @@ Script done, &hellip;</screen>
<secondary>doorlooptijd</secondary> <secondary>doorlooptijd</secondary>
</indexterm> </indexterm>
<para>De doorlooptijd wordt door veel factoren be&iuml;nvloed. <para>Veel factoren bepalen de doorlooptijd van het bouwen van
Een 500&nbsp;MHz &pentium;&nbsp;III met 128&nbsp;MB ram doet een boom, maar redelijk recente machines doen er maar 1 tot
er ongeveer 2&nbsp;uur over om de &os.stable; boom te bouwen 2 uur over om de &os.stable; boom te bouwen.
zonder extra trucjes. Een &os.current; boom kan wat langer zonder extra trucjes. Een &os.current; boom kan wat langer
duren.</para> duren.</para>
</sect3> </sect3>
@ -1119,7 +1099,7 @@ Script done, &hellip;</screen>
een systeemcontrole kan erna een nieuwe kernel gebouwd worden een systeemcontrole kan erna een nieuwe kernel gebouwd worden
gebaseerd op een aangepast kernelinstellingenbestand.</para> gebaseerd op een aangepast kernelinstellingenbestand.</para>
<para>Op moderne versies van &os; is het belangrijk om de <para>Op &os; is het belangrijk om de
<link linkend="make-buildworld">wereld opnieuw te bouwen</link> <link linkend="make-buildworld">wereld opnieuw te bouwen</link>
voordat een nieuwe kernel gebouwd wordt.</para> voordat een nieuwe kernel gebouwd wordt.</para>
@ -1194,7 +1174,7 @@ Script done, &hellip;</screen>
</note> </note>
</sect2> </sect2>
<sect2> <sect2 id="make-installworld">
<title>Bestanden bijwerken die niet bijgewerkt zijn door <title>Bestanden bijwerken die niet bijgewerkt zijn door
<command>make installworld</command></title> <command>make installworld</command></title>
@ -1288,9 +1268,8 @@ Script done, &hellip;</screen>
<para>Zodra &man.mergemaster.8; klaar is met de systeembestanden <para>Zodra &man.mergemaster.8; klaar is met de systeembestanden
worden er andere opties getoond. &man.mergemaster.8; kan worden er andere opties getoond. &man.mergemaster.8; kan
vragen of het wachtwoordbestand opnieuw gebouwd moet worden vragen of het wachtwoordbestand opnieuw gebouwd moet worden.
en/of &man.MAKEDEV.8; gestart moet worden als er een versie van Als laatste wordt een optie getoond om
&os; voor 5.0 draait. Als laatste wordt een optie getoond om
alle overgebleven tijdelijke bestanden te verwijderen.</para> alle overgebleven tijdelijke bestanden te verwijderen.</para>
</sect3> </sect3>
@ -1309,7 +1288,7 @@ Script done, &hellip;</screen>
<para>Als &man.mergemaster.8; gebruikt wordt (zoals <para>Als &man.mergemaster.8; gebruikt wordt (zoals
aangeraden), kan doorgegaan worden met het <link aangeraden), kan doorgegaan worden met het <link
linkend="update-dev">volgende onderdeel</link>.</para> linkend="cutting-edge-rebooting">volgende onderdeel</link>.</para>
<para>De simpelste manier om met de hand bij te werken, is de <para>De simpelste manier om met de hand bij te werken, is de
bestanden in een nieuwe map installeren en daarna naar bestanden in een nieuwe map installeren en daarna naar
@ -1467,108 +1446,7 @@ Script done, &hellip;</screen>
</sect3> </sect3>
</sect2> </sect2>
<sect2 id="update-dev"> <sect2 id="cutting-edge-rebooting">
<title><filename>/dev</filename> bijwerken</title>
<note>
<indexterm><primary>DEVFS</primary></indexterm>
<para>Als &os;&nbsp;5.0 of later wordt gebruikt kan deze sectie
veilig overgeslagen worden. Deze versies gebruiken
&man.devfs.5; om apparaatnodes transparant aan te maken voor
gebruikers.</para>
</note>
<para>In veel gevallen herkent &man.mergemaster.8; dat het nodig
is om apparaatnodes bij te werken en aan te bieden en doet dat
automatisch. Hieronder wordt beschreven hoe apparaatnodes
handmatig bijgewerkt kunnen worden.</para>
<para>Om veiligheidsredenen bestaat dit proces uit meerdere
stappen.</para>
<procedure>
<step>
<para>Kopieer <filename>/var/tmp/root/dev/MAKEDEV</filename>
naar <filename>/dev</filename>:</para>
<screen>&prompt.root; <userinput>cp /var/tmp/root/dev/MAKEDEV /dev</userinput></screen>
<indexterm><primary><filename>MAKEDEV</filename></primary></indexterm>
<para>Als &man.mergemaster.8; is gebruikt om
<filename>/etc</filename> bij te werken is het script
<filename>MAKEDEV</filename> al aangepast. Het kan echter
geen kwaad om dit te controleren (met &man.diff.1;) en het
script indien nodig handmatig te kopieren.</para>
</step>
<step>
<para>Maak een afdruk van de huidige
<filename>/dev</filename>. Deze snapshot moet de
permissies, eigenaarschappen, grote en kleine nummers van
ieder bestand bevatten, maar niet de timestamps. De
makkelijkste manier om dit te doen is door &man.awk.1; te
gebruiken om er informatie uit te halen:</para>
<screen>&prompt.root; <userinput>cd /dev</userinput>
&prompt.root; <userinput>ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' &gt; /var/tmp/dev.out</userinput></screen>
</step>
<step>
<para>Cree&euml;r alle apparaatnodes opnieuw:</para>
<screen>&prompt.root; <userinput>sh MAKEDEV all</userinput></screen>
</step>
<step>
<para>Maak een tweede afdruk van de map, deze keer naar
<filename>/var/tmp/dev2.out</filename>. Bekijk nu door de
twee bestanden te vergelijken of er apparaatnodes niet zijn
aangemaakt. Dit hoort niet voor te komen, maar het kan
maar beter gecontroleerd zijn.</para>
<screen>&prompt.root; <userinput>diff /var/tmp/dev.out /var/tmp/dev2.out</userinput></screen>
<para>Als er verschillen zijn is het waarschijnlijk dat deze
in diskslices zitten. Om deze apparaatnodes opnieuw aan te
maken kan iets als het onderstaande commando gebruikt
worden:</para>
<screen>&prompt.root; <userinput>sh MAKEDEV sd0s1</userinput></screen>
<para>De precieze afwijkingen kunnen vari&euml;ren.</para>
</step>
</procedure>
</sect2>
<sect2>
<title><filename>/stand</filename> bijwerken</title>
<note>
<para>Deze stap is opgenomen om het proces compleet te maken.
Hij kan zonder problemen overgeslagen worden. Als
&os;&nbsp;5.2 of later wordt gebruikt, wordt de map
<filename>/rescue</filename> automatisch bijgewerkt met de
nieuwste, statisch gecompileerde binaire bestanden tijdens
<command>make installworld</command>, waardoor het overbodig
wordt om <filename>/stand</filename> bij te werken (bestaat
helemaal niet in &os;&nbsp;6.0 en later).</para>
</note>
<para>Volledigheidshalve is het misschien wenselijk de bestanden
in de map <filename>/stand</filename> bij te werken. Deze
bestanden bestaan uit harde links naar het binaire bestand
<filename>/stand/sysinstall</filename>. Dit bestand moet
statisch gelinkt zijn zodat het zonder tussenkomst van andere
bestandssystemen kan werken (in het bijzonder
<filename>/usr</filename>).
<screen>&prompt.root; <userinput>cd /usr/src/release/sysinstall</userinput>
&prompt.root; <userinput>make all install</userinput></screen>
</sect2>
<sect2>
<title>Herstarten</title> <title>Herstarten</title>
<para>Dit was het. Na een controle of alles op de juiste plaats <para>Dit was het. Na een controle of alles op de juiste plaats
@ -1731,11 +1609,6 @@ Script done, &hellip;</screen>
&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen> &prompt.root; <userinput>make -DNO_CLEAN all</userinput></screen>
<note>
<para>Gebruik in &os;&nbsp;5.X en ouder
<makevar>-DNOCLEAN</makevar>.</para>
</note>
<para>Dit maakt het werk van de vorige <command>make <para>Dit maakt het werk van de vorige <command>make
buildworld</command> niet ongedaan.</para> buildworld</command> niet ongedaan.</para>