aboutsummaryrefslogtreecommitdiff
path: root/fr_FR.ISO8859-1/books/faq/hackers.sgml
blob: a783be2f81f04f39b728b08685d7aca440fca07d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
<!--
	The FreeBSD Documentation Project
	The FreeBSD French Documentation Project
         
        $FreeBSD$ 
        Original revision: n.nn
--> 

  <chapter id="hackers">
    <title>Pour les passionn&eacute;s</title>
    
    <sect1>
      <title>Que sont les SNAP et RELEASE</title>

      <para>Il y a actuellement 3 branches actives/semi-actives dans
<ulink  url="http://www.freebsd.org/cgi/cvsweb.cgi">l'entrepot
CVS</ulink> des sources de FreeBSD:
<itemizedlist>
	  <listitem>
	    <para>RELENG_2_1_0 encore appel&eacute;e 2.1-stable ou branche 2.1</para>
	  </listitem>
	  <listitem>
	    <para>RELENG_2_2 encore appel&eacute;e 2.2-stable ou branche
2.2</para>
	  </listitem>
	  <listitem>
	    <para>HEAD encore appel&eacute;e -current ou 3.0-current</para>
	    </listitem>
	</itemizedlist></para>

      <para>HEAD n'est pas vraiment une branche, compar&eacute;e aux deux
autres, c'est juste une valeur symbolique constante pour d&eacute;signer
le r&eacute;pertoire de la version courante(ou version de d&eacute;veloppement), auquel
nous nous r&eacute;f&eacute;rerons sous le nom de -current.</para>
      
      <para>Actuellement -current est la branche de d&eacute;veloppement de
la version 3.0 r&eacute;sultant de la s&eacute;paration de la branche 2.2-stable(RELENG_2_2)
en Novembre 1996.</para>

      <para>La branche 2.1-stable, RELENG_2_1_0, s'&eacute;tant s&eacute;par&eacute;e de
-current en Septembre 1994.</para>
    </sect1>
    
    <sect1>
      <title>Comment cr&eacute;er ma propre version</title>

      <para>Pour cr&eacute;er votre propre version, vous devez effectuer trois 
choses. Premi&egrave;rement, vous devez avoir un noyau contenant le
gestionnaire <ulink
url="http://www.freebsd.org/cgi/man.cgi?vn">vn</ulink>. Ajoutez la
ligne suivante au fichier de configuration du noyau, puis reconstruisez le.</para>


<programlisting>
 pseudo-device vn         #Vnode driver (turns a file into a device)
</programlisting>

      <para>Ensuite, vous devez disposer de l'arbre CVS au
complet. Pour l'obtenir, vous pouvez utiliser <ulink
url="../handbook/synching.html">CVSUP</ulink> et remplissez votre fichier
de configuration de cvsup de la fa&ccedil;on suivante:</para> 
      
<programlisting>
*default prefix=/home/ncvs 
*default base=/a 
*default host=cvsup.FreeBSD.org 
*default release=cvs 
*default delete compress use-rel-suffix 

## Main Source Tree 
src-all 
src-eBones 
src-secure 

# Other stuff 
ports-all 
www 
doc-all 
</programlisting>

      <para>Ensuite lancez la commande <filename>cvsup -g
fichier_de_configuration_de_cvsup</filename> pour rapatrier tous les 
sources sur votre machine</para>

      <para>Pour finir, vous devez disposez de beaucoup de place sur
vos disque pour compiler le tout. Disons que cela se trouve dans le
r&eacute;pertoire <filename>/tres/gros/systeme/de/fichiers</filename> et que
l'arbre CVS se trouve dans <filename>/home/ncvs</filename></para>


<programlisting>
setenv CVSROOT /home/ncvs   # ou export CVSROOT=/hom/ncvs (pour du sh)
cd /usr/src/release
make release 
BUILDNAME=3.0-MY-SNAP CHROOTDIR=/tres/gros/systeme/de/fichiers
</programlisting>

      <para>Une distribution compl&egrave;te sera alors cr&eacute;e dans le
r&eacute;pertoire <filename>/tres/gros/systeme/de/fichiers</filename> et vous 
disposerez d'un programme d'installation ftp utilisant ce r&eacute;pertoire
par d&eacute;faut. Vous pouvez aussi d&eacute;cider de compiler autre chose que la version -current
en donnant au param&egrave;tre <filename>RELEASETAG</filename> une autre
valeur. Par exemple pour compiler une version 2.2, il suffit de passer 
la valeur <filename>RELEASETAG=RELENG_2_2</filename> &agrave; la ligne de
commande de make.</para>

    </sect1>

    <sect1>
      <title>Comment cr&eacute;er une disquette d'installation personnalis&eacute;e?</title>

      <para>Le processus de cr&eacute;ation, des disquettes d'installation
ainsi que des archives binaires, est automatis&eacute; par diff&eacute;rentes cibles 
dans le fichier <filename>/usr/src/release/Makefile</filename>. Ce
fichier doit etre votre point de d&eacute;part pour plus d'informations. Bien sur,
cela veut dire que vous devrez faire un <quote>make world</quote> et
que cela demande  beaucoup d'espace disque et de temps.</para>

    </sect1>

    <sect1>
      <title><quote>make world</quote> remplace-t-il tous les binaires d&eacute;ja install&eacute;s?</title>

      <para>Oui.Comme son nom le sugg&egrave;re,<quote>make world</quote>
recompile tout le syst&egrave;me depuis les sources, donc vous pouvez etre
sur d'avoir un syst&egrave;me sain et coh&eacute;rent &agrave; la fin (cela peut prendre
&eacute;norm&eacute;ment de temps pour y arriver).</para>

      <para>Si la variable <filename>DESTDIR</filename> est d&eacute;finie
lorsque vous &eacute;xecutez <quote>make world</quote> ou <quote>make
install</quote>, les binaires seront install&eacute;s dans la m&ecirc;me
arborescence que votre syst&egrave;me sauf que la racine du nouveau syst&egrave;me
sera <filename>&dollar;&lcub;DESTDIR&rcub;</filename>. Diff&eacute;rentes
combinations dans la modification des librairies partag&eacute;es et dans les 
programmes, peut entrainer une erreur du <quote>make
world</quote>.</para>

      </sect1>
    <sect1>
      <title>Lorsque le syst&egrave;me d&eacute;marre, il affiche <quote>(bus speed defaulted)</quote></title>
      <para>Les cartes SCSI Adaptec 1542 permettent d'acc&eacute;der &agrave; la
configuration de la vitesse du bus par logiciel. Les anciennes
versions du gestionnaire de p&eacute;riph&eacute;rique 1542 essayaient de d&eacute;terminer 
la vitesse maximale utiliable et de configurer la carte &agrave; cette
valeur. Nous avons trouv&eacute; que cela pouvait casser certains syst&egrave;mes,
donc vous devez d&eacute;finir l'option
<filename>TUNE&lowbar;1542</filename> dans le fichier de configuration 
du noyau, pour que cela soit actif. En l'utilisant sur des syst&egrave;mes ou 
la carte le supporte, cela vous permettra d'avoir une meilleur vitesse 
pour vos disques, mais sur des syst&egrave;me ne le supportant pas vous
obtiendrez des donn&eacute;es corrompues.</para>
     
    </sect1>
    
    <sect1>
      <title>Puis-je me tenir &agrave; jour par rapport &agrave; -current si j'ai un acc&egrave;s limit&eacute; &agrave; l'Internet?</title>
      <para>Oui, vous pouvez le faire sans t&eacute;l&eacute;charger l'arbre complet 
des sources en utilisant la fonctionnalit&eacute;e <ulink
url="../handbook/synching.html">CTM</ulink></para>

    </sect1>
    
    <sect1>
      <title>Comment faire pour couper la distribution en fichiers de 240Ko?</title>
      <para>Les syst&egrave;mes BSD r&eacute;cents diposent d'une option
<quote><filename>-b</filename></quote> pour vous permettre de d&eacute;couper 
les fichiers binaires en plusieurs parties</para>
      <para>Voici un exemple, tir&eacute; de
<filename>/usr/src/Makefile</filename>.</para>

<programlisting>
bin-tarball: 
	(cd $&lcub;DISTDIR&rcub;; \ 
        tar cf - . \ 
        gzip --no-name -9 -c | \ 
        split -b 240640 - \ 
        $&lcub;RELEASEDIR&rcub;/tarballs/bindist/bin_tgz.) 
</programlisting>
    </sect1>
    <sect1>
      <title>J'ai &eacute;crit une extension pour le noyau, comment l'incorporer?</title>
      <para>Regardez la partie du handbook sur la fa&ccedil;on de <ulink
url="../handbook/contrib.html">soumettre du code</ulink></para>
      <para>Et encore merci pour tout.</para>
    </sect1>

    <sect1>
      <title>Comment sont d&eacute;tect&eacute;es les cartes plugs and play ISA?</title>
      
      <para>Contribution de <ulink url="mailto:uhclem@nemesis.lonestar.org">Frank Durda IV</ulink></para>
      
      <para>Il y a un certains nombres de ports d'entr&eacute;es/sorties sur
lesquels la plupart des cartes PnP r&eacute;pondent lorsqu'une machine
interroge le bus ISA. Donc, lorsque la routine de d&eacute;tection PnP
s'execute, elle interroge les cartes PnP sur ces ports pour savoir
lesquelles sont pr&eacute;sentes. Dans ce cas toutes les cartes r&eacute;pondent en
indiquant leur mod&egrave;le et la routine de d&eacute;tection re&ccedil;oit alors une
valeur qui est soit <quote>oui</quote> soit rien. Au minimum un bit
est mis &agrave; 1 lors de la r&eacute;ponse. Alors le code de d&eacute;tection peut
essayer de dialoguer avec les cartes, gra&ccedil;e aux num&eacute;ros de mod&egrave;le de
cartes (d&eacute;finis par Microsoft/Intel), inf&eacute;rieurs &agrave; X pour leur dire de 
s'arr&eacute;ter. Il v&eacute;rifie alors qu'aucune autre carte ne r&eacute;pond &agrave; la
question pr&eacute;cedente. Si la r&eacute;ponse est <emphasis>0</emphasis> alors il
consid&egrave;re  qu'aucune carte n'a d'ID au dessus de X. Ensuite il
interroge le bus pour obtenir la liste des cartes sous
<quote>X</quote>. S'il en trouve alors il interroge le bus pour avoir
la liste des celles ayant un ID sup&eacute;rieur &agrave; X-(limit/4). Et r&eacute;p&egrave;te
ainsi de suite l'algorithme, qui consiste &agrave; diviser l'intervalle de
recherche par deux. Avec cet algorithme, les cartes seront d&eacute;couvertes 
avec un maximum d'it&eacute;ration de 2^64.</para>

      <para>Les Identifiants de cartes sont cod&eacute;s sur 32 bits + 8 bit
de checksum. Les 32 premiers bits repr&eacute;sentent le code de la carte
pour le constructeur de cette carte. Il arrive de trouver plusieurs
cartes du meme constructeur ayant diff&eacute;rents code de carte. L'id&eacute;e de
coder sur 32 bits le nom du constructeur serait un peu
excessif.</para>

      <para>Les 32 bits de poids faibles sont le num&eacute;ro de s&eacute;rie de la 
carte; l'adresse ethernet , ou quelque chose rendant la carte unique
par ce num&eacute;ro. Le constructeur ne doit jamais produire une deuxi&egrave;me
carte ayant ce meme num&eacute;ro tout en ayant le meme nombre repr&eacute;sent&eacute; sur 
les 32 premiers bits. Vous pouvez dons avoir plusieurs cartes du meme
type dans votre ordinateur , et l'ensemble des 64 bits permet de
rendre chacune unique.</para>
      
      <para>Les groupes de 32 bits ne peuvent en aucun cas etre tous
&agrave; z&eacute;ro. Cela permet d'effectuer le <quote>OU</quote> pour afficher les 
bits non nuls lors de la premi&egrave;re recherche dicotomique.</para>
      
      <para>Lorsque le syst&egrave;me &agrave; d&eacute;tecter toutes les cartes pr&eacute;sentes, 
ils les r&eacute;activent une &agrave; une, et recherche les ressources dont elles
ont besoin, quels sont les choix possibles pour les interruptions,
etc. Un <quote>scan</quote> de toutes les cartes est effectu&eacute; pour
collecter toutes ces informations.</para>
      
      <para>Cette information est combin&eacute;e avec l'information
recueillie des fichiers ECU se trouvant sur le disque dur ou dans le
BIOS. Le support ECU et BIOS du plug-and-play pour le mat&eacute;riel est
tr&egrave;s simple, et les p&eacute;riph&eacute;rique n'ont pas besoin d'etre vraiment
PnP. Mais en examinant les informations du BIOS et des fichiers ECU,
les routines d'interrogations peuvent permettre aux p&eacute;riph&eacute;riques
PnP <quote>to avoid those devices the probe code cannot
relocate. </quote></para>

      <para>Alors les p&eacute;riph&eacute;riques PnP sont encore interrog&eacute;s, et
renvoient leur IRQ, adresse m&eacute;moire, ports d'entr&eacute;e/sorties et
DMA. Les p&eacute;riph&eacute;riques sont alors activ&eacute;s, en prenant en compte ces
valeurs, et le reste jusqu'au prochaine red&eacute;marrage du syst&egrave;me. Bien
sur rien de vous empeche de les retirer, si le mat&eacute;riel le permet
:-).</para>

      <para>Ceci n'explique pas toute la complexit&eacute; de d&eacute;tection, mais
c'est une explication simple du processus de d&eacute;tection.</para>

<!--       <p>Microsoft took over some of the primary printer status ports to -->
<!--       do PnP, on the logic that no boards decoded those addresses for -->
<!--       the opposing I/O cycles.  I found a genuine IBM printer board -->
<!--       that did decode writes of the status port during the early PnP -->
<!--       proposal review period, but MS said ``tough''.  So they do a -->
<!--       write to the printer status port for setting addresses, plus that -->
<!--       use that address + <tt/0x800/, and a third I/O port for reading -->
<!--       that can be located anywhere between <tt/0x200/ and <tt/0x3ff/. -->

    </sect1>
    <sect1>
      <title>Est-ce que FreeBSD va supporter d'autres architectures mat&eacute;rielles?</title>

      <para>Diff&eacute;rentes personnes sont interress&eacute;es sur un support
multi-architecture pour FreeBSD, et certaines personnes sont en train
de porter FreeBSD sur la plateforme ALPHA, en coop&eacute;ration avec
DEC. Pour plus d'informations sur les nouvelles architectures utilisez 
la mailling liste <ulink
url="mailto:&lt;freebsd-platforms@FreeBSD.ORG&gt;">&lt;freebsd-platforms@FreeBSD.ORG&gt;</ulink>
</para>
    </sect1>

    <sect1>
      <title>J'ai besoin d'un <quote>major number</quote> pour un gestionnaire de p&eacute;riph&eacute;rique que je viens d'&eacute;crire</title>
      <para>Ceci d&eacute;pend du fait que vous vouliez ou non rendre public ce
gestionnaire. Si vous le d&eacute;sirez, envoyez nous une copie code source
du gestionnaire et les modifications n&eacute;cessaires &agrave; apporter au fichier 
<filename>files.i386</filename>, un fichier de configuration et le
code du fichier <ulink
url="http://www.freebsd.org/cgi/man.cgi?MAKEDEV">MAKEDEV</ulink>n&eacute;cessaire 
pour cr&eacute;er les fichiers sp&eacute;ciaux dont le gestionnaire &agrave; besoin. Si
vous ne d&eacute;sirez pas rendre plublic le code, ou si vous ne pouvez pas &agrave; 
cause de certaines restrictions de votre license, alors utilisez le
<quote>major number</quote> 32 (pour les gestionnaires de type
caract&egrave;re) et le <quote>major number</quote> 8 (pour les gestionnaires 
de type blocs), qui sont r&eacute;serv&eacute;s &agrave; ce type de chose. Dans les deux
cas nous sommes interess&eacute;s par votre gestionnaire, discutez &agrave; son
propos sur la mailling liste <ulink
url="mailto:&lt;freebsd-hackers@FreeBSD.ORG&gt;">&lt;freebsd-hackers@FreeBSD.ORG&gt;</ulink>.</para>

      </sect1>
    
  </chapter>