Gentoo Archives: gentoo-user-fr

From: polytan <polytan@×××××.com>
To: gentoo-user-fr@l.g.o
Subject: Re: [gentoo-user-fr] Gentoo et boot PXE
Date: Fri, 22 Jun 2007 06:53:27
Message-Id: 741f8c060706212352g389de79bq4095df1a92f4fbac@mail.gmail.com
In Reply to: Re: [gentoo-user-fr] Gentoo et boot PXE by Sylvain TENOU
1 > Bonsoir,
2
3
4 Bonjour à toi :-)
5
6 J'ai passé ma soirée à mettre en place le tuto que tu m'as donné au départ.
7
8
9 Je crois avoir aussi passé plusieurs soirées à le faire marcher...
10
11 Après quelque péripéties (entre autre, compilation d'un noyau > 2.6.19
12
13
14 Pourquoi pas le dernier stable ? (2.6.20 je crois)
15
16 parce qu'il posait problème, et pas qu'à moi d'après ce que j'ai lu), j'ai
17 > enfin réussi à faire démarrer mon PC par PXE! :]
18 > Ça soulage d'y arriver enfin! :)
19
20
21 Je te comprends, ca me fait pareil à chaque fois et je crois que je vais
22 recommencer dès la semaine prochaine.
23
24 Mais maintenant, j'ai toujours le problème du montage de /usr au début de la
25 > séquence de boot :/.
26
27
28 Oui, ca permet d'avoir un /usr de la taille que tu veux, commun à toutes les
29 machines et après de copier quelques 30-32 Mo pour les clients et de les
30 personnaliser.
31
32 À vrai dire, pour cela j'ai pas encore très bien saisi le système :-S...
33
34
35 Il faut jouer avec les scripts au démarrage et avoir bien fait le fstab.
36
37 Pourrais-tu m'expliquer ce que tu as
38 > modifié, et les conséquences de ces modifications (s'il y en a d'autre que
39 > le démarrage du réseau en premier), pour avoir le démarrage du réseau
40 > avant le reste de la séquence de boot?
41 >
42 > Merci d'avance.
43
44
45 Bon, mettons les choses au clair : j'ai quelques scripts, mais...ce fut au
46 debut de ma connaissance de python et des fois, ben...c'est pas tres fun :)
47
48 J'ai fait dans un dossier une gentoo complète pour les machines clientes.
49 cela se trouvait dans /mnt/systeme_racine/ (une partition à part, mais ca ne
50 change pas grand chose à part booter dessus pour voir que ca marche sans
51 bidouiller :) )
52 les machines clientes sont dans /mnt/nodes/.
53 Pour chaque clients sont créés un dossier portant leur numéro ip (pour m'y
54 retrouver) et sont copié les fichiers necessaires.
55 je copie : /bin /sbin /usr/share/consolefont,consoletrans... (necesaire au
56 boot, on remontera /usr par dessus), /lib, /etc et /root
57 voila les scripts :
58
59 On prépare le terrain, j'ai plein de petits scripts pour tout préparer pour
60 les nodes (comment ca je suis une feignasse qui déteste les oéprations
61 répétitives ? :) )
62
63 faire_des_nodes.py
64
65 # -*- coding:UTF-8 -*-
66 from creer_repertoires import rep
67 from etcnodes import etc,hosts,dev,fastboot,perm
68 from copier_fichiers import copier_fichiers
69 from os import system,chdir
70 from fstab import fstab
71
72 nb = 12
73
74
75 # on crée les répertoires de base
76 rep(nb)
77
78 # On copie les fichiers pour que ca puisse démarrer
79 copier_fichiers(nb)
80
81 # On spécifie le etc pour chaque nodes :
82 # /etc/conf.d/net
83 # /etc/conf.d/hostname
84 # /etc/hosts
85 # /etc/fstab
86 etc(nb)
87 hosts(nb)
88 fstab(nb)
89 dev(nb)
90 fastboot(nb)
91 perm(nb)
92
93 Création des répertoires pour ensuite copier les fichiers dedans (oui,
94 j'aurais pu tout mettre dans un même scripts, mais pour les modif au
95 compte-goutte, c'est plus simple)
96
97 copier_repertoires.py
98
99 # -*- coding:UTF-8 -*-
100 # On crée les nodes pour booter le réseau
101
102 from os import chdir,mkdir
103
104 def rep(nb):
105 for i in range(1,nb+1,1):
106 chdir('/mnt/nodes')
107 rep = '192.168.32.' + str(i)
108 mkdir(rep)
109 liste =
110 ['etc','home','home/emcc','dev','proc','sys','tmp','mnt','root','var','usr','opt','mfs']
111 listvar = ['empty','lock','log','run','spool','tmp']
112 listusr =
113 ['bin','sbin','share','share/consolefonts','share/consoletrans','share/keymaps','share/zoneinfo','share/locale','share/locale/fr']
114 for j in liste:
115 mkdir('%s/%s' % (rep,j))
116 mkdir('%s/etc/conf.d' % (rep))
117 for j in listvar:
118 mkdir('%s/var/%s' % (rep,j))
119 for j in listusr:
120 mkdir('%s/usr/%s' % (rep,j))
121
122 préparation de /etc :
123
124 etcnodes.py
125
126 # -*- coding:UTF-8 -*-
127 # On configure le dossier etc des nodes
128 from os import system,mkdir,chdir
129
130 def etc(nb):
131 for i in range(1,nb+1,1):
132 ip = '192.168.32.' + str(i)
133 # system('touch /mnt/nodes/%s/etc/conf.d/net' % (ip))
134 # system('touch /mnt/nodes/%s/etc/conf.d/hostname' % (ip))
135 chdir('/mnt/nodes/%s/etc/conf.d' % (ip))
136 # f = open('net','w')
137 # t = 'iface_eth0="%s broadcast 192.168.255.255 netmask
138 255.255.255.0"\n'
139 % (ip)
140 # f.write(t)
141 # f.close()
142 f = open('hostname','w')
143 node = 'node' + str(i)
144 t = 'HOSTNAME="%s"\n' % (node)
145 f.write(t)
146 f.close()
147
148 def hosts(nb):
149 for i in range(1,nb+1,1):
150 ipi = '192.168.32.' + str(i)
151 # system('touch /mnt/nodes/%s/etc/hosts' % ipi)
152 chdir('/mnt/nodes/%s/etc' % ipi)
153 f = open('hosts','w')
154 node = 'node' + str(i)
155 t1 = '127.0.0.1 localhost %s \n' % node
156 f.write(t1)
157 for j in range(1,nb+1,1):
158 ip = '192.168.32.' + str(j)
159 nodej = 'node' + str(j)
160 t = '%s %s\n' % (ip,nodej)
161 f.write(t)
162 f.close()
163
164 def dev(nb):
165 for i in range(1,nb+1,1):
166 ip = '192.168.32.' + str(i)
167 system('mknod /mnt/nodes/%s/dev/console c 5 1' % ip)
168
169 def fastboot(nb):
170 for i in range(1,nb+1,1):
171 ip = '192.168.32.' + str(i)
172 system('touch /mnt/nodes/%s/fastboot' % ip)
173 system('echo "touch /fastboot" >>
174 /mnt/nodes/%s/etc/conf.d/local.start' % ip)
175
176 def perm(nb):
177 for i in range(1,nb+1,1):
178 ip = '192.168.32.' + str(i)
179 system('chmod a+rw -R /mnt/nodes/%s' % ip)
180 system('chmod a-rw -R /mnt/nodes/%s/etc' % ip)
181 system('chmod +rw -R /mnt/nodes/%s/etc' % ip)
182 system('chmod 600 -R /mnt/nodes/%s/etc/ssh' % ip)
183 system('chmod a+rw -R /mnt/nodes/%s/var' % ip)
184 system('chmod 700 -R /mnt/nodes/%s/var' % ip)
185
186 dans ce script, il y a surement des choses qui ne te serviront à rien. Il
187 faut que tu saches que je faisais des grappes de calcul openmosix à cette
188 époque...
189
190 copier_fichiers.py
191
192 # -*- coding:UTF-8 -*-
193 # Copie des fichiers nécessaire au boot
194 from os import system,chdir
195
196 def copier_fichiers(nb):
197 for i in range(1,nb+1,1):
198 ip = '192.168.32.' + str(i)
199 system('rsync -avz /mnt/systeme_racine/bin /mnt/nodes/%s'%ip)
200 system('rsync -avz /mnt/systeme_racine/sbin /mnt/nodes/%s'%ip)
201 system('rsync -avz /mnt/systeme_racine/lib /mnt/nodes/%s'%ip)
202 system('rsync -avz /mnt/systeme_racine/etc /mnt/nodes/%s'%ip)
203 system('rsync -avz /mnt/systeme_racine/root /mnt/nodes/%s'%ip)
204 # system('rsync -avz /mnt/systeme_racine/usr/bin
205 /mnt/nodes/%s/usr/'%ip)
206 # system('rsync -avz /mnt/systeme_racine/usr/sbin
207 /mnt/nodes/%s/usr/'%ip)
208 system('rsync -avz /mnt/systeme_racine/usr/share/consolefonts
209 /mnt/nodes/%s/usr/share/'%ip)
210 system('rsync -avz /mnt/systeme_racine/usr/share/consoletrans
211 /mnt/nodes/%s/usr/share/'%ip)
212 system('rsync -avz /mnt/systeme_racine/usr/share/keymaps
213 /mnt/nodes/%s/usr/share/'%ip)
214 system('rsync -avz /mnt/systeme_racine/usr/share/zoneinfo
215 /mnt/nodes/%s/usr/share/'%ip)
216 system('rsync -avz /mnt/systeme_racine/usr/share/locale/fr
217 /mnt/nodes/%s/usr/share/locale'%ip)
218 system('rsync -avz /mnt/systeme_racine/sys /mnt/nodes/%s'%ip)
219
220 Et enfin, le fstab
221
222 Oui, oui, c'est fini après :)
223
224 fstab.py
225
226 # -*- coding:UTF-8 -*-
227 # Création du fstab des nodes
228
229 def fstab(nb):
230 for i in range(1,nb+1,1):
231 ip = '192.168.32.' + str(i)
232 f = open('/mnt/nodes/%s/etc/fstab' % ip,'w')
233 t = '192.168.32.64:/mnt/nodes/%s / nfs
234 sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0\n' % ip
235 f.write(t)
236 t = '192.168.32.64:/mnt/systeme_racine/opt /opt nfs
237 auto,sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0\n'
238 f.write(t)
239 t = '192.168.32.64:/mnt/systeme_racine/usr /usr nfs
240 auto,sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0\n'
241 f.write(t)
242 t = '192.168.32.64:/home/emcc /home/emcc nfs
243 auto,sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0\n'
244 f.write(t)
245 f.close()
246
247 et voila, les bases sont faites.
248
249 Pour ne faire qu'un client, met nb à 1 :)
250
251 Bon, un petit dernier pour la route :)
252
253 tftpboot_default.py
254
255 # -*- coding:UTF-8 -*-
256 # Création du fichier pxedefault.cfg/default en fonction du nombre de nodes
257
258 f = open('/mnt/nodes/pxelinux.cfg/default','w')
259 for i in range(1,13,1):
260 label = 'LABEL '+str(i)+'\n'
261 ker = 'KERNEL kernel-2.4.30-om-r3 \n'
262 ip = '192.168.32.' + str(i)
263 app = 'APPEND ip=dhcp root=/dev/nfs
264 nfsroot=192.168.32.64:/mnt/nodes/%s\n \n' % (ip)
265 f.write(label)
266 f.write(ker)
267 f.write(app)
268 f.close()
269
270 mon /etc/export :
271
272 /mnt/nodes 192.168.32.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync)
273 /mnt/systeme_racine/opt
274 192.168.32.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync)
275 /mnt/systeme_racine/usr
276 192.168.32.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync)
277 /mnt/systeme_racine/home
278 192.168.32.0/255.255.255.0(ro,no_root_squash,no_all_squash,sync)
279
280
281
282 PS : Et bien au moins j'aurai bien avancé aujourd'hui! :) Merci grandement à
283 > toi! :)
284
285
286 Mais de rien, tout est sous GPL, fais-en ce que tu veux tant que ca reste
287 GPL ;)
288
289 S'il y a du emcc quelque part, c'est rien, c'était le programme que je
290 faisais tourner.
291 om c'est pour open mosix
292
293 Pour le démarrage, tu verra dans un des scripts, je modifie le local.start.
294
295 Il y a peut-etre (surement même) une facon plus simple de procéder. A
296 l'heure actuelle je ne sais pas.
297
298 Pour ce qui est de PXE, grub serait peut-être plus souple que pxelinux.
299 A voir.
300
301 Je suis parfois le soir sur jabber : polytan@×××××××.com
302
303 Si tu veux qu'on se recontre sur jabber, préviens moi, je verrais si je peux
304 venir (pas ce weekend par contre)
305 Peut-être veux-tu rester en communication grâce à la liste de diffusion,
306 pour qu'il y ait une trace, au choixe :)
307
308
309 --
310 > Cordialement,
311
312
313 Amicalement,
314
315 Sylvain TENOU.
316
317
318 polytan
319
320 PS : désolé pour la lecture et le blabla, que de bons souvenirs :D
321
322 polytan
323
324
325 --
326
327 -=( Polytan )=-

Replies

Subject Author
Re: [gentoo-user-fr] Gentoo et boot PXE Sylvain TENOU <tenou.sylvain@×××××.com>