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$
$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">
@ -740,8 +740,7 @@
<para>Controleer
<filename>/usr/share/examples/etc/make.conf</filename>
(<filename>/etc/defaults/make.conf</filename> in
&os;&nbsp;4.X) en <filename>/etc/make.conf</filename>. Het
en <filename>/etc/make.conf</filename>. Het
eerste bestand bevat standaard definities, waarvan de meeste
uitgecommentarieerd zijn. Om hiervan gebruik te maken als het
systeem opnieuw opgebouwd wordt vanuit de broncode, moeten ze
@ -752,10 +751,8 @@
daar redelijke waardes in te vullen voor een systeem.</para>
<para>Een typische gebruiker wil waarschijnlijk de regels
<makevar>CFLAGS</makevar> en <makevar>NO_PROFILE</makevar> (of
<makevar>NOPROFILE</makevar> in &os;&nbsp;5.X en ouder) uit
<makevar>CFLAGS</makevar> en <makevar>NO_PROFILE</makevar> uit
<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
commentaar verwijderen.</para>
@ -791,15 +788,6 @@
<filename>/var/spool/clientmqueue</filename> te
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
worden als de optie <option>-p</option> wordt meegegeven. Dan
worden alleen de bestanden vergeleken die essentieel zijn voor
@ -852,7 +840,7 @@
<screen>&prompt.root; <userinput>shutdown now</userinput></screen>
<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
ingegeven:</para>
@ -904,8 +892,8 @@
&prompt.root; <userinput>rm -rf *</userinput></screen>
</sect2>
<sect2>
<title>Broncode hercompileren</title>
<sect2 id="cutting-edge-recompilebase">
<title>Broncode van het basis systeem hercompileren</title>
<sect3>
<title>Uitvoer bewaren</title>
@ -1003,20 +991,18 @@ Script done, &hellip;</screen>
<screen>&prompt.root; <userinput>make <replaceable>doel</replaceable></userinput></screen>
<para>Het <maketarget>world</maketarget> doel is opgesplitst in
twee delen: <maketarget>buildworld</maketarget> en
<maketarget>installworld</maketarget>. Vanaf versie
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>Waar <replaceable>doel</replaceable> een van de vele
bouw opties is. De eerste target moet echter altijd
<makevar>buildworld</makevar> zijn.</para>
<para>Zoals de namen impliceren bouwt
<maketarget>buildworld</maketarget> een compleet nieuwe boom
onder <filename>/usr/obj</filename> en
<maketarget>installworld</maketarget> installeert deze boom
op de huidige machine.</para>
<maketarget>installworld</maketarget>, een andere target,
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
dat geen enkel draaiend onderdeel van een systeem geraakt
wordt. De bouw is <quote>zelf ondersteunend</quote>.
@ -1048,7 +1034,7 @@ Script done, &hellip;</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
processen die tegelijkertijd draaien. Dit heeft het meeste
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
gebruik gemaakt wordt van een SMP kernel, probeer dan waardes
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>
@ -1085,9 +1065,9 @@ Script done, &hellip;</screen>
<secondary>doorlooptijd</secondary>
</indexterm>
<para>De doorlooptijd wordt door veel factoren be&iuml;nvloed.
Een 500&nbsp;MHz &pentium;&nbsp;III met 128&nbsp;MB ram doet
er ongeveer 2&nbsp;uur over om de &os.stable; boom te bouwen
<para>Veel factoren bepalen de doorlooptijd van het bouwen van
een boom, maar redelijk recente machines doen er maar 1 tot
2 uur over om de &os.stable; boom te bouwen.
zonder extra trucjes. Een &os.current; boom kan wat langer
duren.</para>
</sect3>
@ -1119,7 +1099,7 @@ Script done, &hellip;</screen>
een systeemcontrole kan erna een nieuwe kernel gebouwd worden
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>
voordat een nieuwe kernel gebouwd wordt.</para>
@ -1194,7 +1174,7 @@ Script done, &hellip;</screen>
</note>
</sect2>
<sect2>
<sect2 id="make-installworld">
<title>Bestanden bijwerken die niet bijgewerkt zijn door
<command>make installworld</command></title>
@ -1288,9 +1268,8 @@ Script done, &hellip;</screen>
<para>Zodra &man.mergemaster.8; klaar is met de systeembestanden
worden er andere opties getoond. &man.mergemaster.8; kan
vragen of het wachtwoordbestand opnieuw gebouwd moet worden
en/of &man.MAKEDEV.8; gestart moet worden als er een versie van
&os; voor 5.0 draait. Als laatste wordt een optie getoond om
vragen of het wachtwoordbestand opnieuw gebouwd moet worden.
Als laatste wordt een optie getoond om
alle overgebleven tijdelijke bestanden te verwijderen.</para>
</sect3>
@ -1309,7 +1288,7 @@ Script done, &hellip;</screen>
<para>Als &man.mergemaster.8; gebruikt wordt (zoals
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
bestanden in een nieuwe map installeren en daarna naar
@ -1467,108 +1446,7 @@ Script done, &hellip;</screen>
</sect3>
</sect2>
<sect2 id="update-dev">
<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>
<sect2 id="cutting-edge-rebooting">
<title>Herstarten</title>
<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>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
buildworld</command> niet ongedaan.</para>