1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
|
5
|
<head>
|
6
|
<title>Installer un serveur Eclair dans un conteneur LXC</title>
|
7
|
|
8
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
9
|
<meta name="generator" content="Org-mode" />
|
10
|
<meta name="author" content="Daniel Dehennin" />
|
11
|
<style type="text/css">
|
12
|
<![CDATA[/*><!--*/
|
13
|
.title { text-align: center; }
|
14
|
.todo { font-family: monospace; color: red; }
|
15
|
.done { color: green; }
|
16
|
.tag { background-color: #eee; font-family: monospace;
|
17
|
padding: 2px; font-size: 80%; font-weight: normal; }
|
18
|
.timestamp { color: #bebebe; }
|
19
|
.timestamp-kwd { color: #5f9ea0; }
|
20
|
.right { margin-left: auto; margin-right: 0px; text-align: right; }
|
21
|
.left { margin-left: 0px; margin-right: auto; text-align: left; }
|
22
|
.center { margin-left: auto; margin-right: auto; text-align: center; }
|
23
|
.underline { text-decoration: underline; }
|
24
|
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
|
25
|
p.verse { margin-left: 3%; }
|
26
|
pre {
|
27
|
border: 1px solid #ccc;
|
28
|
box-shadow: 3px 3px 3px #eee;
|
29
|
padding: 8pt;
|
30
|
font-family: monospace;
|
31
|
overflow: auto;
|
32
|
margin: 1.2em;
|
33
|
}
|
34
|
pre.src {
|
35
|
position: relative;
|
36
|
overflow: visible;
|
37
|
padding-top: 1.2em;
|
38
|
}
|
39
|
pre.src:before {
|
40
|
display: none;
|
41
|
position: absolute;
|
42
|
background-color: white;
|
43
|
top: -10px;
|
44
|
right: 10px;
|
45
|
padding: 3px;
|
46
|
border: 1px solid black;
|
47
|
}
|
48
|
pre.src:hover:before { display: inline;}
|
49
|
pre.src-sh:before { content: 'sh'; }
|
50
|
pre.src-bash:before { content: 'sh'; }
|
51
|
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
|
52
|
pre.src-R:before { content: 'R'; }
|
53
|
pre.src-perl:before { content: 'Perl'; }
|
54
|
pre.src-java:before { content: 'Java'; }
|
55
|
pre.src-sql:before { content: 'SQL'; }
|
56
|
|
57
|
table { border-collapse:collapse; }
|
58
|
caption.t-above { caption-side: top; }
|
59
|
caption.t-bottom { caption-side: bottom; }
|
60
|
td, th { vertical-align:top; }
|
61
|
th.right { text-align: center; }
|
62
|
th.left { text-align: center; }
|
63
|
th.center { text-align: center; }
|
64
|
td.right { text-align: right; }
|
65
|
td.left { text-align: left; }
|
66
|
td.center { text-align: center; }
|
67
|
dt { font-weight: bold; }
|
68
|
.footpara:nth-child(2) { display: inline; }
|
69
|
.footpara { display: block; }
|
70
|
.footdef { margin-bottom: 1em; }
|
71
|
.figure { padding: 1em; }
|
72
|
.figure p { text-align: center; }
|
73
|
.inlinetask {
|
74
|
padding: 10px;
|
75
|
border: 2px solid gray;
|
76
|
margin: 10px;
|
77
|
background: #ffffcc;
|
78
|
}
|
79
|
#org-div-home-and-up
|
80
|
{ text-align: right; font-size: 70%; white-space: nowrap; }
|
81
|
textarea { overflow-x: auto; }
|
82
|
.linenr { font-size: smaller }
|
83
|
.code-highlighted { background-color: #ffff00; }
|
84
|
.org-info-js_info-navigation { border-style: none; }
|
85
|
#org-info-js_console-label
|
86
|
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
|
87
|
.org-info-js_search-highlight
|
88
|
{ background-color: #ffff00; color: #000000; font-weight: bold; }
|
89
|
/*]]>*/-->
|
90
|
</style>
|
91
|
<script type="text/javascript">
|
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
|
function CodeHighlightOn(elem, id)
|
118
|
{
|
119
|
var target = document.getElementById(id);
|
120
|
if(null != target) {
|
121
|
elem.cacheClassElem = elem.className;
|
122
|
elem.cacheClassTarget = target.className;
|
123
|
target.className = "code-highlighted";
|
124
|
elem.className = "code-highlighted";
|
125
|
}
|
126
|
}
|
127
|
function CodeHighlightOff(elem, id)
|
128
|
{
|
129
|
var target = document.getElementById(id);
|
130
|
if(elem.cacheClassElem)
|
131
|
elem.className = elem.cacheClassElem;
|
132
|
if(elem.cacheClassTarget)
|
133
|
target.className = elem.cacheClassTarget;
|
134
|
}
|
135
|
|
136
|
</script>
|
137
|
</head>
|
138
|
<body>
|
139
|
<div id="content">
|
140
|
<h1 class="title">Installer un serveur Eclair dans un conteneur LXC</h1>
|
141
|
<div id="table-of-contents">
|
142
|
<h2>Table des matières</h2>
|
143
|
<div id="text-table-of-contents">
|
144
|
<ul>
|
145
|
<li><a href="#sec-1">1. Créer et paramétrer un conteneur Ubuntu (presque) standard</a>
|
146
|
<ul>
|
147
|
<li><a href="#sec-1-1">1.1. Créer un conteneur Ubuntu</a></li>
|
148
|
<li><a href="#sec-1-2">1.2. Configurer le conteneur</a></li>
|
149
|
<li><a href="#sec-1-3">1.3. Créer des périphériques dans le conteneur</a></li>
|
150
|
<li><a href="#sec-1-4">1.4. Installer la clef SSH publique pour se connecter en root</a></li>
|
151
|
<li><a href="#sec-1-5">1.5. Configurer les sources APT</a></li>
|
152
|
<li><a href="#sec-1-6">1.6. Configurer le proxy temporairement pour APT</a></li>
|
153
|
<li><a href="#sec-1-7">1.7. Configurer le proxy pour Wget</a></li>
|
154
|
<li><a href="#sec-1-8">1.8. Configurer apparmor pour autoriser le montage NFS dans LXC</a></li>
|
155
|
<li><a href="#sec-1-9">1.9. Démarrer le conteneur éclair</a></li>
|
156
|
</ul>
|
157
|
</li>
|
158
|
<li><a href="#sec-2">2. Transformer le conteneur en serveur EOLE</a>
|
159
|
<ul>
|
160
|
<li><a href="#sec-2-1">2.1. Se connecter dans le conteneur</a></li>
|
161
|
<li><a href="#sec-2-2">2.2. Installer la clef GPG qui signe les paquets EOLE</a></li>
|
162
|
<li><a href="#sec-2-3">2.3. Mettre à jour les indexes de paquets</a></li>
|
163
|
<li><a href="#sec-2-4">2.4. Installer les paquets Eclair</a></li>
|
164
|
<li><a href="#sec-2-5">2.5. Désactiver les services rng-tools et gpm</a></li>
|
165
|
<li><a href="#sec-2-6">2.6. Terminer l’installation</a></li>
|
166
|
<li><a href="#sec-2-7">2.7. Vérifier qu’il ne reste plus rien à installer</a></li>
|
167
|
<li><a href="#sec-2-8">2.8. Désactiver la détection automatique des noms de carte réseau</a></li>
|
168
|
</ul>
|
169
|
</li>
|
170
|
<li><a href="#sec-3">3. Préparer le serveur Scribe</a></li>
|
171
|
<li><a href="#sec-4">4. Configurer le serveur Eclair</a>
|
172
|
<ul>
|
173
|
<li><a href="#sec-4-1">4.1. Connectez vous à votre serveur AmonEcole avec le transfert X11</a></li>
|
174
|
<li><a href="#sec-4-2">4.2. Connectez vous au conteneur Eclair avec le transfert X11</a></li>
|
175
|
<li><a href="#sec-4-3">4.3. Autoriser le TFTP sur l’interface eth0 en mode 2 cartes</a></li>
|
176
|
<li><a href="#sec-4-4">4.4. Définissez votre mot de passe root (pour vous connecter à GenConfig)</a></li>
|
177
|
<li><a href="#sec-4-5">4.5. Démarrer GenConfig</a></li>
|
178
|
<li><a href="#sec-4-6">4.6. Configurez votre serveur</a></li>
|
179
|
<li><a href="#sec-4-7">4.7. Exécuter instance</a></li>
|
180
|
</ul>
|
181
|
</li>
|
182
|
<li><a href="#sec-5">5. Gérer les erreurs systemd</a>
|
183
|
<ul>
|
184
|
<li><a href="#sec-5-1">5.1. Désactiver le service <code>rc-local.service</code></a></li>
|
185
|
<li><a href="#sec-5-2">5.2. Gestion des interfaces réseaux</a></li>
|
186
|
<li><a href="#sec-5-3">5.3. Vérifier l’état des services systemd</a></li>
|
187
|
</ul>
|
188
|
</li>
|
189
|
<li><a href="#sec-6">6. Points non réglés</a></li>
|
190
|
</ul>
|
191
|
</div>
|
192
|
</div>
|
193
|
<p>
|
194
|
Nous allons faire cohabiter AmonEcole et Eclair en installant tout
|
195
|
éclair dans un conteneur LXC dédié.
|
196
|
</p>
|
197
|
|
198
|
<p>
|
199
|
Cela va se faire en plusieurs étapes :
|
200
|
</p>
|
201
|
|
202
|
<ol class="org-ol">
|
203
|
<li>Créer et paramétrer un conteneur Ubuntu (presque) standard
|
204
|
</li>
|
205
|
|
206
|
<li>Transformer ce conteneur en <a href="http://eole.ac-dijon.fr/documentations/2.6/partielles/HTML/EOLE/co/02_medias.html">serveur EOLE</a>
|
207
|
</li>
|
208
|
|
209
|
<li>Préparer le serveur Scribe
|
210
|
</li>
|
211
|
|
212
|
<li>Configurer votre serveur Eclair
|
213
|
</li>
|
214
|
|
215
|
<li>Gérer les erreurs systemd
|
216
|
</li>
|
217
|
</ol>
|
218
|
|
219
|
<p>
|
220
|
Vous devez en premier lieu vous assurer d’avoir suffisamment de place
|
221
|
sur le volume <code>/opt</code>, dans mon test il fait 12Go.
|
222
|
</p>
|
223
|
|
224
|
<p>
|
225
|
Vous pouvez procéder à un <a href="http://eole.ac-dijon.fr/documentations/2.6/partielles/HTML/EOLE/co/04-partitionnement.html">partitionnement personnalisé</a> afin de vous
|
226
|
assurez d’avoir au moins 20Go pour <code>/opt</code>.
|
227
|
</p>
|
228
|
|
229
|
<div id="outline-container-sec-1" class="outline-2">
|
230
|
<h2 id="sec-1"><span class="section-number-2">1</span> Créer et paramétrer un conteneur Ubuntu (presque) standard</h2>
|
231
|
<div class="outline-text-2" id="text-1">
|
232
|
<p>
|
233
|
Nous allons utiliser l’outil <code>lxc-create</code> livré avec la distribution.
|
234
|
</p>
|
235
|
</div>
|
236
|
|
237
|
|
238
|
<div id="outline-container-sec-1-1" class="outline-3">
|
239
|
<h3 id="sec-1-1"><span class="section-number-3">1.1</span> Créer un conteneur Ubuntu</h3>
|
240
|
<div class="outline-text-3" id="text-1-1">
|
241
|
<p>
|
242
|
Vous pouvez adapter le miroir utilisé si besoin :
|
243
|
</p>
|
244
|
|
245
|
<div class="org-src-container">
|
246
|
|
247
|
<pre class="src src-sh">lxc-create -n eclair -t ubuntu -- -r xenial -u ubuntu -S ~root/.ssh/id_rsa.pub --packages 'wget' --mirror http://eole.ac-dijon.fr/ubuntu
|
248
|
</pre>
|
249
|
</div>
|
250
|
</div>
|
251
|
</div>
|
252
|
|
253
|
<div id="outline-container-sec-1-2" class="outline-3">
|
254
|
<h3 id="sec-1-2"><span class="section-number-3">1.2</span> Configurer le conteneur</h3>
|
255
|
<div class="outline-text-3" id="text-1-2">
|
256
|
<p>
|
257
|
Le fichier de configuration suivant contient des paramètres importants :
|
258
|
</p>
|
259
|
|
260
|
<ul class="org-ul">
|
261
|
<li>Une variable est remplacée lors de l’exécution de la commande cat
|
262
|
afin d’avoir le bon nom d’interface ;
|
263
|
</li>
|
264
|
<li>Un profile <i>apparmor</i> particulier permet à Eclair de fonctionner ;
|
265
|
</li>
|
266
|
<li>L’adresse IP de la seconde interface est codée en dur en utilisant
|
267
|
<a href="http://eole.ac-dijon.fr/documentations/2.6/partielles/HTML/EOLE/co/02-fichiers.html">une valeur de la liste prédéfinie</a>.
|
268
|
</li>
|
269
|
</ul>
|
270
|
|
271
|
<div class="org-src-container">
|
272
|
|
273
|
<pre class="src src-sh">cat > /var/lib/lxc/eclair/config <<EOF
|
274
|
# Template used to create this container: /usr/share/lxc/templates/lxc-ubuntu
|
275
|
|
276
|
# Common configuration
|
277
|
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
|
278
|
|
279
|
# Enable mounting NFS
|
280
|
lxc.aa_profile = lxc-container-default-for-eclair
|
281
|
|
282
|
# Container specific configuration
|
283
|
lxc.utsname = eclair
|
284
|
lxc.arch = amd64
|
285
|
lxc.rootfs.backend = dir
|
286
|
lxc.rootfs = /var/lib/lxc/eclair/rootfs
|
287
|
|
288
|
# EOLE look for /dev/lxc to detect container mode and behave differently
|
289
|
lxc.devttydir = LXC
|
290
|
|
291
|
# Automatic start at bootup
|
292
|
lxc.start.auto = 1
|
293
|
|
294
|
# Network configuration
|
295
|
# eth0 on eth1
|
296
|
lxc.network.type = macvlan
|
297
|
lxc.network.link = $(CreoleGet nom_zone_eth1)
|
298
|
lxc.network.flags = up
|
299
|
lxc.network.name = eth0
|
300
|
lxc.network.mtu = 1500
|
301
|
lxc.network.macvlan.mode = bridge
|
302
|
|
303
|
# containers on br0
|
304
|
# Reuse LTSP server IP
|
305
|
# http://eole.ac-dijon.fr/documentations/2.6/partielles/beta/EOLE/co/02-fichiers.html
|
306
|
lxc.network.type=veth
|
307
|
lxc.network.link=br0
|
308
|
lxc.network.flags=up
|
309
|
lxc.network.name = containers
|
310
|
lxc.network.mtu = 1500
|
311
|
lxc.network.veth.pair = eclair_0
|
312
|
lxc.network.ipv4 = 192.0.2.54/24
|
313
|
|
314
|
## Extra devices
|
315
|
#
|
316
|
# /dev/fuse
|
317
|
lxc.cgroup.devices.allow = c 10:229 rwm
|
318
|
|
319
|
lxc.hook.autodev = /var/lib/lxc/eclair/devices.hook
|
320
|
EOF
|
321
|
</pre>
|
322
|
</div>
|
323
|
</div>
|
324
|
</div>
|
325
|
|
326
|
<div id="outline-container-sec-1-3" class="outline-3">
|
327
|
<h3 id="sec-1-3"><span class="section-number-3">1.3</span> Créer des périphériques dans le conteneur</h3>
|
328
|
<div class="outline-text-3" id="text-1-3">
|
329
|
<p>
|
330
|
Nous avons besoin de fuse dans le conteneur, cela se fait par le
|
331
|
script référencé par la variable <code>lxc.hook.autodev</code> dans la
|
332
|
configuration précédente :
|
333
|
</p>
|
334
|
|
335
|
<div class="org-src-container">
|
336
|
|
337
|
<pre class="src src-sh">cat > /var/lib/lxc/eclair/devices.hook <<'EOF'
|
338
|
# On master /dev/fuse is owned by root:root with 666 perms
|
339
|
mknod --mode=666 ${LXC_ROOTFS_MOUNT}/dev/fuse c 10 229
|
340
|
EOF
|
341
|
chmod +x /var/lib/lxc/eclair/devices.hook
|
342
|
</pre>
|
343
|
</div>
|
344
|
</div>
|
345
|
</div>
|
346
|
|
347
|
<div id="outline-container-sec-1-4" class="outline-3">
|
348
|
<h3 id="sec-1-4"><span class="section-number-3">1.4</span> Installer la clef SSH publique pour se connecter en root</h3>
|
349
|
<div class="outline-text-3" id="text-1-4">
|
350
|
<p>
|
351
|
Actuellement il n’y a que le compte <code>ubuntu</code> qui est accessible par la
|
352
|
clef publique du compte <code>root</code> du maître :
|
353
|
</p>
|
354
|
|
355
|
<div class="org-src-container">
|
356
|
|
357
|
<pre class="src src-sh">mkdir /var/lib/lxc/eclair/rootfs/root/.ssh/
|
358
|
cp ~root/.ssh/id_rsa.pub /var/lib/lxc/eclair/rootfs/root/.ssh/authorized_keys
|
359
|
chmod -R 600 /var/lib/lxc/eclair/rootfs/root/.ssh/
|
360
|
</pre>
|
361
|
</div>
|
362
|
</div>
|
363
|
</div>
|
364
|
|
365
|
<div id="outline-container-sec-1-5" class="outline-3">
|
366
|
<h3 id="sec-1-5"><span class="section-number-3">1.5</span> Configurer les sources APT</h3>
|
367
|
<div class="outline-text-3" id="text-1-5">
|
368
|
<p>
|
369
|
Nous utilisons les mêmes sources que sur le maître, sans Envole :
|
370
|
</p>
|
371
|
|
372
|
<div class="org-src-container">
|
373
|
|
374
|
<pre class="src src-sh">grep -iv envole /etc/apt/sources.list > /var/lib/lxc/eclair/rootfs/etc/apt/sources.list
|
375
|
</pre>
|
376
|
</div>
|
377
|
</div>
|
378
|
</div>
|
379
|
|
380
|
<div id="outline-container-sec-1-6" class="outline-3">
|
381
|
<h3 id="sec-1-6"><span class="section-number-3">1.6</span> Configurer le proxy temporairement pour APT</h3>
|
382
|
<div class="outline-text-3" id="text-1-6">
|
383
|
<p>
|
384
|
Il sera écrasé lors de l’instance :
|
385
|
</p>
|
386
|
|
387
|
<div class="org-src-container">
|
388
|
|
389
|
<pre class="src src-sh">echo "Acquire::http::Proxy \"http://$(CreoleGet adresse_ip_eth1_proxy_link):3128\";" > /var/lib/lxc/eclair/rootfs/etc/apt/apt.conf.d/02eoleproxy
|
390
|
</pre>
|
391
|
</div>
|
392
|
</div>
|
393
|
</div>
|
394
|
|
395
|
<div id="outline-container-sec-1-7" class="outline-3">
|
396
|
<h3 id="sec-1-7"><span class="section-number-3">1.7</span> Configurer le proxy pour Wget</h3>
|
397
|
<div class="outline-text-3" id="text-1-7">
|
398
|
<p>
|
399
|
Autrement nous ne pouvons pas télécharger la clef publique GPG qui
|
400
|
signe les dépôts de paquets EOLE :
|
401
|
</p>
|
402
|
|
403
|
<div class="org-src-container">
|
404
|
|
405
|
<pre class="src src-sh">echo "http_proxy = http://$(CreoleGet adresse_ip_eth1_proxy_link):3128" > /var/lib/lxc/eclair/rootfs/root/.wgetrc
|
406
|
</pre>
|
407
|
</div>
|
408
|
</div>
|
409
|
</div>
|
410
|
|
411
|
<div id="outline-container-sec-1-8" class="outline-3">
|
412
|
<h3 id="sec-1-8"><span class="section-number-3">1.8</span> Configurer apparmor pour autoriser le montage NFS dans LXC</h3>
|
413
|
<div class="outline-text-3" id="text-1-8">
|
414
|
<p>
|
415
|
Le conteneur Eclair a besoin :
|
416
|
</p>
|
417
|
|
418
|
<ul class="org-ul">
|
419
|
<li>de faire des chroots pour préparer l’image des clients légers ;
|
420
|
</li>
|
421
|
<li>de monter <code>/home</code> en NFS.
|
422
|
</li>
|
423
|
</ul>
|
424
|
|
425
|
<p>
|
426
|
Nous reprenons donc le contenu de
|
427
|
<code>/etc/apparmor.d/lxc/lxc-container-default-cgns</code> et y ajoutons les
|
428
|
règles nécessaires :
|
429
|
</p>
|
430
|
|
431
|
<ul class="org-ul">
|
432
|
<li>Monter des systèmes de fichiers <code>/proc</code>, <code>/sys</code> ;
|
433
|
</li>
|
434
|
<li>Monter en mode <code>bind</code> pour <code>/dev</code> ;
|
435
|
</li>
|
436
|
<li>Monter des systèmes de fichiers <code>nfs</code>, <code>nfs4</code> et <code>rpc_pipefs</code>.
|
437
|
</li>
|
438
|
</ul>
|
439
|
|
440
|
<div class="org-src-container">
|
441
|
|
442
|
<pre class="src src-sh">cat > /etc/apparmor.d/lxc/lxc-default-for-eclair <<EOF
|
443
|
# Do not load this file. Rather, load /etc/apparmor.d/lxc-containers, which
|
444
|
# will source all profiles under /etc/apparmor.d/lxc
|
445
|
|
446
|
profile lxc-container-default-for-eclair flags=(attach_disconnected,mediate_deleted) {
|
447
|
#include <abstractions/lxc/container-base>
|
448
|
|
449
|
# the container may never be allowed to mount devpts. If it does, it
|
450
|
# will remount the host's devpts. We could allow it to do it with
|
451
|
# the newinstance option (but, right now, we don't).
|
452
|
deny mount fstype=devpts,
|
453
|
|
454
|
# Enable systemd cgroup mount in container
|
455
|
mount fstype=cgroup -> /sys/fs/cgroup/**,
|
456
|
|
457
|
# Allow chroot
|
458
|
mount fstype=proc,
|
459
|
mount fstype=sysfs,
|
460
|
mount options=(bind),
|
461
|
|
462
|
# allow NFS mount
|
463
|
mount fstype=nfs,
|
464
|
mount fstype=nfs4,
|
465
|
mount fstype=rpc_pipefs,
|
466
|
}
|
467
|
EOF
|
468
|
</pre>
|
469
|
</div>
|
470
|
|
471
|
<p>
|
472
|
Il faut recharger les règles :
|
473
|
</p>
|
474
|
|
475
|
<div class="org-src-container">
|
476
|
|
477
|
<pre class="src src-sh">service apparmor reload
|
478
|
</pre>
|
479
|
</div>
|
480
|
</div>
|
481
|
</div>
|
482
|
|
483
|
<div id="outline-container-sec-1-9" class="outline-3">
|
484
|
<h3 id="sec-1-9"><span class="section-number-3">1.9</span> Démarrer le conteneur éclair</h3>
|
485
|
<div class="outline-text-3" id="text-1-9">
|
486
|
<p>
|
487
|
Nous pouvons maintenant démarrer le conteneur afin de nous y connecter
|
488
|
et de le configurer :
|
489
|
</p>
|
490
|
|
491
|
<div class="org-src-container">
|
492
|
|
493
|
<pre class="src src-sh">lxc-start -n eclair -d
|
494
|
</pre>
|
495
|
</div>
|
496
|
</div>
|
497
|
</div>
|
498
|
</div>
|
499
|
|
500
|
|
501
|
<div id="outline-container-sec-2" class="outline-2">
|
502
|
<h2 id="sec-2"><span class="section-number-2">2</span> Transformer le conteneur en serveur EOLE</h2>
|
503
|
<div class="outline-text-2" id="text-2">
|
504
|
<p>
|
505
|
Nous reprenons les éléments décrits dans <a href="http://eole.ac-dijon.fr/documentations/2.6/partielles/HTML/EOLE/co/02_medias.html">la documentation</a> :
|
506
|
</p>
|
507
|
</div>
|
508
|
|
509
|
|
510
|
<div id="outline-container-sec-2-1" class="outline-3">
|
511
|
<h3 id="sec-2-1"><span class="section-number-3">2.1</span> Se connecter dans le conteneur</h3>
|
512
|
<div class="outline-text-3" id="text-2-1">
|
513
|
<p>
|
514
|
Nous faisons une connexion avec l’utilisateur <code>root</code> sur l’IP
|
515
|
configurée en dur dans le ficher <code>/var/lib/lxc/eclair/config</code> :
|
516
|
</p>
|
517
|
|
518
|
<div class="org-src-container">
|
519
|
|
520
|
<pre class="src src-sh">ssh 192.0.2.54
|
521
|
</pre>
|
522
|
</div>
|
523
|
</div>
|
524
|
</div>
|
525
|
|
526
|
<div id="outline-container-sec-2-2" class="outline-3">
|
527
|
<h3 id="sec-2-2"><span class="section-number-3">2.2</span> Installer la clef GPG qui signe les paquets EOLE</h3>
|
528
|
<div class="outline-text-3" id="text-2-2">
|
529
|
<div class="org-src-container">
|
530
|
|
531
|
<pre class="src src-sh">wget -qO- 'http://eole.ac-dijon.fr/eole/project/eole-2.6-repository.key' | sudo apt-key --keyring /etc/apt/trusted.gpg.d/eole-archive-keyring.gpg add -
|
532
|
</pre>
|
533
|
</div>
|
534
|
</div>
|
535
|
</div>
|
536
|
|
537
|
<div id="outline-container-sec-2-3" class="outline-3">
|
538
|
<h3 id="sec-2-3"><span class="section-number-3">2.3</span> Mettre à jour les indexes de paquets</h3>
|
539
|
<div class="outline-text-3" id="text-2-3">
|
540
|
<div class="org-src-container">
|
541
|
|
542
|
<pre class="src src-sh">apt-get update
|
543
|
</pre>
|
544
|
</div>
|
545
|
</div>
|
546
|
</div>
|
547
|
|
548
|
<div id="outline-container-sec-2-4" class="outline-3">
|
549
|
<h3 id="sec-2-4"><span class="section-number-3">2.4</span> Installer les paquets Eclair</h3>
|
550
|
<div class="outline-text-3" id="text-2-4">
|
551
|
<p>
|
552
|
La commande suivante va vous poser des questions et finira en erreur
|
553
|
car les paquets <code>gpm</code> et <code>rng-tools</code> ne supportent pas d’être dans un
|
554
|
conteneur LXC :
|
555
|
</p>
|
556
|
|
557
|
<div class="org-src-container">
|
558
|
|
559
|
<pre class="src src-sh">apt-get install -y eole-eclair-all
|
560
|
</pre>
|
561
|
</div>
|
562
|
|
563
|
<p>
|
564
|
À la question <i>quelle est l’URI du serveur LDAP</i> vous pouvez saisir
|
565
|
<code>ldap://192.0.2.50</code> afin de limiter le nombre de message d’erreur
|
566
|
avant instance.
|
567
|
</p>
|
568
|
|
569
|
<p>
|
570
|
Pour toutes les autres questions vous pouvez laisser les valeurs par
|
571
|
défaut, tout sera configuré par <code>instance</code>.
|
572
|
</p>
|
573
|
</div>
|
574
|
</div>
|
575
|
|
576
|
<div id="outline-container-sec-2-5" class="outline-3">
|
577
|
<h3 id="sec-2-5"><span class="section-number-3">2.5</span> Désactiver les services rng-tools et gpm</h3>
|
578
|
<div class="outline-text-3" id="text-2-5">
|
579
|
<p>
|
580
|
Nous allons désactiver les services problématiques et faire en sorte
|
581
|
qu’ils ne puissent pas être réactivés.
|
582
|
</p>
|
583
|
|
584
|
<p>
|
585
|
Nous désactivons <code>rng-tools</code> avec la commande :
|
586
|
</p>
|
587
|
|
588
|
<div class="org-src-container">
|
589
|
|
590
|
<pre class="src src-sh">systemctl disable rng-tools.service
|
591
|
</pre>
|
592
|
</div>
|
593
|
|
594
|
<p>
|
595
|
qui vous renvoie :
|
596
|
</p>
|
597
|
|
598
|
<pre class="example">
|
599
|
rng-tools.service is not a native service, redirecting to systemd-sysv-install
|
600
|
Executing /lib/systemd/systemd-sysv-install disable rng-tools
|
601
|
insserv: warning: current start runlevel(s) (empty) of script `rng-tools' overrides LSB defaults (2 3 4 5).
|
602
|
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `rng-tools' overrides LSB defaults (0 1 6).
|
603
|
</pre>
|
604
|
|
605
|
<p>
|
606
|
Nous empêchons sa réactivation future avec le système de masquage, la commande :
|
607
|
</p>
|
608
|
|
609
|
<div class="org-src-container">
|
610
|
|
611
|
<pre class="src src-sh">systemctl mask rng-tools.service
|
612
|
</pre>
|
613
|
</div>
|
614
|
|
615
|
<p>
|
616
|
renvoie :
|
617
|
</p>
|
618
|
|
619
|
<pre class="example">
|
620
|
root@eclair:~# systemctl mask rng-tools.service
|
621
|
Created symlink from /etc/systemd/system/rng-tools.service to /dev/null.
|
622
|
</pre>
|
623
|
|
624
|
<p>
|
625
|
Nous procédons de même avec le service <code>gpm</code>, la commande :
|
626
|
</p>
|
627
|
|
628
|
<div class="org-src-container">
|
629
|
|
630
|
<pre class="src src-sh">systemctl disable gpm.service
|
631
|
</pre>
|
632
|
</div>
|
633
|
|
634
|
<p>
|
635
|
renvoie :
|
636
|
</p>
|
637
|
|
638
|
<pre class="example">
|
639
|
gpm.service is not a native service, redirecting to systemd-sysv-install
|
640
|
Executing /lib/systemd/systemd-sysv-install disable gpm
|
641
|
insserv: warning: current start runlevel(s) (empty) of script `gpm' overrides LSB defaults (2 3 4 5).
|
642
|
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `gpm' overrides LSB defaults (0 1 6).
|
643
|
</pre>
|
644
|
|
645
|
<p>
|
646
|
et la commande :
|
647
|
</p>
|
648
|
|
649
|
<div class="org-src-container">
|
650
|
|
651
|
<pre class="src src-sh">systemctl mask gpm.service
|
652
|
</pre>
|
653
|
</div>
|
654
|
|
655
|
<p>
|
656
|
renvoie :
|
657
|
</p>
|
658
|
|
659
|
<pre class="example">
|
660
|
root@eclair:~# systemctl mask gpm.service
|
661
|
Created symlink from /etc/systemd/system/gpm.service to /dev/null.
|
662
|
</pre>
|
663
|
</div>
|
664
|
</div>
|
665
|
|
666
|
<div id="outline-container-sec-2-6" class="outline-3">
|
667
|
<h3 id="sec-2-6"><span class="section-number-3">2.6</span> Terminer l’installation</h3>
|
668
|
<div class="outline-text-3" id="text-2-6">
|
669
|
<div class="org-src-container">
|
670
|
|
671
|
<pre class="src src-sh">dpkg --configure -a
|
672
|
</pre>
|
673
|
</div>
|
674
|
</div>
|
675
|
</div>
|
676
|
|
677
|
<div id="outline-container-sec-2-7" class="outline-3">
|
678
|
<h3 id="sec-2-7"><span class="section-number-3">2.7</span> Vérifier qu’il ne reste plus rien à installer</h3>
|
679
|
<div class="outline-text-3" id="text-2-7">
|
680
|
<div class="org-src-container">
|
681
|
|
682
|
<pre class="src src-sh">apt-get install -y eole-eclair-all
|
683
|
</pre>
|
684
|
</div>
|
685
|
</div>
|
686
|
</div>
|
687
|
|
688
|
<div id="outline-container-sec-2-8" class="outline-3">
|
689
|
<h3 id="sec-2-8"><span class="section-number-3">2.8</span> Désactiver la détection automatique des noms de carte réseau</h3>
|
690
|
<div class="outline-text-3" id="text-2-8">
|
691
|
<p>
|
692
|
Cette partie de creole ne fonctionne pas dans un conteneur LXC et fait
|
693
|
planter GenConfig:
|
694
|
</p>
|
695
|
|
696
|
<div class="org-src-container">
|
697
|
|
698
|
<pre class="src src-sh">cat > /usr/share/eole/creole/dicos/99-eole-in-lxc.xml <<EOF
|
699
|
<creole>
|
700
|
|
701
|
<files />
|
702
|
|
703
|
<containers />
|
704
|
|
705
|
<variables>
|
706
|
|
707
|
<family name='Interface-0'>
|
708
|
<variable name='nom_carte_eth0' redefine='True' remove_check='True' />
|
709
|
</family>
|
710
|
|
711
|
<family name='Interface-1'>
|
712
|
<variable name='nom_carte_eth1' redefine='True' remove_check='True' />
|
713
|
</family>
|
714
|
|
715
|
<family name='Interface-2'>
|
716
|
<variable name='nom_carte_eth2' redefine='True' remove_check='True' />
|
717
|
</family>
|
718
|
|
719
|
<family name='Interface-3'>
|
720
|
<variable name='nom_carte_eth3' redefine='True' remove_check='True' />
|
721
|
</family>
|
722
|
|
723
|
<family name='Interface-4'>
|
724
|
<variable name='nom_carte_eth4' redefine='True' remove_check='True' />
|
725
|
</family>
|
726
|
|
727
|
</variables>
|
728
|
|
729
|
<constraints>
|
730
|
|
731
|
<auto name='auto_copy_val' target='nom_carte_eth0'>
|
732
|
<param>eth0</param>
|
733
|
</auto>
|
734
|
|
735
|
<auto name='auto_copy_val' target='nom_carte_eth1'>
|
736
|
<param>containers</param>
|
737
|
</auto>
|
738
|
|
739
|
<auto name='auto_copy_val' target='nom_carte_eth2'>
|
740
|
<param>eth2</param>
|
741
|
</auto>
|
742
|
|
743
|
<auto name='auto_copy_val' target='nom_carte_eth3'>
|
744
|
<param>eth3</param>
|
745
|
</auto>
|
746
|
|
747
|
<auto name='auto_copy_val' target='nom_carte_eth4'>
|
748
|
<param>eth0</param>
|
749
|
</auto>
|
750
|
|
751
|
</constraints>
|
752
|
|
753
|
<help />
|
754
|
</creole>
|
755
|
EOF
|
756
|
</pre>
|
757
|
</div>
|
758
|
</div>
|
759
|
</div>
|
760
|
</div>
|
761
|
|
762
|
|
763
|
|
764
|
<div id="outline-container-sec-3" class="outline-2">
|
765
|
<h2 id="sec-3"><span class="section-number-2">3</span> Préparer le serveur Scribe</h2>
|
766
|
<div class="outline-text-2" id="text-3">
|
767
|
<p>
|
768
|
Sur le maître, suivez la partie <i>AmonEcole</i> de la documentation
|
769
|
<a href="http://eole.ac-dijon.fr/documentations/2.6/completes/HTML/ModuleEclair/co/ConfigurationEclairAvecModuleAmonEcole.html">configuration
|
770
|
Eclair avec un module AmonEcole</a> avec les adaptations suivantes :
|
771
|
</p>
|
772
|
|
773
|
<ul class="org-ul">
|
774
|
<li>L’accès NFS se fait par le pont interne aux conteneurs : <i>Nfs →
|
775
|
Adresse IP autorisée à monter les export NFS</i> ⮕ <b><code>192.0.2.54</code></b> ;
|
776
|
</li>
|
777
|
<li>La valeur de <i>Tftp → Adresse IP du serveur PXE/TFTP</i> est l’IP
|
778
|
statique (en dehors de la plage DHCP configurée sur l’AmonEcole) que
|
779
|
vous prévoyez d’utiliser pour l’interface <code>eth0</code> de l’Eclair et non
|
780
|
pas l’IP interne <code>192.0.2.54</code> ;
|
781
|
</li>
|
782
|
<li>Le chemin de fichier de boot est spécifique sur Eclair : <i>Tftp →
|
783
|
Chemin vers le fichier de boot PXE initial</i> ⮕ <b><code>/default/pxelinux.0</code></b>.
|
784
|
</li>
|
785
|
</ul>
|
786
|
</div>
|
787
|
</div>
|
788
|
|
789
|
|
790
|
<div id="outline-container-sec-4" class="outline-2">
|
791
|
<h2 id="sec-4"><span class="section-number-2">4</span> Configurer le serveur Eclair</h2>
|
792
|
<div class="outline-text-2" id="text-4">
|
793
|
<p>
|
794
|
À ce stade il serait bien de vérifier que le conteneur démarre
|
795
|
automatiquement au démarrage de la machine :
|
796
|
</p>
|
797
|
|
798
|
<ul class="org-ul">
|
799
|
<li>Redémarrer le serveur AmonEcole
|
800
|
</li>
|
801
|
</ul>
|
802
|
</div>
|
803
|
|
804
|
|
805
|
<div id="outline-container-sec-4-1" class="outline-3">
|
806
|
<h3 id="sec-4-1"><span class="section-number-3">4.1</span> Connectez vous à votre serveur AmonEcole avec le transfert X11</h3>
|
807
|
<div class="outline-text-3" id="text-4-1">
|
808
|
<div class="org-src-container">
|
809
|
|
810
|
<pre class="src src-sh">ssh -Y root@<amonecole>
|
811
|
</pre>
|
812
|
</div>
|
813
|
</div>
|
814
|
</div>
|
815
|
|
816
|
<div id="outline-container-sec-4-2" class="outline-3">
|
817
|
<h3 id="sec-4-2"><span class="section-number-3">4.2</span> Connectez vous au conteneur Eclair avec le transfert X11</h3>
|
818
|
<div class="outline-text-3" id="text-4-2">
|
819
|
<div class="org-src-container">
|
820
|
|
821
|
<pre class="src src-sh">ssh -Y 192.0.2.54
|
822
|
</pre>
|
823
|
</div>
|
824
|
|
825
|
<p>
|
826
|
Après le redémarrage, la commande <code>systemctl is-system-running</code> doit
|
827
|
renvoyer <code>degraded</code> car certains services ne démarrent pas
|
828
|
correctement, nous allons les gérer après la configuration du
|
829
|
serveur Eclair.
|
830
|
</p>
|
831
|
</div>
|
832
|
</div>
|
833
|
|
834
|
<div id="outline-container-sec-4-3" class="outline-3">
|
835
|
<h3 id="sec-4-3"><span class="section-number-3">4.3</span> Autoriser le TFTP sur l’interface eth0 en mode 2 cartes</h3>
|
836
|
<div class="outline-text-3" id="text-4-3">
|
837
|
<p>
|
838
|
C’est une relique de l’Eclair 2.3 qui se comportait différemment en
|
839
|
mode 1 carte ou 2 cartes.
|
840
|
</p>
|
841
|
|
842
|
<p>
|
843
|
Nous avons deux cartes mais c’est bien par <code>eth0</code> que les paquets TFTP
|
844
|
arrivent, nous devons donc autoriser ces flux :
|
845
|
</p>
|
846
|
|
847
|
<div class="org-src-container">
|
848
|
|
849
|
<pre class="src src-sh">cat > /usr/share/eole/creole/dicos/99-eclair-in-lxc.xml <<EOF
|
850
|
<creole>
|
851
|
|
852
|
<files />
|
853
|
|
854
|
<containers>
|
855
|
|
856
|
<container name='dhcp'>
|
857
|
|
858
|
<!--
|
859
|
20_dhcp.xml support only one card at a time.
|
860
|
We need to autorise TFTP on eth0 with this 2 cards setup
|
861
|
-->
|
862
|
<service_restriction service='tftpd'>
|
863
|
<ip interface='eth0' netmask='0.0.0.0'>0.0.0.0</ip>
|
864
|
</service_restriction>
|
865
|
|
866
|
</container>
|
867
|
|
868
|
</containers>
|
869
|
|
870
|
|
871
|
<variables />
|
872
|
|
873
|
<constraints />
|
874
|
|
875
|
<help />
|
876
|
</creole>
|
877
|
EOF
|
878
|
</pre>
|
879
|
</div>
|
880
|
</div>
|
881
|
</div>
|
882
|
|
883
|
<div id="outline-container-sec-4-4" class="outline-3">
|
884
|
<h3 id="sec-4-4"><span class="section-number-3">4.4</span> Définissez votre mot de passe root (pour vous connecter à GenConfig)</h3>
|
885
|
<div class="outline-text-3" id="text-4-4">
|
886
|
<p>
|
887
|
Attention à la politique de mot de passe lorsque vous utilisez la
|
888
|
commande suivante :
|
889
|
</p>
|
890
|
|
891
|
<div class="org-src-container">
|
892
|
|
893
|
<pre class="src src-sh">passwd
|
894
|
</pre>
|
895
|
</div>
|
896
|
</div>
|
897
|
</div>
|
898
|
|
899
|
<div id="outline-container-sec-4-5" class="outline-3">
|
900
|
<h3 id="sec-4-5"><span class="section-number-3">4.5</span> Démarrer GenConfig</h3>
|
901
|
<div class="outline-text-3" id="text-4-5">
|
902
|
<p>
|
903
|
Démarrer GenConfig et connecter vous avec le compte <code>root</code> et le mot
|
904
|
de passe que vous avez défini :
|
905
|
</p>
|
906
|
|
907
|
<div class="org-src-container">
|
908
|
|
909
|
<pre class="src src-sh">gen_config
|
910
|
</pre>
|
911
|
</div>
|
912
|
</div>
|
913
|
</div>
|
914
|
|
915
|
<div id="outline-container-sec-4-6" class="outline-3">
|
916
|
<h3 id="sec-4-6"><span class="section-number-3">4.6</span> Configurez votre serveur</h3>
|
917
|
<div class="outline-text-3" id="text-4-6">
|
918
|
<p>
|
919
|
Dans le cas spécifique d’Eclair dans un conteneur LXC, vous devez
|
920
|
absolument :
|
921
|
</p>
|
922
|
|
923
|
<ul class="org-ul">
|
924
|
<li>Passer en mode expert et activer deux interfaces : <i>Général → Nombre
|
925
|
d'interfaces à activer</i> ⮕ <b>2</b>
|
926
|
</li>
|
927
|
<li>Configurer la seconde interface avec les paramètres suivants (le
|
928
|
message d’avertissement est tout à fait normal) :
|
929
|
<ul class="org-ul">
|
930
|
<li><i>Interface-1 → Adresse IP de la carte</i> ⮕ <b>192.0.2.54</b>
|
931
|
</li>
|
932
|
<li><i>Interface-1 → Masque de sous réseau de la carte</i> ⮕ <b>255.255.255.0</b>
|
933
|
</li>
|
934
|
</ul>
|
935
|
</li>
|
936
|
<li>Autoriser les connexions SSH depuis le maître sur l’/Interface-1/ :
|
937
|
<ul class="org-ul">
|
938
|
<li><i>Interface-1 → Autoriser les connexions SSH</i> ⮕ <b>oui</b>
|
939
|
</li>
|
940
|
<li><i>Interface-1 → Adresse IP réseau autorisée pour les connexions SSH</i> ⮕ <b>192.0.2.1</b>
|
941
|
</li>
|
942
|
<li><i>Interface-1 → Masque du sous réseau pour les connexions SSH</i> ⮕ <b>255.255.255.255</b>
|
943
|
</li>
|
944
|
</ul>
|
945
|
</li>
|
946
|
<li>Utiliser les adresses internes pour certains services :
|
947
|
<ul class="org-ul">
|
948
|
<li><i>Annuaire → Adresse IP ou nom DNS du serveur LDAP</i> ⮕ <b>192.0.2.50</b>
|
949
|
</li>
|
950
|
<li><i>Ltsp → Adresse IP ou nom DNS du serveur NFS</i> ⮕ <b>192.0.2.1</b>
|
951
|
</li>
|
952
|
</ul>
|
953
|
</li>
|
954
|
</ul>
|
955
|
|
956
|
<p>
|
957
|
Certains flux ne peuvent pas passer par l’interface eth0 du serveur
|
958
|
Eclair, les paramètres ci-dessus permettent de passer par le pont
|
959
|
interne aux conteneurs..
|
960
|
</p>
|
961
|
|
962
|
<p>
|
963
|
Le reste de la configuration ne fait l’objet d’aucune particularité :
|
964
|
</p>
|
965
|
|
966
|
<ul class="org-ul">
|
967
|
<li>L'<i>Interface-0</i> étant celle qui sert vos clients légers et qui
|
968
|
accédera au NFS de l’AmonEcole ;
|
969
|
</li>
|
970
|
<li>Tous les flux passant par AmonEcole, vous devez donc configurer le
|
971
|
DNS et le proxy en conséquence.
|
972
|
</li>
|
973
|
</ul>
|
974
|
|
975
|
<p>
|
976
|
Pour les clients légers <i>lourds</i>, n’oubliez pas de configurer le type
|
977
|
de client léger :
|
978
|
</p>
|
979
|
|
980
|
<ul class="org-ul">
|
981
|
<li>En mode normal, <i>Ltsp → Type de l'image à générer sur le serveur</i> ⮕ <b>fat</b>
|
982
|
</li>
|
983
|
</ul>
|
984
|
</div>
|
985
|
</div>
|
986
|
|
987
|
<div id="outline-container-sec-4-7" class="outline-3">
|
988
|
<h3 id="sec-4-7"><span class="section-number-3">4.7</span> Exécuter instance</h3>
|
989
|
<div class="outline-text-3" id="text-4-7">
|
990
|
<p>
|
991
|
Vous avez un certain nombre de messages d’erreur notamment pour les
|
992
|
modules noyaux mais vous devriez arriver au bout.
|
993
|
</p>
|
994
|
|
995
|
<p>
|
996
|
Le dernier message <code>list index out of range</code> est aussi dû à la gestion
|
997
|
des noyaux, en mode <code>debug</code> le traceback est le suivant :
|
998
|
</p>
|
999
|
|
1000
|
<pre class="example">
|
1001
|
list index out of range
|
1002
|
Traceback (most recent call last):
|
1003
|
File "/usr/lib/python2.7/dist-packages/creole/reconfigure.py", line 984, in main
|
1004
|
reboot_server()
|
1005
|
File "/usr/lib/python2.7/dist-packages/creole/reconfigure.py", line 864, in reboot_server
|
1006
|
if fonctionseole.controle_kernel():
|
1007
|
File "/usr/lib/python2.7/dist-packages/creole/fonctionseole.py", line 113, in controle_kernel
|
1008
|
wanted_kernel = get_wanted_kernel()
|
1009
|
File "/usr/lib/python2.7/dist-packages/creole/fonctionseole.py", line 67, in get_wanted_kernel
|
1010
|
last_ver = kernel_images[-1].split('-')
|
1011
|
IndexError: list index out of range
|
1012
|
</pre>
|
1013
|
</div>
|
1014
|
</div>
|
1015
|
</div>
|
1016
|
|
1017
|
|
1018
|
<div id="outline-container-sec-5" class="outline-2">
|
1019
|
<h2 id="sec-5"><span class="section-number-2">5</span> Gérer les erreurs systemd</h2>
|
1020
|
<div class="outline-text-2" id="text-5">
|
1021
|
<p>
|
1022
|
Dans le conteneur Eclair, la commande <code>systemctl is-system-running</code>
|
1023
|
doit renvoyer <code>degraded</code>.
|
1024
|
</p>
|
1025
|
|
1026
|
<p>
|
1027
|
Vous pouvez afficher la liste des services en erreur, la commande :
|
1028
|
</p>
|
1029
|
|
1030
|
<div class="org-src-container">
|
1031
|
|
1032
|
<pre class="src src-sh">systemctl list-units --failed
|
1033
|
</pre>
|
1034
|
</div>
|
1035
|
|
1036
|
<p>
|
1037
|
renvoie :
|
1038
|
</p>
|
1039
|
|
1040
|
<pre class="example">
|
1041
|
UNIT LOAD ACTIVE SUB DESCRIPTION
|
1042
|
● networking.service loaded failed failed Raise network interfaces
|
1043
|
● rc-local.service loaded failed failed /etc/rc.local Compatibility
|
1044
|
|
1045
|
LOAD = Reflects whether the unit definition was properly loaded.
|
1046
|
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
|
1047
|
SUB = The low-level unit activation state, values depend on unit type.
|
1048
|
|
1049
|
2 loaded units listed. Pass --all to see loaded but inactive units, too.
|
1050
|
To show all installed unit files use 'systemctl list-unit-files'.
|
1051
|
</pre>
|
1052
|
</div>
|
1053
|
|
1054
|
|
1055
|
<div id="outline-container-sec-5-1" class="outline-3">
|
1056
|
<h3 id="sec-5-1"><span class="section-number-3">5.1</span> Désactiver le service <code>rc-local.service</code></h3>
|
1057
|
<div class="outline-text-3" id="text-5-1">
|
1058
|
<p>
|
1059
|
Ce service tente de régler les paramètres des témoins lumineux du clavier, la commande :
|
1060
|
</p>
|
1061
|
|
1062
|
<div class="org-src-container">
|
1063
|
|
1064
|
<pre class="src src-sh">systemctl status rc-local.service
|
1065
|
</pre>
|
1066
|
</div>
|
1067
|
|
1068
|
<p>
|
1069
|
renvoie :
|
1070
|
</p>
|
1071
|
|
1072
|
<pre class="example">
|
1073
|
● rc-local.service - /etc/rc.local Compatibility
|
1074
|
Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
|
1075
|
Drop-In: /lib/systemd/system/rc-local.service.d
|
1076
|
└─debian.conf
|
1077
|
Active: failed (Result: exit-code) since mer. 2017-07-19 10:13:22 CEST; 12min ago
|
1078
|
Process: 256 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE)
|
1079
|
|
1080
|
juil. 19 10:13:22 eclair systemd[1]: Starting /etc/rc.local Compatibility...
|
1081
|
juil. 19 10:13:22 eclair rc.local[256]: KDGKBLED: Ioctl() inapproprié pour un périphérique
|
1082
|
juil. 19 10:13:22 eclair rc.local[256]: Erreur de lecture des paramètres courants de fanions. Peut-être n'êtes vous pas sur la console ?
|
1083
|
juil. 19 10:13:22 eclair systemd[1]: rc-local.service: Control process exited, code=exited status=1
|
1084
|
juil. 19 10:13:22 eclair systemd[1]: Failed to start /etc/rc.local Compatibility.
|
1085
|
juil. 19 10:13:22 eclair systemd[1]: rc-local.service: Unit entered failed state.
|
1086
|
juil. 19 10:13:22 eclair systemd[1]: rc-local.service: Failed with result 'exit-code'.
|
1087
|
</pre>
|
1088
|
|
1089
|
<p>
|
1090
|
Nous pouvons simplement le désactiver et masquer pour qu’il ne démarre plus :
|
1091
|
</p>
|
1092
|
|
1093
|
<div class="org-src-container">
|
1094
|
|
1095
|
<pre class="src src-sh">systemctl stop rc-local.service
|
1096
|
systemctl disable rc-local.service
|
1097
|
systemctl mask rc-local.service
|
1098
|
</pre>
|
1099
|
</div>
|
1100
|
</div>
|
1101
|
</div>
|
1102
|
|
1103
|
<div id="outline-container-sec-5-2" class="outline-3">
|
1104
|
<h3 id="sec-5-2"><span class="section-number-3">5.2</span> Gestion des interfaces réseaux</h3>
|
1105
|
<div class="outline-text-3" id="text-5-2">
|
1106
|
<p>
|
1107
|
Vous pouvez avoir plus d’informations sur le problème du service
|
1108
|
<code>networking.service</code>, la commande :
|
1109
|
</p>
|
1110
|
|
1111
|
<div class="org-src-container">
|
1112
|
|
1113
|
<pre class="src src-sh">systemctl status networking.service
|
1114
|
</pre>
|
1115
|
</div>
|
1116
|
|
1117
|
<p>
|
1118
|
renvoie :
|
1119
|
</p>
|
1120
|
|
1121
|
<pre class="example">
|
1122
|
● networking.service - Raise network interfaces
|
1123
|
Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
|
1124
|
Drop-In: /run/systemd/generator/networking.service.d
|
1125
|
└─50-insserv.conf-$network.conf
|
1126
|
Active: failed (Result: exit-code) since mer. 2017-07-19 10:13:22 CEST; 1min 4s ago
|
1127
|
Docs: man:interfaces(5)
|
1128
|
Process: 56 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
|
1129
|
Process: 51 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (code=exited, status=0/SUCCESS)
|
1130
|
Main PID: 56 (code=exited, status=1/FAILURE)
|
1131
|
|
1132
|
juil. 19 10:13:21 eclair systemd[1]: Starting Raise network interfaces...
|
1133
|
juil. 19 10:13:22 eclair ifup[56]: RTNETLINK answers: File exists
|
1134
|
juil. 19 10:13:22 eclair ifup[56]: Failed to bring up containers.
|
1135
|
juil. 19 10:13:22 eclair systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
|
1136
|
juil. 19 10:13:22 eclair systemd[1]: Failed to start Raise network interfaces.
|
1137
|
juil. 19 10:13:22 eclair systemd[1]: networking.service: Unit entered failed state.
|
1138
|
juil. 19 10:13:22 eclair systemd[1]: networking.service: Failed with result 'exit-code'.
|
1139
|
</pre>
|
1140
|
|
1141
|
|
1142
|
<p>
|
1143
|
La ligne <code>ifup[56]: RTNETLINK answers: File exists</code> signifie que
|
1144
|
l’adresse IP existe déjà, car nous l’avons configurée en dur dans
|
1145
|
<code>/var/lib/lxc/eclair/config</code> pour la mise en route.
|
1146
|
</p>
|
1147
|
|
1148
|
<p>
|
1149
|
Il nous suffit de supprimer la ligne de configuration du conteneur et
|
1150
|
de le redémarrer.
|
1151
|
</p>
|
1152
|
|
1153
|
<p>
|
1154
|
Sur le maître AmonEcole, exécuter la commande suivante :
|
1155
|
</p>
|
1156
|
|
1157
|
<div class="org-src-container">
|
1158
|
|
1159
|
<pre class="src src-sh">sed -i -e '/lxc.network.ipv4/d' /var/lib/lxc/eclair/config
|
1160
|
</pre>
|
1161
|
</div>
|
1162
|
|
1163
|
<p>
|
1164
|
et redémarrer le conteneur Eclair avec la commande :
|
1165
|
</p>
|
1166
|
|
1167
|
<div class="org-src-container">
|
1168
|
|
1169
|
<pre class="src src-sh">lxc-stop -n eclair && lxc-start -n eclair
|
1170
|
</pre>
|
1171
|
</div>
|
1172
|
</div>
|
1173
|
</div>
|
1174
|
<div id="outline-container-sec-5-3" class="outline-3">
|
1175
|
<h3 id="sec-5-3"><span class="section-number-3">5.3</span> Vérifier l’état des services systemd</h3>
|
1176
|
<div class="outline-text-3" id="text-5-3">
|
1177
|
<p>
|
1178
|
Vous devez maintenant avoir le retour <code>running</code> de la commande <code>systemctl is-system-running</code>.
|
1179
|
</p>
|
1180
|
</div>
|
1181
|
</div>
|
1182
|
</div>
|
1183
|
|
1184
|
|
1185
|
<div id="outline-container-sec-6" class="outline-2">
|
1186
|
<h2 id="sec-6"><span class="section-number-2">6</span> Points non réglés</h2>
|
1187
|
<div class="outline-text-2" id="text-6">
|
1188
|
<ul class="org-ul">
|
1189
|
<li>La commande <code>reconfigure</code> affiche des messages d’erreur :
|
1190
|
<ul class="org-ul">
|
1191
|
<li>pour tout ce qui à trait à la gestion du matériel ;
|
1192
|
</li>
|
1193
|
<li>pour tout ce qui a trait à la gestion des noyaux ;
|
1194
|
</li>
|
1195
|
</ul>
|
1196
|
</li>
|
1197
|
<li>La commande <code>diagnose</code> affiche des messages d’erreur :
|
1198
|
<ul class="org-ul">
|
1199
|
<li>pour l’accès à la passerelle : bien que les mises à jour fonctionnent
|
1200
|
</li>
|
1201
|
<li>pour l’accès aux DNS : bien que la commande <code>dig www.fdn.fr</code> fonctionne
|
1202
|
</li>
|
1203
|
</ul>
|
1204
|
</li>
|
1205
|
</ul>
|
1206
|
</div>
|
1207
|
</div>
|
1208
|
</div>
|
1209
|
<div id="postamble" class="status">
|
1210
|
<p class="author">Auteur: Daniel Dehennin</p>
|
1211
|
<p class="date">Created: 2017-08-23 mer. 09:00</p>
|
1212
|
<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 25.2.2 (<a href="http://orgmode.org">Org</a> mode 8.2.10)</p>
|
1213
|
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
|
1214
|
</div>
|
1215
|
</body>
|
1216
|
</html>
|