diff --git a/doc/Makefile b/doc/Makefile
index 84fe24e0c2ff208fe926a35671c85013a3d3411b..10f58a25f2213ce39433f765b72b877b6dc3d0da 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -16,11 +16,11 @@ logbook.md: logbook.gpp.md markdown.gpp gitlab-markdown.gpp $(PLANTUML_DIAGRAMS_
 rapport.md: rapport.gpp.md logbook.gpp.md markdown.gpp gitlab-markdown.gpp csv2barchart.py $(PLANTUML_DIAGRAMS_SVG) $(PLANTUML_DIAGRAMS_PNG)
 	$(GPP) -DGITLAB_MARKDOWN $< | ./trimstart.py > $@
 
-rapport.tex: rapport.gpp.md diagrams markdown.gpp pandoc-pdf-markdown.gpp logbook.gpp.md csv2barchart.py $(PLANTUML_DIAGRAMS_SVG) $(PLANTUML_DIAGRAMS_PNG)
-	$(GPP) -DPANDOC_PDF $< | ./trimstart.py | pandoc --standalone --pdf-engine=xelatex -o $@
+rapport.tex: rapport.gpp.md diagrams markdown.gpp pandoc-pdf-markdown.gpp logbook.gpp.md csv2barchart.py templates/default.latex $(PLANTUML_DIAGRAMS_SVG) $(PLANTUML_DIAGRAMS_PNG)
+	$(GPP) -DPANDOC_PDF $< | ./trimstart.py | pandoc --standalone --pdf-engine=xelatex --template=templates/default.latex -o $@
 
-rapport.pdf: rapport.gpp.md markdown.gpp pandoc-pdf-markdown.gpp logbook.gpp.md csv2barchart.py $(PLANTUML_DIAGRAMS_SVG) $(PLANTUML_DIAGRAMS_PNG)
-	$(GPP) -DPANDOC_PDF $< | ./trimstart.py | pandoc --pdf-engine=xelatex -o $@
+rapport.pdf: rapport.gpp.md markdown.gpp pandoc-pdf-markdown.gpp logbook.gpp.md csv2barchart.py templates/default.latex $(PLANTUML_DIAGRAMS_SVG) $(PLANTUML_DIAGRAMS_PNG)
+	$(GPP) -DPANDOC_PDF $< | ./trimstart.py | pandoc --pdf-engine=xelatex --template=templates/default.latex -o $@
 
 diagrams: $(PLANTUML_DIAGRAMS_SVG) $(PLANTUML_DIAGRAMS_PNG)
 
diff --git a/doc/images/hepia.png b/doc/images/hepia.png
new file mode 100644
index 0000000000000000000000000000000000000000..02a91196f62eee65b1ed98d76d7f9bf9f5d93ff5
--- /dev/null
+++ b/doc/images/hepia.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56bca839d547a83190b8eb043db88e9aa04606f18c0c54aa69239fefbec72b37
+size 16183
diff --git a/doc/images/hes.png b/doc/images/hes.png
new file mode 100644
index 0000000000000000000000000000000000000000..80865538b4df1548539d319a185ad3936f0b8572
--- /dev/null
+++ b/doc/images/hes.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b35a3077cd5077deb0020a0797732b23b072a606e2d8b586fc301847ce1b5d70
+size 16564
diff --git a/doc/images/logo-hesso-geneve.pdf b/doc/images/logo-hesso-geneve.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..e980ef567dec08a573b18952173aa498e25cd64f
Binary files /dev/null and b/doc/images/logo-hesso-geneve.pdf differ
diff --git a/doc/images/logo-hesso-geneve.pdf_tex b/doc/images/logo-hesso-geneve.pdf_tex
new file mode 100644
index 0000000000000000000000000000000000000000..9804b83bf194c4c8083c3411c89ec8bd27b551df
--- /dev/null
+++ b/doc/images/logo-hesso-geneve.pdf_tex
@@ -0,0 +1,58 @@
+%% Creator: Inkscape 1.0 (4035a4fb49, 2020-05-01), www.inkscape.org
+%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
+%% Accompanies image file 'logo-hesso-geneve.pdf' (pdf, eps, ps)
+%%
+%% To include the image in your LaTeX document, write
+%%   \input{<filename>.pdf_tex}
+%%  instead of
+%%   \includegraphics{<filename>.pdf}
+%% To scale the image, write
+%%   \def\svgwidth{<desired width>}
+%%   \input{<filename>.pdf_tex}
+%%  instead of
+%%   \includegraphics[width=<desired width>]{<filename>.pdf}
+%%
+%% Images with a different path to the parent latex file can
+%% be accessed with the `import' package (which may need to be
+%% installed) using
+%%   \usepackage{import}
+%% in the preamble, and then including the image with
+%%   \import{<path to file>}{<filename>.pdf_tex}
+%% Alternatively, one can specify
+%%   \graphicspath{{<path to file>/}}
+%% 
+%% For more information, please see info/svg-inkscape on CTAN:
+%%   http://tug.ctan.org/tex-archive/info/svg-inkscape
+%%
+\begingroup%
+  \makeatletter%
+  \providecommand\color[2][]{%
+    \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
+    \renewcommand\color[2][]{}%
+  }%
+  \providecommand\transparent[1]{%
+    \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
+    \renewcommand\transparent[1]{}%
+  }%
+  \providecommand\rotatebox[2]{#2}%
+  \newcommand*\fsize{\dimexpr\f@size pt\relax}%
+  \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
+  \ifx\svgwidth\undefined%
+    \setlength{\unitlength}{2769bp}%
+    \ifx\svgscale\undefined%
+      \relax%
+    \else%
+      \setlength{\unitlength}{\unitlength * \real{\svgscale}}%
+    \fi%
+  \else%
+    \setlength{\unitlength}{\svgwidth}%
+  \fi%
+  \global\let\svgwidth\undefined%
+  \global\let\svgscale\undefined%
+  \makeatother%
+  \begin{picture}(1,0.27139762)%
+    \lineheight{1}%
+    \setlength\tabcolsep{0pt}%
+    \put(0,0){\includegraphics[width=\unitlength,page=1]{logo-hesso-geneve.pdf}}%
+  \end{picture}%
+\endgroup%
diff --git a/doc/images/logo-hesso-geneve.svg b/doc/images/logo-hesso-geneve.svg
new file mode 100644
index 0000000000000000000000000000000000000000..050a0259eb38e3923609ebe135afda2a6b17d6a1
--- /dev/null
+++ b/doc/images/logo-hesso-geneve.svg
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 373.7 104.3" width="3737" height="1043" style="enable-background:new 0 0 373.7 104.3;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#AAAAA9;}
+	.st1{fill:#006EAB;}
+</style>
+<g>
+	<path class="st0" d="M38.1,83.6c-0.9,0-0.9,0-1.8,0l-0.1-0.1c0-1.7,0.1-3.5,0.1-5.1c-0.4,0-0.8,0-1.5,0c-1.3,0-2.6,0-3.8,0
+		c0,2.9,0,3.9,0.1,5L31,83.6c-0.9,0-0.9,0-1.8,0l-0.1-0.1c0.1-1.5,0.1-2.3,0.1-6.9c0-2,0-2.8-0.1-3.7l0.1-0.1c0.8,0,1,0,1.8,0
+		l0.1,0.1c0,0.9,0,2.1,0,4.2c0.8,0,1.3,0,2.3,0c1.5,0,2.2,0,2.9,0c0-2.9,0-3.2-0.1-4.2l0.1-0.1c0.9,0,1,0,1.8,0l0.1,0.1
+		c0,1.5-0.1,2.4-0.1,5.1c0,2.9,0.1,4.1,0.2,5.5L38.1,83.6z"/>
+	<path class="st0" d="M45.7,79.4v2.5c-0.2,0.2-0.8,0.7-1.8,0.7c-1.5,0-1.5-1.3-1.5-1.4c0-1.4,1.5-1.6,3.1-1.8L45.7,79.4z M47.4,79
+		c0-0.6,0-1.5-0.1-1.9c-0.3-1.2-1.5-1.6-2.7-1.6c-1,0-1.9,0.2-2.8,0.5l-0.1,0.1c0,0.3,0,0.4,0,1.1l0.1,0.1c0.7-0.3,1.4-0.6,2.5-0.6
+		c0.8,0,1.2,0.3,1.3,0.6c0.1,0.2,0.1,0.5,0.1,0.9l-0.3,0c-2.9,0.3-4.7,1-4.7,3c0,1.5,1.1,2.5,2.7,2.5c1.2,0,2-0.5,2.3-0.8l0,0.6
+		l0.1,0.1c0.7,0,0.9,0,1.6-0.1l0.1-0.1c-0.1-1-0.1-1.2-0.1-3V79z"/>
+	<path class="st0" d="M57.4,75.8c0,1.2,0,2.2,0,3.5c0,1.9,0,3,0.1,3.6c0,0.2,0,0.4,0,0.6l-0.1,0.1c-0.8,0-0.9,0-1.6,0.1l-0.1-0.1
+		l0-0.6c-0.4,0.2-1.2,0.9-2.5,0.9c-0.6,0-1.3-0.1-1.8-0.5c-1-0.8-1-2.1-1-3.3v-0.9c0-2.2,0-2.4-0.1-3.2l0.1-0.1c0.8,0,0.9,0,1.7-0.1
+		l0.1,0.1L52,79.1c0,0.4,0,0.7,0,1.4c0,0.6,0.1,2,1.7,2c0.9,0,1.6-0.5,2-0.8c0-0.8,0-1.5,0-2.4c0-2.1,0-2.5-0.1-3.5l0.1-0.1
+		c0.7,0,0.9,0,1.7-0.1L57.4,75.8z"/>
+	<path class="st0" d="M64.1,82.4c0,0.5,0,0.6-0.1,1.1L64,83.6c-0.3,0.1-0.6,0.1-1.2,0.1c-0.4,0-1.4,0-1.9-0.8
+		c-0.3-0.4-0.3-0.8-0.3-2.6l0-3.3c-0.6,0-0.6,0-1.2,0l-0.1-0.1c0-0.5,0-0.6,0-1.1l0.1-0.1c0.4,0,0.6,0,1.1,0c0-0.3,0-0.6,0-1
+		c0-0.3,0-0.6,0-0.9l0.1-0.1c0.7-0.2,0.9-0.2,1.6-0.4l0.1,0.1c0,1-0.1,1.2-0.1,2.3c0.7,0,0.9,0,1.8,0l0.1,0.1c0,0.4-0.1,0.6-0.1,1.1
+		l-0.1,0.1c-0.8,0-0.9,0-1.8,0l0,2.8c0,0.2,0,1.1,0,1.3c0,1.1,0.1,1.5,0.9,1.5c0.3,0,0.6-0.1,0.8-0.1L64.1,82.4z"/>
+	<path class="st0" d="M71.6,78.7c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.3,1.8,1.2C71.5,78.1,71.6,78.5,71.6,78.7z
+		 M72.8,81.7c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.2-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8c-0.5-0.6-0.6-1.4-0.6-1.9
+		c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2c0,2.6,1.7,4.1,4.3,4.1
+		c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L72.8,81.7z"/>
+	<path class="st0" d="M88.2,82.4c0,0.5,0,0.6-0.1,1.1L88,83.6c-3.1,0-3.6,0-6.7,0l-0.1-0.1c0.1-1.2,0.1-2,0.1-4.8c0-2.6,0-4-0.1-5.8
+		l0.1-0.1c3.2,0,3.8,0,6.8,0l0.1,0.1c0,0.5-0.1,0.6-0.1,1.2l-0.1,0.1c-2.1-0.1-2.8-0.1-4.8-0.1c-0.1,1.4-0.1,1.8-0.1,3.2
+		c2,0,2.6,0,4.6,0l0.1,0.1c-0.1,0.5-0.1,0.7-0.1,1.2l-0.1,0.1c-1.9,0-2.3,0-4.5,0c0,1.8,0,2.2,0,3.6c2.4,0,2.9,0,5-0.1L88.2,82.4z"
+		/>
+	<path class="st0" d="M96.6,81.8c-0.1,0.6-0.1,0.7-0.1,1.4l-0.1,0.1c-0.5,0.2-1.1,0.5-2.2,0.5c-2.4,0-4-1.7-4-4c0-2.4,1.5-4.2,4-4.2
+		c1,0,1.8,0.3,2.2,0.5l0.1,0.1c-0.1,0.5-0.1,0.7-0.1,1.2l-0.1,0.1c-0.5-0.4-1.1-0.6-1.8-0.6c-1.3,0-2.5,1-2.5,2.9
+		c0,2.1,1.2,2.8,2.5,2.8c1.1,0,1.8-0.5,2.1-0.8L96.6,81.8z"/>
+	<path class="st0" d="M104.5,79.6c0,0.3,0,1.3-0.4,2c-0.5,0.8-1.2,1-1.8,1c-0.3,0-0.7-0.1-1-0.2c-1.3-0.6-1.3-2.1-1.3-2.8
+		c0-0.6,0-1.5,0.5-2.1c0.6-0.8,1.5-0.9,1.8-0.9c0.9,0,1.4,0.4,1.7,0.9C104.4,78.2,104.5,79.2,104.5,79.6z M106.3,79.5
+		c0-1.1-0.2-2.1-1-2.9c-0.7-0.8-1.8-1.1-2.9-1.1c-1.6,0-2.5,0.6-3,1.1c-1.1,1-1.1,2.5-1.1,3.1c0,0.5,0,2,1.1,3.1
+		c0.5,0.5,1.4,1,2.9,1c1.1,0,2.1-0.3,2.8-0.9c0.5-0.5,0.9-1.1,1-1.8C106.2,80.6,106.3,80.1,106.3,79.5z"/>
+	<path class="st0" d="M110.6,83.6c-0.8,0-0.9,0-1.7,0.1l-0.1-0.1c0-1.1,0.1-2.4,0.1-5.4c0-2.1,0-4.3-0.2-6.3l0.1-0.1
+		c0.8-0.1,1-0.2,1.8-0.3l0.1,0.1c-0.1,2-0.1,4-0.1,6C110.5,80.9,110.6,82.1,110.6,83.6L110.6,83.6z"/>
+	<path class="st0" d="M118.9,78.7c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.3,1.8,1.2
+		C118.9,78.1,118.9,78.5,118.9,78.7z M120.1,81.7c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.2-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8
+		c-0.5-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2
+		c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0.1-0.7,0.1-1.4L120.1,81.7z"/>
+	<path class="st0" d="M132.7,77.5c1.2,0.5,2.7,1.1,2.7,3.1c0,1.7-1.3,3.2-4.1,3.2c-1.7,0-2.8-0.5-3.2-0.7l-0.1-0.1
+		c0.1-0.5,0.1-0.8,0.1-1.4l0.2-0.1c0.4,0.3,1.3,0.9,2.8,0.9c1.7,0,2.4-0.8,2.4-1.7c0-1.1-0.9-1.5-2-1.9l-0.8-0.3
+		c-1.1-0.5-2.7-1.2-2.7-3c0-0.6,0.2-1.1,0.5-1.6c0.7-1,2.1-1.3,3.4-1.3c1.3,0,2,0.2,2.9,0.5l0.1,0.1c-0.1,0.6-0.1,0.8-0.1,1.3
+		l-0.1,0.1c-0.7-0.3-1.5-0.7-2.7-0.7c-1.3,0-2.2,0.6-2.2,1.5c0,0.7,0.5,1,0.8,1.2c0.2,0.1,0.3,0.2,1.2,0.6L132.7,77.5z"/>
+	<path class="st0" d="M139.7,82.4c0-0.9,0-1.8,0-2.7c0-0.8,0-1.5,0-2.3c0.4-0.2,1-0.6,1.9-0.6c1.3,0,2.2,1,2.2,2.6
+		c0,1.9-1.2,3.1-3.4,3.1C140.1,82.5,139.9,82.5,139.7,82.4z M139.7,75.7l-0.1-0.1c-0.7,0.1-0.9,0.2-1.7,0.3l-0.1,0.1
+		c0.2,1.7,0.2,2.8,0.2,5.1c0,0.9,0,1.8,0,2.7c0,1.6,0,2.5-0.1,3.4l0.1,0.1c0.6,0,1.1,0,1.7,0l0.1-0.1c-0.1-1.4-0.1-1.8-0.1-3.6
+		c0.2,0,0.4,0,0.7,0c3.4,0,5.1-2,5.1-4.4c0-2.1-1.4-3.7-3.5-3.7c-1.3,0-2,0.6-2.4,0.8L139.7,75.7z"/>
+	<path class="st0" d="M153.4,78.7c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.3,1.8,1.2
+		C153.4,78.1,153.4,78.5,153.4,78.7z M153.3,72.3c-0.3,0-0.6,0-0.9,0s-0.6,0-1,0l-0.1,0.1c-0.4,1-0.8,2-1,2.3l0.1,0.1
+		c0.6,0,0.7,0,1.2,0l0.1-0.1c0.7-1.1,0.9-1.3,1.7-2.3L153.3,72.3z M154.6,81.7c-0.2,0.2-0.6,0.4-1.2,0.7c-0.4,0.2-0.9,0.2-1.4,0.2
+		c-0.5,0-1.4-0.1-2.1-0.8c-0.6-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1
+		c-2.1,0-3.9,1.4-3.9,4.2c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L154.6,81.7z"/>
+	<path class="st0" d="M163.6,81.8c-0.1,0.6-0.1,0.7-0.1,1.4l-0.1,0.1c-0.5,0.2-1.1,0.5-2.2,0.5c-2.4,0-4-1.7-4-4
+		c0-2.4,1.5-4.2,4-4.2c1,0,1.8,0.3,2.2,0.5l0.1,0.1c-0.1,0.5-0.1,0.7-0.1,1.2l-0.1,0.1c-0.5-0.4-1.1-0.6-1.8-0.6
+		c-1.3,0-2.5,1-2.5,2.9c0,2.1,1.2,2.8,2.5,2.8c1.1,0,1.8-0.5,2.1-0.8L163.6,81.8z"/>
+	<path class="st0" d="M167.4,83.6c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.8,0.1-1.5,0.1-3.2c0-2.9-0.1-3.4-0.2-4.3l0.1-0.1
+		c0.7-0.1,0.9-0.1,1.7-0.3l0.2,0.1c0,0.8-0.1,1.6-0.1,3.6C167.4,82.1,167.4,82.5,167.4,83.6L167.4,83.6z M167.4,73.5
+		c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.2,0-0.4,0-0.6c0-0.3,0-0.5,0-0.8l0.1-0.1c0.8-0.1,1-0.1,1.8-0.2l0.1,0.1c0,0.6,0,0.8,0,1.4
+		L167.4,73.5z"/>
+	<path class="st0" d="M174.9,79.4v2.5c-0.2,0.2-0.8,0.7-1.8,0.7c-1.5,0-1.5-1.3-1.5-1.4c0-1.4,1.5-1.6,3.1-1.8L174.9,79.4z
+		 M176.6,79c0-0.6,0-1.5-0.1-1.9c-0.3-1.2-1.5-1.6-2.7-1.6c-1,0-1.9,0.2-2.8,0.5l-0.1,0.1c0,0.3,0,0.4,0,1.1l0.1,0.1
+		c0.7-0.3,1.4-0.6,2.5-0.6c0.8,0,1.2,0.3,1.3,0.6c0.1,0.2,0.1,0.5,0.1,0.9l-0.3,0c-2.9,0.3-4.7,1-4.7,3c0,1.5,1.1,2.5,2.7,2.5
+		c1.2,0,2-0.5,2.3-0.8l0,0.6l0.1,0.1c0.7,0,0.9,0,1.6-0.1l0.1-0.1c-0.1-1-0.1-1.2-0.1-3V79z"/>
+	<path class="st0" d="M181.3,83.6c-0.8,0-0.9,0-1.7,0.1l-0.1-0.1c0-1.1,0.1-2.4,0.1-5.4c0-2.1,0-4.3-0.2-6.3l0.1-0.1
+		c0.8-0.1,1-0.2,1.8-0.3l0.1,0.1c-0.1,2-0.1,4-0.1,6C181.2,80.9,181.3,82.1,181.3,83.6L181.3,83.6z"/>
+	<path class="st0" d="M186.1,83.6c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.8,0.1-1.5,0.1-3.2c0-2.9,0-3.4-0.2-4.3l0.1-0.1
+		c0.7-0.1,0.9-0.1,1.7-0.3l0.2,0.1c0,0.8-0.1,1.6-0.1,3.6C186,82.1,186.1,82.5,186.1,83.6L186.1,83.6z M186.1,73.5
+		c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.2,0-0.4,0-0.6c0-0.3,0-0.5,0-0.8l0.1-0.1c0.8-0.1,1-0.1,1.8-0.2l0.1,0.1c0,0.6,0,0.8,0,1.4
+		L186.1,73.5z"/>
+	<path class="st0" d="M192.4,79c0.6,0.2,2.1,0.7,2.1,2.3c0,0.6-0.2,1.3-0.9,1.8c-0.9,0.7-2,0.7-2.6,0.7c-0.9,0-1.6-0.2-2.2-0.4
+		c-0.1,0-0.2-0.1-0.2-0.1l-0.1-0.1c0.1-0.6,0.1-0.7,0.1-1.3l0.2,0c0.3,0.2,1,0.7,2.2,0.7c1.3,0,1.7-0.7,1.7-1.1
+		c0-0.7-0.7-0.9-1.7-1.2l-0.5-0.2c-0.7-0.2-2.1-0.6-2.1-2.2c0-1.6,1.5-2.3,3.3-2.3c1.2,0,2,0.3,2.3,0.4l0.1,0.1
+		c-0.1,0.6-0.1,0.6-0.1,1.2l-0.1,0.1c-0.4-0.2-1-0.6-2.1-0.6c-0.2,0-0.5,0-0.7,0.1c-0.5,0.1-0.9,0.4-0.9,0.9c0,0.7,0.7,0.9,1.7,1.1
+		L192.4,79z"/>
+	<path class="st0" d="M202.2,78.7c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.3,1.8,1.2
+		C202.1,78.1,202.1,78.5,202.2,78.7z M202.1,72.3c-0.3,0-0.6,0-0.9,0c-0.3,0-0.6,0-0.9,0l-0.1,0.1c-0.4,1-0.8,2-1,2.3l0.1,0.1
+		c0.6,0,0.7,0,1.2,0l0.1-0.1c0.7-1.1,0.9-1.3,1.7-2.3L202.1,72.3z M203.4,81.7c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.2-0.9,0.2-1.4,0.2
+		c-0.5,0-1.4-0.1-2.1-0.8c-0.5-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0.1-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1
+		c-2.1,0-3.9,1.4-3.9,4.2c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L203.4,81.7z"/>
+	<path class="st0" d="M211.6,78.7c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.3,1.8,1.2
+		C211.6,78.1,211.6,78.5,211.6,78.7z M212.8,81.7c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.2-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8
+		c-0.5-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2
+		c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L212.8,81.7z"/>
+	<path class="st0" d="M51.4,99.9c-0.2,0.2-0.8,0.7-1.8,0.7c-0.8,0-1.4-0.4-1.7-0.7c-0.3-0.4-0.6-1-0.6-1.9c0-1.4,0.6-2.1,0.9-2.4
+		c0.8-0.7,1.8-0.7,2.3-0.7c0.3,0,0.5,0,0.8,0C51.4,97.4,51.4,97.9,51.4,99.9z M51.3,90c0.1,0.9,0.2,1.8,0.1,3.7c-0.4,0-0.6,0-0.9,0
+		c-0.8,0-2.4,0-3.5,1c-0.7,0.6-1.4,1.6-1.4,3.3c0,2.3,1.5,3.9,3.6,3.9c1.2,0,1.8-0.5,2.2-0.8l0,0.6l0.1,0.1c0.7,0,0.9,0,1.6,0
+		l0.1-0.1c-0.1-1-0.1-2.2-0.1-4.5c0-1.5,0-5.3,0.1-7.4l-0.1-0.1C52.4,89.8,52.2,89.8,51.3,90L51.3,90z"/>
+	<path class="st0" d="M61.5,96.8c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.4,1.8,1.2C61.4,96.3,61.4,96.6,61.5,96.8z
+		 M62.7,99.8c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.1-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8c-0.5-0.6-0.6-1.4-0.6-1.9
+		c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2c0,2.6,1.7,4.1,4.3,4.1
+		c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L62.7,99.8z"/>
+	<path class="st0" d="M75.2,95.7c1.2,0.5,2.7,1.1,2.7,3.1c0,1.7-1.3,3.2-4.1,3.2c-1.7,0-2.8-0.5-3.2-0.7l-0.1-0.1
+		c0.1-0.5,0.1-0.8,0.1-1.4l0.2-0.1c0.4,0.3,1.3,0.9,2.8,0.9c1.7,0,2.4-0.8,2.4-1.7c0-1.1-0.9-1.5-2-1.9l-0.8-0.3
+		c-1.1-0.5-2.7-1.2-2.7-3c0-0.6,0.2-1.1,0.5-1.6c0.7-1,2.1-1.3,3.4-1.3c1.3,0,2,0.2,2.9,0.5l0.1,0.1c-0.1,0.6-0.1,0.8-0.1,1.3
+		l-0.1,0.1c-0.7-0.3-1.5-0.7-2.7-0.7c-1.3,0-2.2,0.6-2.2,1.5c0,0.7,0.5,1,0.8,1.2c0.2,0.1,0.3,0.1,1.2,0.5L75.2,95.7z"/>
+	<path class="st0" d="M87.6,93.9c0,1.2,0,2.2,0,3.5c0,1.9,0,3,0.1,3.6c0,0.2,0,0.4,0,0.6l-0.1,0.1c-0.8,0-0.9,0-1.6,0.1l-0.1-0.1
+		l0-0.6c-0.4,0.2-1.2,0.9-2.5,0.9c-0.6,0-1.3-0.1-1.8-0.5c-1-0.8-1-2.1-1-3.3v-0.9c0-2.2,0-2.4-0.1-3.2l0.1-0.1c0.8,0,0.9,0,1.7-0.1
+		l0.1,0.1l-0.1,3.3c0,0.4,0,0.7,0,1.4c0,0.6,0,2,1.7,2c1,0,1.6-0.5,2-0.8c0-0.8,0-1.5,0-2.4c0-2.1,0-2.5-0.1-3.5l0.1-0.1
+		c0.7,0,0.9,0,1.7-0.1L87.6,93.9z"/>
+	<path class="st0" d="M92.4,101.7c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.8,0.1-1.5,0.1-3.2c0-2.9,0-3.4-0.2-4.3l0.1-0.1
+		c0.7-0.1,0.9-0.1,1.7-0.3l0.2,0.1c-0.1,0.8-0.1,1.6-0.1,3.6C92.4,100.2,92.4,100.6,92.4,101.7L92.4,101.7z M92.4,91.6
+		c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.2,0-0.4,0-0.6c0-0.3,0-0.5,0-0.8l0.1-0.1c0.8-0.1,1-0.1,1.8-0.1l0.1,0.1c0,0.6,0,0.8,0,1.4
+		L92.4,91.6z"/>
+	<path class="st0" d="M98.8,97.1c0.6,0.2,2.1,0.7,2.1,2.3c0,0.6-0.2,1.3-0.9,1.8c-0.9,0.7-2,0.7-2.6,0.7c-0.9,0-1.6-0.2-2.2-0.4
+		c-0.1,0-0.2-0.1-0.2-0.1l-0.1-0.1c0.1-0.6,0.1-0.7,0.1-1.3l0.2,0c0.3,0.2,1,0.7,2.2,0.7c1.3,0,1.7-0.7,1.7-1.1
+		c0-0.7-0.7-0.9-1.7-1.2l-0.5-0.2c-0.7-0.2-2.1-0.6-2.1-2.2c0-1.6,1.5-2.3,3.3-2.3c1.2,0,2,0.3,2.3,0.4l0.1,0.1
+		c-0.1,0.6-0.1,0.6-0.1,1.2l-0.1,0.1c-0.4-0.2-1-0.6-2.1-0.6c-0.2,0-0.5,0-0.7,0.1c-0.5,0.1-0.9,0.4-0.9,0.9c0,0.6,0.7,0.9,1.7,1.1
+		L98.8,97.1z"/>
+	<path class="st0" d="M106.5,97.1c0.6,0.2,2.1,0.7,2.1,2.3c0,0.6-0.2,1.3-0.9,1.8c-0.9,0.7-2,0.7-2.6,0.7c-0.9,0-1.6-0.2-2.2-0.4
+		c-0.1,0-0.2-0.1-0.2-0.1l-0.1-0.1c0.1-0.6,0.1-0.7,0.1-1.3l0.2,0c0.3,0.2,1,0.7,2.2,0.7c1.3,0,1.7-0.7,1.7-1.1
+		c0-0.7-0.7-0.9-1.7-1.2l-0.5-0.2c-0.7-0.2-2.1-0.6-2.1-2.2c0-1.6,1.4-2.3,3.3-2.3c1.2,0,2,0.3,2.3,0.4l0.1,0.1
+		c-0.1,0.6-0.1,0.6-0.1,1.2l-0.1,0.1c-0.4-0.2-1-0.6-2.1-0.6c-0.2,0-0.5,0-0.7,0.1c-0.5,0.1-0.9,0.4-0.9,0.9c0,0.6,0.7,0.9,1.7,1.1
+		L106.5,97.1z"/>
+	<path class="st0" d="M116.3,96.8c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.4,1.8,1.2
+		C116.2,96.3,116.2,96.6,116.3,96.8z M117.5,99.8c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.1-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8
+		c-0.5-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2
+		c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L117.5,99.8z"/>
+	<path class="st0" d="M131.6,97.7c0,0.3,0,1.3-0.4,2c-0.5,0.8-1.2,1-1.8,1c-0.3,0-0.7-0.1-0.9-0.2c-1.3-0.6-1.3-2.1-1.3-2.7
+		c0-0.6,0.1-1.5,0.5-2.1c0.6-0.8,1.5-0.9,1.8-0.9c0.9,0,1.4,0.4,1.7,0.9C131.5,96.4,131.6,97.4,131.6,97.7z M133.4,97.7
+		c0-1.1-0.2-2.1-1-2.9c-0.7-0.8-1.8-1.1-2.9-1.1c-1.6,0-2.5,0.6-3,1.1c-1.1,1-1.1,2.5-1.1,3.1c0,0.5,0,2,1.1,3.1
+		c0.5,0.5,1.4,1,2.9,1c1.1,0,2.1-0.3,2.8-0.9c0.5-0.5,0.9-1.1,1-1.8C133.3,98.7,133.4,98.2,133.4,97.7z"/>
+	<path class="st0" d="M142,99.9c-0.1,0.7-0.1,0.7-0.1,1.4l-0.1,0.1c-0.5,0.2-1.1,0.5-2.2,0.5c-2.4,0-4-1.7-4-4c0-2.4,1.5-4.2,4-4.2
+		c1,0,1.8,0.3,2.2,0.5l0.1,0.1c-0.1,0.5-0.1,0.7-0.1,1.2l-0.1,0.1c-0.5-0.4-1.1-0.6-1.8-0.6c-1.3,0-2.5,1-2.5,2.9
+		c0,2.1,1.2,2.8,2.5,2.8c1.1,0,1.8-0.5,2.1-0.8L142,99.9z"/>
+	<path class="st0" d="M150.1,99.9c-0.1,0.7-0.1,0.7-0.1,1.4l-0.1,0.1c-0.5,0.2-1.1,0.5-2.2,0.5c-2.4,0-4-1.7-4-4
+		c0-2.4,1.5-4.2,4-4.2c1,0,1.8,0.3,2.2,0.5l0.1,0.1c-0.1,0.5-0.1,0.7-0.1,1.2l-0.1,0.1c-0.5-0.4-1.1-0.6-1.8-0.6
+		c-1.3,0-2.5,1-2.5,2.9c0,2.1,1.2,2.8,2.5,2.8c1.1,0,1.8-0.5,2.1-0.8L150.1,99.9z"/>
+	<path class="st0" d="M153.9,101.7c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.8,0.1-1.5,0.1-3.2c0-2.9,0-3.4-0.2-4.3l0.1-0.1
+		c0.7-0.1,0.9-0.1,1.7-0.3l0.2,0.1c0,0.8-0.1,1.6-0.1,3.6C153.9,100.2,153.9,100.6,153.9,101.7L153.9,101.7z M153.9,91.6
+		c-0.8,0-1,0-1.8,0.1l-0.1-0.1c0-0.2,0-0.4,0-0.6c0-0.3,0-0.5,0-0.8l0.1-0.1c0.8-0.1,1-0.1,1.8-0.1l0.1,0.1c0,0.6,0,0.8,0,1.4
+		L153.9,91.6z"/>
+	<path class="st0" d="M162.3,99.9c-0.2,0.2-0.8,0.7-1.8,0.7c-0.8,0-1.4-0.4-1.7-0.7c-0.3-0.4-0.6-1-0.6-1.9c0-1.4,0.6-2.1,0.9-2.4
+		c0.8-0.7,1.8-0.7,2.3-0.7c0.3,0,0.5,0,0.8,0C162.3,97.4,162.3,97.9,162.3,99.9z M162.2,90c0.1,0.9,0.2,1.8,0.1,3.7
+		c-0.4,0-0.6,0-0.9,0c-0.8,0-2.4,0-3.5,1c-0.7,0.6-1.4,1.6-1.4,3.3c0,2.3,1.5,3.9,3.6,3.9c1.2,0,1.8-0.5,2.2-0.8l0,0.6l0.1,0.1
+		c0.7,0,0.9,0,1.6,0l0.1-0.1c-0.1-1-0.1-2.2-0.1-4.5c0-1.5,0-5.3,0.1-7.4l-0.1-0.1C163.3,89.8,163.1,89.8,162.2,90L162.2,90z"/>
+	<path class="st0" d="M172.4,96.8c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.4,1.8,1.2
+		C172.3,96.3,172.4,96.6,172.4,96.8z M173.6,99.8c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.1-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8
+		c-0.6-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0.1-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2
+		c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L173.6,99.8z"/>
+	<path class="st0" d="M183.6,101.7c-0.8,0-0.9,0-1.6,0.1l-0.1-0.1c0-0.2,0-0.3,0-0.5c0-0.7,0-1.5,0-2.2c0-2.3,0-2.5-0.1-2.8
+		c-0.3-1.2-1.2-1.2-1.5-1.2c-1,0-1.7,0.5-2.1,0.8c0,2.6,0,4,0.1,5.8l-0.1,0.1c-0.8,0-0.9,0-1.7,0.1l-0.1-0.1c0-0.8,0-1.7,0-2.8
+		c0-2.4-0.1-3.7-0.2-4.7l0.1-0.1c0.8-0.1,1-0.2,1.7-0.3l0.1,0.1l0,0.8c0.4-0.3,1.4-0.9,2.8-0.9c0.4,0,0.9,0.1,1.3,0.3
+		c0.4,0.2,0.8,0.6,0.9,1c0.2,0.5,0.2,0.9,0.2,1.8v1.8C183.7,100.4,183.7,101.1,183.6,101.7L183.6,101.7z"/>
+	<path class="st0" d="M190.3,100.6c0,0.5,0,0.6-0.1,1.1l-0.1,0.1c-0.3,0.1-0.6,0.1-1.2,0.1c-0.4,0-1.4,0-1.9-0.8
+		c-0.3-0.4-0.3-0.8-0.3-2.6l0-3.3c-0.6,0-0.6,0-1.2,0l-0.1-0.1c0-0.5,0-0.6,0-1.1l0.1-0.1c0.4,0,0.6,0,1.1,0c0-0.3,0-0.6,0-1
+		c0-0.3,0-0.6,0-0.9l0.1-0.1c0.7-0.2,0.9-0.2,1.6-0.4l0.1,0.1c0,1-0.1,1.2-0.1,2.3c0.7,0,0.9,0,1.8,0l0.1,0.1c0,0.4,0,0.6,0,1.1
+		l-0.1,0.1c-0.8,0-0.9,0-1.8,0l0,2.8c0,0.2,0,1.1,0,1.3c0,1.1,0.1,1.5,1,1.5c0.3,0,0.6-0.1,0.8-0.1L190.3,100.6z"/>
+	<path class="st0" d="M196.9,97.5v2.5c-0.2,0.1-0.8,0.7-1.8,0.7c-1.5,0-1.5-1.3-1.5-1.4c0-1.4,1.5-1.6,3.1-1.8L196.9,97.5z
+		 M198.5,97.1c0-0.6,0-1.5-0.1-1.9c-0.3-1.2-1.5-1.6-2.7-1.6c-1,0-1.9,0.2-2.8,0.5l-0.1,0.1c0,0.3,0,0.4,0,1.1l0.1,0.1
+		c0.7-0.3,1.4-0.6,2.4-0.6c0.8,0,1.2,0.3,1.3,0.6c0.1,0.2,0.1,0.5,0.1,0.9l-0.3,0c-2.9,0.3-4.7,1-4.7,3c0,1.5,1.1,2.5,2.7,2.5
+		c1.2,0,1.9-0.5,2.3-0.8l0,0.5l0.1,0.1c0.7,0,0.9,0,1.6-0.1l0.1-0.1c-0.1-1-0.1-1.2-0.1-3V97.1z"/>
+	<path class="st0" d="M203.3,101.7c-0.8,0-0.9,0-1.7,0.1l-0.1-0.1c0-1.1,0.1-2.4,0.1-5.4c0-2.1,0-4.3-0.2-6.3l0.1-0.1
+		c0.8-0.1,1-0.1,1.8-0.3l0.1,0.1c-0.1,2-0.1,4-0.1,6C203.2,99.1,203.3,100.2,203.3,101.7L203.3,101.7z"/>
+	<path class="st0" d="M211.6,96.8c-1.5,0-2.1,0-4,0c0.2-1.5,1.2-2.1,2.1-2.1c0.7,0,1.4,0.4,1.8,1.2
+		C211.6,96.3,211.6,96.6,211.6,96.8z M212.8,99.8c-0.2,0.2-0.6,0.4-1.2,0.7c-0.5,0.1-0.9,0.2-1.4,0.2c-0.5,0-1.4-0.1-2.1-0.8
+		c-0.5-0.6-0.6-1.4-0.6-1.9c2.6,0,3.1,0,5.6,0l0.1-0.1c0-0.7,0-2.2-0.9-3.2c-0.5-0.5-1.4-1-2.6-1c-2.1,0-3.9,1.4-3.9,4.2
+		c0,2.6,1.7,4.1,4.3,4.1c1.4,0,2.3-0.4,2.6-0.6l0.1-0.1c0-0.6,0-0.7,0.1-1.4L212.8,99.8z"/>
+	<path class="st0" d="M166.1,36.4c2.8,0.9,9.2,2.9,9.2,9.9c0,2.6-1.1,5.6-3.9,7.8c-3.7,3-8.7,3.2-11.2,3.2c-3.8,0-6.9-0.7-9.6-1.7
+		c-0.4-0.1-0.7-0.3-1.1-0.4l-0.3-0.6c0.3-2.6,0.3-2.9,0.4-5.5l0.7-0.2c1.3,0.9,4.3,3.2,9.7,3.2c5.5,0,7.6-2.9,7.6-4.9
+		c0-3-3-4-7.3-5.3l-2.2-0.7c-2.9-0.9-9.2-2.8-9.2-9.6c0-6.8,6.3-10.2,14.1-10.2c5.2,0,8.8,1.4,10.1,1.8l0.3,0.5
+		c-0.3,2.4-0.3,2.7-0.6,5.2l-0.6,0.3c-1.8-1.1-4.5-2.6-9-2.6c-1,0-2,0.1-3,0.3c-2.1,0.5-3.8,1.9-3.8,4c0,2.8,2.9,3.7,7.2,4.9
+		L166.1,36.4z"/>
+	<path class="st0" d="M208.2,39.1c0.1,1.4,0,5.8-1.6,8.8c-2,3.6-5.4,4.4-8,4.4c-1.4,0-2.9-0.3-4.1-0.9c-5.5-2.6-5.6-9.3-5.6-11.9
+		c0-2.8,0.2-6.6,2.1-9.3c2.5-3.7,6.4-3.8,7.7-3.8c3.9,0,6.2,1.7,7.5,3.8C207.9,33,208.2,37.4,208.2,39.1z M215.8,38.8
+		c-0.1-4.6-1-9.2-4.3-12.7c-3.1-3.3-7.8-4.7-12.5-4.7c-7,0-11.1,2.7-13,4.6c-4.7,4.4-4.8,10.9-4.8,13.4c0,2.2,0.1,8.9,4.8,13.5
+		c2.2,2.2,6.2,4.4,12.5,4.4c4.9,0,9-1.1,12.1-4c2.3-2.2,3.8-4.7,4.6-8C215.7,43.2,215.8,41.1,215.8,38.8z"/>
+	<circle class="st0" cx="136.7" cy="39.4" r="4.2"/>
+</g>
+<g>
+	<path class="st1" d="M45,10.4c-0.1,5.1-0.1,8.2-0.1,12.8c0,11.1,0.2,22.1,0.8,33.2l-0.3,0.4c-5.9-0.1-7.3,0-12.6,0.2l-0.4-0.4
+		c0.4-9.3,0.4-11.5,0.2-20.4c-2.8-0.1-5.6-0.1-8.4-0.1c-2.7,0-5.3,0.1-8.4,0.2c0.1,9.6,0.1,11.9,0.6,20.1L16,56.7
+		c-6.2-0.1-7.4,0-12.5,0.2l-0.4-0.4c0.1-5.5,0.3-8.8,0.3-14.7c0-16.4-0.4-24.5-0.8-31.3L3,10.2c6.1,0,7.1,0,12.5-0.2l0.3,0.4
+		l-0.1,17.4c2.4,0,5,0.1,7.4,0.1c3.1,0,6.2-0.1,9.3-0.1c-0.1-7.8-0.1-9.7-0.6-17.1l0.4-0.4c5.9,0,6.8,0,12.4-0.2L45,10.4z"/>
+	<path class="st1" d="M64.4,35.2c0.2-2,0.7-4.8,3.4-6.4c0.8-0.5,1.8-0.7,2.8-0.7c2.3,0,3.7,1.1,4.5,2.3c1,1.5,1,3,1,4.5L64.4,35.2z
+		 M85.6,47c-2.7,1.3-5.8,2.8-10.9,2.8c-4.2,0-7.1-1.3-8.7-3.6c-1.1-1.4-1.3-2.7-1.5-4L87,41.8l0.4-0.5c-0.1-3.2-0.1-6.5-1.1-9.8
+		c-2.5-7.8-7.8-9.4-10.2-9.9c-1.7-0.5-3.4-0.6-5-0.6c-11,0-18.3,6.8-18.3,18.2c0,3.1,0.6,6.3,1.7,8.6c4.1,8.9,13.6,9.7,18.6,9.7
+		c5.8,0,8.3-1,12-2.4l0.4-0.5l0.5-7.4L85.6,47z"/>
+	<path class="st1" d="M115.1,35.2c3.9,1.4,9.2,3.3,9.2,10.5c0,0.5,0,0.9-0.1,1.5c-1.3,9.4-11.8,10.3-17.1,10.3
+		c-5.1,0-8-1.1-11.5-2.2l-0.3-0.6c0.3-3.3,0.3-4,0.5-7.4l0.6-0.3c1,0.8,1.6,1.3,2.8,1.8c2.6,1.3,5.5,1.8,7.4,1.8
+		c3.9,0,5.5-1.8,5.5-3.4c0-2.4-3.1-3.4-5-4l-2.7-0.9c-3.3-1.2-9.1-3.3-9.1-10.4c0-2.6,1-4.6,1.9-5.8c3.6-4.9,10.5-5.2,13.9-5.2
+		c4.6,0,7.4,0.8,10.7,1.6l0.3,0.4l-0.7,7.2l-0.6,0.2c-1.7-1.1-4.5-2.8-8.7-2.8c-4.3,0-4.9,2.2-4.9,3c0,1.8,1.9,2.6,4.3,3.4
+		L115.1,35.2z"/>
+</g>
+<path class="st0" d="M239.7,8.6c-0.1,0.3-20.4,43.4-20.4,43.4c-1.1,2.3-1.6,3.3-1.6,5.2c0,4,3,7.1,6.8,7.1c4.5,0,6.2-3.5,7.5-6
+	l21.2-44.9c0.6-1.3,1.2-2.7,1.2-4.6c0-3.9-3-6.9-6.9-6.9C242.9,1.9,241.1,5.8,239.7,8.6z M220.1,57.3c0-1.4,0.3-2,1.3-4.1
+	c0.1-0.2,20.4-43.3,20.4-43.3c1.4-2.9,2.7-5.6,5.8-5.6c2.6,0,4.5,2,4.5,4.6c0,1.4-0.4,2.5-1,3.6c0,0-21.2,44.9-21.2,44.9
+	c-1.2,2.3-2.4,4.7-5.4,4.7C222,62,220.1,59.9,220.1,57.3z"/>
+<path class="st0" d="M259.1,8.6c-0.1,0.2-20.4,43.4-20.4,43.4c-1.1,2.3-1.6,3.3-1.6,5.2c0,4,3,7.1,6.8,7.1c4.5,0,6.2-3.5,7.5-6.1
+	l21.2-44.9c0.6-1.3,1.2-2.7,1.2-4.6c0-3.9-3-6.9-6.9-6.9C262.4,1.9,260.5,5.8,259.1,8.6z M239.5,57.3c0-1.4,0.3-2,1.3-4.1
+	c0.1-0.1,20.3-43.3,20.3-43.3c1.4-2.9,2.7-5.6,5.8-5.6c2.6,0,4.5,2,4.5,4.6c0,1.4-0.4,2.5-1,3.6c0,0-21.1,44.7-21.2,44.9
+	c-1.4,2.8-2.6,4.7-5.4,4.7C241.4,62,239.5,59.9,239.5,57.3z"/>
+<g>
+	<g>
+		<path class="st0" d="M286.6,43.6c1.9,0,2.7,1,2.7,3c0,6-3.9,10.4-10.1,10.4c-6.3,0-10.6-5-10.6-11.4c0-6.4,4.3-11.4,10.6-11.4
+			c4.7,0,8.5,2.2,8.5,4.4c0,1.3-0.8,2.2-1.9,2.2c-2.1,0-2.5-2.3-6.6-2.3c-3.9,0-5.8,3.4-5.8,7.1c0,3.8,1.9,7.1,5.8,7.1
+			c2.4,0,5.3-1.4,5.3-4.9h-3.1c-1.3,0-2.2-0.9-2.2-2.2c0-1.3,1-2.1,2.2-2.1H286.6z"/>
+		<path class="st0" d="M291,37.3c0-1.5,0.8-2.7,2.4-2.7h7.7c1.5,0,2.2,1,2.2,2.1c0,1.1-0.7,2.1-2.2,2.1h-5.4v4.5h5.1
+			c1.5,0,2.3,1.1,2.3,2.1c0,1-0.8,2.1-2.3,2.1h-5.1v4.7h5.7c1.5,0,2.2,1,2.2,2.1c0,1.1-0.7,2.1-2.2,2.1h-8c-1.4,0-2.4-0.9-2.4-2.3
+			V37.3z"/>
+		<path class="st0" d="M305.1,36.9c0-1.5,1-2.4,2.3-2.4c0.6,0,1.5,0.5,1.9,1l9.8,13.1h0.1V36.9c0-1.5,1-2.4,2.3-2.4
+			c1.3,0,2.3,0.9,2.3,2.4v17.5c0,1.5-1,2.4-2.3,2.4c-0.6,0-1.5-0.5-1.9-1l-9.8-12.9h-0.1v11.5c0,1.5-1,2.4-2.3,2.4s-2.3-0.9-2.3-2.4
+			V36.9z"/>
+		<path class="st0" d="M326.4,37.3c0-1.5,0.8-2.7,2.4-2.7h7.7c1.5,0,2.2,1,2.2,2.1c0,1.1-0.7,2.1-2.2,2.1h-5.4v4.5h5.1
+			c1.5,0,2.3,1.1,2.3,2.1c0,1-0.8,2.1-2.3,2.1h-5.1v4.7h5.7c1.5,0,2.2,1,2.2,2.1c0,1.1-0.7,2.1-2.2,2.1h-8c-1.4,0-2.4-0.9-2.4-2.3
+			V37.3z M334.9,29.5l0.2,0.1c0.5,0.3,0.9,0.8,0.9,1.2c0,1.1-0.7,2.3-1.6,2.3c-0.6,0-0.3,0-1.2-0.3l-3.5-1.4
+			c-0.9-0.3-1.3-0.9-1.3-1.8c0-0.8,0.7-1.9,1.7-1.9c0.3,0,0.7,0.1,1.2,0.3L334.9,29.5z"/>
+		<path class="st0" d="M339.6,37.8c-0.2-0.4-0.2-0.7-0.2-1.1c0-1.3,1.1-2.2,2.4-2.2c1,0,1.7,0.7,2.1,1.5l4.8,12.8l4.8-12.8
+			c0.4-0.8,1.1-1.5,2.1-1.5c1.2,0,2.4,0.9,2.4,2.2c0,0.4-0.1,0.7-0.2,1.1L351,55c-0.4,1-0.9,1.8-2.3,1.8c-1.4,0-1.9-0.8-2.3-1.8
+			L339.6,37.8z"/>
+		<path class="st0" d="M359.2,37.3c0-1.5,0.8-2.7,2.4-2.7h7.7c1.5,0,2.2,1,2.2,2.1c0,1.1-0.7,2.1-2.2,2.1h-5.4v4.5h5.1
+			c1.5,0,2.3,1.1,2.3,2.1c0,1-0.8,2.1-2.3,2.1h-5.1v4.7h5.7c1.5,0,2.2,1,2.2,2.1c0,1.1-0.7,2.1-2.2,2.1h-8c-1.4,0-2.4-0.9-2.4-2.3
+			V37.3z"/>
+	</g>
+</g>
+</svg>
diff --git a/doc/images/logo_hepia.pdf b/doc/images/logo_hepia.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..7fa20963c763a6c41dfb3a462196e4d3e850200a
Binary files /dev/null and b/doc/images/logo_hepia.pdf differ
diff --git a/doc/images/logo_hepia.pdf_tex b/doc/images/logo_hepia.pdf_tex
new file mode 100644
index 0000000000000000000000000000000000000000..c531956871d067f49e69126dd5aa95659607de47
--- /dev/null
+++ b/doc/images/logo_hepia.pdf_tex
@@ -0,0 +1,58 @@
+%% Creator: Inkscape 1.0 (4035a4fb49, 2020-05-01), www.inkscape.org
+%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
+%% Accompanies image file 'logo_hepia.pdf' (pdf, eps, ps)
+%%
+%% To include the image in your LaTeX document, write
+%%   \input{<filename>.pdf_tex}
+%%  instead of
+%%   \includegraphics{<filename>.pdf}
+%% To scale the image, write
+%%   \def\svgwidth{<desired width>}
+%%   \input{<filename>.pdf_tex}
+%%  instead of
+%%   \includegraphics[width=<desired width>]{<filename>.pdf}
+%%
+%% Images with a different path to the parent latex file can
+%% be accessed with the `import' package (which may need to be
+%% installed) using
+%%   \usepackage{import}
+%% in the preamble, and then including the image with
+%%   \import{<path to file>}{<filename>.pdf_tex}
+%% Alternatively, one can specify
+%%   \graphicspath{{<path to file>/}}
+%% 
+%% For more information, please see info/svg-inkscape on CTAN:
+%%   http://tug.ctan.org/tex-archive/info/svg-inkscape
+%%
+\begingroup%
+  \makeatletter%
+  \providecommand\color[2][]{%
+    \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
+    \renewcommand\color[2][]{}%
+  }%
+  \providecommand\transparent[1]{%
+    \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
+    \renewcommand\transparent[1]{}%
+  }%
+  \providecommand\rotatebox[2]{#2}%
+  \newcommand*\fsize{\dimexpr\f@size pt\relax}%
+  \newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
+  \ifx\svgwidth\undefined%
+    \setlength{\unitlength}{209.145bp}%
+    \ifx\svgscale\undefined%
+      \relax%
+    \else%
+      \setlength{\unitlength}{\unitlength * \real{\svgscale}}%
+    \fi%
+  \else%
+    \setlength{\unitlength}{\svgwidth}%
+  \fi%
+  \global\let\svgwidth\undefined%
+  \global\let\svgscale\undefined%
+  \makeatother%
+  \begin{picture}(1,0.2545015)%
+    \lineheight{1}%
+    \setlength\tabcolsep{0pt}%
+    \put(0,0){\includegraphics[width=\unitlength,page=1]{logo_hepia.pdf}}%
+  \end{picture}%
+\endgroup%
diff --git a/doc/images/logo_hepia.svg b/doc/images/logo_hepia.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f42885519fa444621e0ab171c235de96cfdd2ae1
--- /dev/null
+++ b/doc/images/logo_hepia.svg
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 278.9 70.92" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata>
+  <rdf:RDF>
+   <cc:Work rdf:about="">
+    <dc:format>image/svg+xml</dc:format>
+    <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+    <dc:title>logo_hepia</dc:title>
+   </cc:Work>
+  </rdf:RDF>
+ </metadata>
+ <defs>
+  <style>.cls-1{isolation:isolate;}.cls-2{fill:#e2001a;}.cls-3{mix-blend-mode:lighten;}</style>
+ </defs>
+ <title>logo_hepia</title>
+ <g class="cls-1">
+  <g data-name="Calque 1">
+   <rect class="cls-2" y="26.59" width="66.01" height="4.35"/>
+   <path transform="translate(-239.85 -265.76)" d="M303.58,318.65h-1.39v-5.45h-3.88v5.45h-1.39v-11.3h1.39V312h3.88v-4.62h1.39Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M305.59,312.73c0-1.93.82-2.79,2.85-2.79,2.58,0,2.58,1.55,2.58,2.44v4.73c0,.35,0,.68.41.68a.48.48,0,0,0,.32-.08v1a4.88,4.88,0,0,1-.78.08c-.51,0-1.14,0-1.2-1.09h0a2.4,2.4,0,0,1-2,1.22c-1.58,0-2.31-.95-2.31-2.47a2.2,2.2,0,0,1,1.6-2.34l1.79-.54c1-.3,1-.57,1-1.28s-.48-1.25-1.36-1.25a1.45,1.45,0,0,0-1.46,1.66v.08Zm4.1,1.3c-.49.52-1.66.63-2.26,1a1.35,1.35,0,0,0-.65,1.35c0,.86.3,1.46,1.2,1.46a1.73,1.73,0,0,0,1.71-1.62Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m318.68 318.65h-1.27v-1a2.27 2.27 0 0 1-2.06 1.22c-2.23 0-2.23-1.69-2.23-2.69v-6h1.33v5.82c0 0.65 0 1.71 1.25 1.71a1.64 1.64 0 0 0 1.68-1.71v-5.86h1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M321.16,307.7h1.33v2.47H324v1h-1.47v5.45c0,.68.17,1,.87,1a4.08,4.08,0,0,0,.59,0v1.09a5.46,5.46,0,0,1-1.08.1c-1.38,0-1.71-.57-1.71-1.68v-5.86h-1.23v-1h1.23Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M326.08,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.58,3-4.58s2.83,2.27,2.83,4.09v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M337.6,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2H342a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.58,3-4.58s2.83,2.27,2.83,4.09v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Zm-1.22-6.78H341L339.29,309h-1Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M347.82,312.75c0-.82-.33-1.76-1.35-1.76-.82,0-1.66.41-1.66,3.52,0,1.11,0,3.32,1.61,3.32,1.14,0,1.39-1.2,1.39-2.12h1.33c0,1.35-.66,3.17-2.79,3.17s-2.94-1.44-2.94-4.35c0-2.12.41-4.58,3-4.58a2.56,2.56,0,0,1,2.71,2.8Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m353.52 309.95c2.45 0 3.06 2.07 3.06 4.46s-0.62 4.46-3.06 4.46-3.06-2.07-3.06-4.46 0.62-4.46 3.06-4.46zm1.66 4.46c0-1.84-0.27-3.42-1.69-3.42s-1.63 1.58-1.63 3.42 0.27 3.42 1.63 3.42 1.69-1.58 1.69-3.42z"/>
+   <path transform="translate(-239.85 -265.76)" d="m358.17 307.35h1.33v11.3h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M362.52,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.58,3-4.58S367,312.21,367,314v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m378.53 318.65h-1.27v-1a1.92 1.92 0 0 1-1.84 1.27c-2 0-2.77-1.79-2.77-4.46 0-1.77 0.29-4.46 2.68-4.46a2.06 2.06 0 0 1 1.87 1.19v-3.78h1.33zm-3-0.92c1.47 0 1.71-1.39 1.71-3.33 0-1.65-0.29-3.32-1.71-3.32-1.23 0-1.55 1.3-1.55 3.32s0.36 3.34 1.59 3.34z"/>
+   <path transform="translate(-239.85 -265.76)" d="m385.71 318.65h-1.27v-1a2.27 2.27 0 0 1-2.06 1.22c-2.23 0-2.23-1.69-2.23-2.69v-6h1.33v5.82c0 0.65 0 1.71 1.25 1.71a1.64 1.64 0 0 0 1.68-1.71v-5.86h1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="m391.94 310.17h1.27v1a1.92 1.92 0 0 1 1.84-1.27c2 0 2.77 1.79 2.77 4.31 0 1.93-0.57 4.62-2.77 4.62a1.92 1.92 0 0 1-1.77-1.19v3.75h-1.33zm3 7.57c1.23 0 1.55-1.3 1.55-3.48 0-1.87-0.32-3.17-1.55-3.17-1.47 0-1.71 1.39-1.71 3.32-0.03 1.65 0.25 3.33 1.68 3.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M399.42,312.73c0-1.93.82-2.79,2.85-2.79,2.58,0,2.58,1.55,2.58,2.44v4.73c0,.35,0,.68.41.68a.48.48,0,0,0,.32-.08v1a4.89,4.89,0,0,1-.78.08c-.51,0-1.14,0-1.2-1.09h0a2.4,2.4,0,0,1-2,1.22c-1.58,0-2.31-.95-2.31-2.47a2.2,2.2,0,0,1,1.6-2.34l1.79-.54c1-.3,1-.57,1-1.28s-.47-1.25-1.36-1.25a1.45,1.45,0,0,0-1.46,1.66v.08Zm4.1,1.3c-.49.52-1.66.63-2.26,1a1.35,1.35,0,0,0-.65,1.35c0,.86.3,1.46,1.2,1.46a1.73,1.73,0,0,0,1.71-1.62Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m406.2 310.17h1.46l1.68 6.81 1.49-6.81h1.46l-2.45 9.05c-0.32 1.17-0.67 2.22-2.26 2.22h-1v-1a5 5 0 0 0 0.78 0 1 1 0 0 0 1-0.82l0.25-0.74z"/>
+   <path transform="translate(-239.85 -265.76)" d="M417.25,312.65c0-1.08-.29-1.66-1.25-1.66a1.22,1.22,0,0,0-1.38,1.3c0,1,1,1.19,2.09,1.54s2.07.71,2.07,2.39a2.48,2.48,0,0,1-2.74,2.66c-2.88,0-2.91-2.14-2.91-3h1.33c0,1,.29,2,1.58,2a1.33,1.33,0,0,0,1.41-1.41c0-1.14-1-1.38-2.07-1.73s-2.09-.65-2.09-2.41c0-1.58,1.23-2.34,2.71-2.34,2.47,0,2.56,1.71,2.58,2.71Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M420.19,312.73c0-1.93.82-2.79,2.85-2.79,2.58,0,2.58,1.55,2.58,2.44v4.73c0,.35,0,.68.41.68a.49.49,0,0,0,.32-.08v1a4.9,4.9,0,0,1-.78.08c-.51,0-1.14,0-1.2-1.09h0a2.4,2.4,0,0,1-2,1.22c-1.58,0-2.31-.95-2.31-2.47a2.2,2.2,0,0,1,1.6-2.34l1.79-.54c1-.3,1-.57,1-1.28S423.87,311,423,311a1.45,1.45,0,0,0-1.46,1.66v.08Zm4.1,1.3c-.49.52-1.66.63-2.26,1a1.35,1.35,0,0,0-.65,1.35c0,.86.3,1.46,1.2,1.46a1.73,1.73,0,0,0,1.71-1.62Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m433.11 318.12c0 2.53-1.17 3.45-2.88 3.45a2.46 2.46 0 0 1-2.79-2.12h1.33c0.06 0.78 0.67 1.08 1.36 1.08 1.71 0 1.65-1.31 1.65-1.9v-1.11a2 2 0 0 1-1.92 1.14c-2.47 0-2.63-3.12-2.63-4.24 0-2.29 0.62-4.46 2.77-4.46a1.91 1.91 0 0 1 1.84 1.3v-1.08h1.27zm-4.51-3.7c0 1.38 0.21 3.1 1.54 3.1s1.72-1.36 1.72-3.1-0.29-3.32-1.71-3.32c-1.24-0.01-1.55 1.28-1.55 3.31z"/>
+   <path transform="translate(-239.85 -265.76)" d="M436.31,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.95-1.44-2.95-4.35,0-2.12.41-4.58,3-4.58s2.83,2.27,2.83,4.09v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M442.21,317h1.46v1.38c0,1.2-.09,2.28-1.46,2.64v-.74a1.12,1.12,0,0,0,.7-1.22v-.38h-.7Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m454 318.65h-1.27v-1a1.92 1.92 0 0 1-1.84 1.27c-2 0-2.77-1.79-2.77-4.46 0-1.77 0.29-4.46 2.68-4.46a2.06 2.06 0 0 1 1.87 1.19v-3.78h1.33zm-3-0.92c1.47 0 1.71-1.39 1.71-3.33 0-1.65-0.29-3.32-1.71-3.32-1.24 0-1.55 1.3-1.55 3.32s0.4 3.34 1.64 3.34z"/>
+   <path transform="translate(-239.85 -265.76)" d="M319.95,325.16h1.46v1.38c0,1.2-.09,2.28-1.46,2.64v-.74a1.12,1.12,0,0,0,.7-1.22v-.38h-.7Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m460.36 307.35h1.33v1.52h-1.33zm0 2.82h1.33v8.48h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="m463.86 310.17h1.27v1a2.27 2.27 0 0 1 2.06-1.22c2.23 0 2.23 1.7 2.23 2.69v6h-1.33v-5.84c0-0.65 0-1.71-1.25-1.71a1.64 1.64 0 0 0-1.68 1.71v5.86h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="m477.13 318.12c0 2.53-1.17 3.45-2.88 3.45a2.46 2.46 0 0 1-2.79-2.12h1.33c0.06 0.78 0.66 1.08 1.36 1.08 1.71 0 1.65-1.31 1.65-1.9v-1.11a2 2 0 0 1-1.92 1.14c-2.47 0-2.63-3.12-2.63-4.24 0-2.29 0.62-4.46 2.77-4.46a1.91 1.91 0 0 1 1.84 1.3v-1.08h1.27zm-4.51-3.7c0 1.38 0.21 3.1 1.54 3.1s1.73-1.36 1.73-3.1-0.29-3.32-1.71-3.32c-1.25-0.01-1.57 1.28-1.57 3.31z"/>
+   <path transform="translate(-239.85 -265.76)" d="M480.32,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.58,3-4.58s2.83,2.27,2.83,4.09v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Zm-1.22-6.78h1.55L482,309h-1Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m486.59 310.17h1.27v1a2.27 2.27 0 0 1 2.06-1.22c2.23 0 2.23 1.7 2.23 2.69v6h-1.33v-5.84c0-0.65 0-1.71-1.25-1.71a1.64 1.64 0 0 0-1.68 1.71v5.86h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="m494.35 307.35h1.33v1.52h-1.33zm0 2.82h1.33v8.48h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M498.79,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.95-1.44-2.95-4.35,0-2.12.41-4.58,3-4.58s2.83,2.27,2.83,4.09v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M504.89,310.17h1.33v1.27h0c.38-.81.89-1.49,1.84-1.49a1.36,1.36,0,0,1,.59.1v1.3a3.59,3.59,0,0,0-.71-.06,1.89,1.89,0,0,0-1.74,2v5.37h-1.33Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M510,307.35h1.33v1.52H510Zm0,2.82h1.33v8.48H510Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M514.28,314.57c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.08,0-2.95-1.44-2.95-4.35,0-2.12.41-4.58,3-4.58s2.83,2.27,2.83,4.09v.54Zm3.07-1v-.46c0-.95-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.32Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M298,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.57,3-4.57s2.83,2.26,2.83,4.08v.54Zm3.07-1v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M304.64,325.51H306V328h1.47v1H306v5.45c0,.68.17,1,.87,1a4.46,4.46,0,0,0,.59,0v1.09a5.68,5.68,0,0,1-1.08.09c-1.38,0-1.71-.57-1.71-1.68V329H303.4v-1h1.23Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m317.76 336.46h-1.26v-1a1.92 1.92 0 0 1-1.84 1.27c-2 0-2.77-1.79-2.77-4.46 0-1.77 0.29-4.46 2.68-4.46a2.06 2.06 0 0 1 1.87 1.19v-3.79h1.33zm-3-0.92c1.47 0 1.71-1.39 1.71-3.33 0-1.64-0.29-3.32-1.71-3.32-1.24 0-1.55 1.3-1.55 3.32s0.36 3.33 1.59 3.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M456.23,307.35h1.46v1.38c0,1.2-.1,2.28-1.46,2.64v-.74a1.12,1.12,0,0,0,.7-1.22V309h-.7Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M323,330.54c0-1.93.82-2.79,2.85-2.79,2.58,0,2.58,1.55,2.58,2.44v4.73c0,.35,0,.68.41.68a.47.47,0,0,0,.32-.08v1a4.9,4.9,0,0,1-.78.08c-.51,0-1.14,0-1.2-1.09h0a2.4,2.4,0,0,1-2,1.22c-1.58,0-2.31-.95-2.31-2.47a2.2,2.2,0,0,1,1.6-2.34l1.79-.54c1-.3,1-.57,1-1.28s-.48-1.25-1.36-1.25a1.45,1.45,0,0,0-1.46,1.66v.08Zm4.1,1.3c-.49.52-1.66.63-2.26,1a1.36,1.36,0,0,0-.65,1.35c0,.85.3,1.46,1.2,1.46a1.73,1.73,0,0,0,1.71-1.62Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M330.54,328h1.33v1.27h0c.38-.81.89-1.49,1.84-1.49a1.37,1.37,0,0,1,.59.09v1.3a3.63,3.63,0,0,0-.71-.06,1.89,1.89,0,0,0-1.74,2v5.37h-1.33Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M339.28,330.56c0-.82-.33-1.76-1.35-1.76-.82,0-1.66.41-1.66,3.51,0,1.11,0,3.32,1.61,3.32,1.14,0,1.39-1.2,1.39-2.12h1.33c0,1.35-.66,3.17-2.79,3.17s-2.94-1.44-2.94-4.35c0-2.12.41-4.57,3-4.57a2.56,2.56,0,0,1,2.71,2.8Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m342.34 325.16h1.33v3.79a2.45 2.45 0 0 1 2-1.19c2.18 0 2.18 1.69 2.18 2.69v6h-1.25v-5.86c0-0.65 0-1.71-1.25-1.71a1.64 1.64 0 0 0-1.68 1.71v5.86h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="m349.85 325.16h1.33v1.52h-1.33zm0 2.82h1.33v8.49h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M353.74,325.51h1.33V328h1.47v1h-1.47v5.45c0,.68.17,1,.87,1a4.45,4.45,0,0,0,.59,0v1.09a5.68,5.68,0,0,1-1.08.09c-1.38,0-1.71-.57-1.71-1.68V329h-1.23v-1h1.23Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M358.9,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.57,3-4.57s2.83,2.26,2.83,4.08v.54Zm3.07-1v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M369.21,330.56c0-.82-.33-1.76-1.35-1.76-.82,0-1.66.41-1.66,3.51,0,1.11,0,3.32,1.61,3.32,1.14,0,1.39-1.2,1.39-2.12h1.33c0,1.35-.66,3.17-2.79,3.17s-2.94-1.44-2.94-4.35c0-2.12.41-4.57,3-4.57a2.55,2.55,0,0,1,2.71,2.8Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M372.49,325.51h1.33V328h1.47v1h-1.47v5.45c0,.68.17,1,.87,1a4.45,4.45,0,0,0,.59,0v1.09a5.68,5.68,0,0,1-1.08.09c-1.38,0-1.71-.57-1.71-1.68V329h-1.23v-1h1.23Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M382.13,336.46h-1.27v-1h0a2.27,2.27,0,0,1-2.06,1.22c-2.23,0-2.23-1.69-2.23-2.69v-6h1.33v5.86c0,.65,0,1.71,1.25,1.71a1.64,1.64,0,0,0,1.68-1.71V328h1.33Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M384.22,328h1.33v1.27h0c.38-.81.89-1.49,1.84-1.49a1.37,1.37,0,0,1,.59.09v1.3a3.63,3.63,0,0,0-.71-.06,1.89,1.89,0,0,0-1.74,2v5.37h-1.33Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M389.95,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.57,3-4.57s2.83,2.26,2.83,4.08v.54Zm3.07-1v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m405.7 336.46h-1.27v-1a1.92 1.92 0 0 1-1.84 1.27c-2 0-2.77-1.79-2.77-4.46 0-1.77 0.29-4.46 2.68-4.46a2.06 2.06 0 0 1 1.87 1.19v-3.79h1.33zm-3-0.92c1.47 0 1.71-1.39 1.71-3.33 0-1.64-0.29-3.32-1.71-3.32-1.23 0-1.55 1.3-1.55 3.32s0.36 3.33 1.59 3.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M408.57,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2H413a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.57,3-4.57S413,330,413,331.84v.54Zm3.07-1v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M423.82,328.29c-.06-1.19-.51-2.21-1.88-2.21-1.93,0-2.18,2.12-2.18,4.73s.25,4.73,2.18,4.73,2.08-2.31,2.08-3.82h-2.23v-1.14h3.5v5.87h-1v-1.54h0a2.51,2.51,0,0,1-2.44,1.76c-2.94,0-3.47-2.83-3.47-5.87,0-2.85.52-5.87,3.64-5.87a3.11,3.11,0,0,1,3.34,3.36Z"/>
+   <path transform="translate(-239.85 -265.76)" d="M428.19,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.57,3-4.57s2.83,2.26,2.83,4.08v.54Zm3.07-1v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m434.13 328h1.27v1a2.27 2.27 0 0 1 2.06-1.22c2.23 0 2.23 1.69 2.23 2.69v6h-1.33v-5.86c0-0.65 0-1.71-1.25-1.71a1.64 1.64 0 0 0-1.68 1.71v5.86h-1.33z"/>
+   <path transform="translate(-239.85 -265.76)" d="M442.58,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2H447a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.95-1.44-2.95-4.35,0-2.12.41-4.57,3-4.57S447,330,447,331.84v.54Zm1.22-7.82,1.11,2.25H444l-1.71-2.25Zm1.85,6.78v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <path transform="translate(-239.85 -265.76)" d="m447.89 328h1.46l1.58 6.81 1.58-6.81h1.49l-2.3 8.49h-1.52z"/>
+   <path transform="translate(-239.85 -265.76)" d="M456.24,332.38c0,1.3,0,3.26,1.63,3.26,1.27,0,1.44-1.33,1.44-2h1.33a2.87,2.87,0,0,1-2.85,3c-2.07,0-2.94-1.44-2.94-4.35,0-2.12.41-4.57,3-4.57s2.83,2.26,2.83,4.08v.54Zm3.07-1v-.46c0-1-.3-2.07-1.47-2.07-1.39,0-1.55,1.71-1.55,2.22v.31Z"/>
+   <g class="cls-3">
+    <path transform="translate(-239.85 -265.76)" d="M299.94,265.94V271h0a3.06,3.06,0,0,1,2.87-1.51,3,3,0,0,1,2.22.79,3.56,3.56,0,0,1,.78,2.56v8.74h-3v-8.13a2,2,0,0,0-.31-1.28,1.23,1.23,0,0,0-1-.36q-1.6,0-1.6,2v7.82h-3V265.94Z"/>
+    <path transform="translate(-239.85 -265.76)" d="M335,277.09a6.61,6.61,0,0,0,.08,1,3.34,3.34,0,0,0,.25.88,1.66,1.66,0,0,0,.46.61,1.08,1.08,0,0,0,.7.23,1.23,1.23,0,0,0,1.12-.55,4,4,0,0,0,.48-1.67h2.72a4.73,4.73,0,0,1-1.1,3.13,4.18,4.18,0,0,1-3.18,1.07,5,5,0,0,1-2.56-.55,3.39,3.39,0,0,1-1.36-1.45,5.67,5.67,0,0,1-.54-2q-.1-1.12-.1-2.24a15.38,15.38,0,0,1,.16-2.28,5.5,5.5,0,0,1,.66-2,3.57,3.57,0,0,1,1.41-1.36,5.12,5.12,0,0,1,2.45-.5,4.77,4.77,0,0,1,2.16.43,3.26,3.26,0,0,1,1.33,1.21,5.05,5.05,0,0,1,.66,1.88,15.85,15.85,0,0,1,.18,2.46v.68h-6Zm3-3.93a3,3,0,0,0-.23-.88,1.23,1.23,0,0,0-.46-.55,1.4,1.4,0,0,0-.76-.19,1.28,1.28,0,0,0-.76.21,1.5,1.5,0,0,0-.47.55,2.73,2.73,0,0,0-.25.76,4.58,4.58,0,0,0-.08.83v.46h3.09Q338.07,273.68,338,273.16Z"/>
+    <path transform="translate(-239.85 -265.76)" d="M370,269.8V271h0a3.31,3.31,0,0,1,1.13-1.19,3,3,0,0,1,1.54-.36,3,3,0,0,1,2.74,1.46,9.63,9.63,0,0,1,.88,4.74,9.43,9.43,0,0,1-.88,4.71,3,3,0,0,1-2.74,1.42,2.79,2.79,0,0,1-2.54-1.34h0v4.89h-3V269.8Zm.43,8.8a1.25,1.25,0,0,0,1.3,1,1.24,1.24,0,0,0,1.28-1,14.42,14.42,0,0,0,0-5.81,1.24,1.24,0,0,0-1.28-1,1.25,1.25,0,0,0-1.3,1,14.39,14.39,0,0,0,0,5.81Z"/>
+    <path transform="translate(-239.85 -265.76)" d="M405.73,265.76v2.59h-3v-2.59Zm0,4v11.79h-3V269.8Z"/>
+    <path transform="translate(-239.85 -265.76)" d="M432.38,273.13a4,4,0,0,1,.33-1.72,3,3,0,0,1,.89-1.12,3.51,3.51,0,0,1,1.31-.61,6.72,6.72,0,0,1,1.61-.19,7.48,7.48,0,0,1,2.19.26,3,3,0,0,1,1.29.75,2.49,2.49,0,0,1,.62,1.15,6.06,6.06,0,0,1,.16,1.46v6.2a8.39,8.39,0,0,0,.08,1.29,4.52,4.52,0,0,0,.3,1h-2.89a2.51,2.51,0,0,1-.23-.6c-.05-.21-.1-.42-.14-.62h0a2.57,2.57,0,0,1-1.22,1.19,4.92,4.92,0,0,1-1.79.27,3,3,0,0,1-1.34-.27,2.25,2.25,0,0,1-.88-.76,3.36,3.36,0,0,1-.48-1.08,4.77,4.77,0,0,1-.15-1.19,5.17,5.17,0,0,1,.18-1.44,2.77,2.77,0,0,1,.54-1,2.93,2.93,0,0,1,.92-.71,7.36,7.36,0,0,1,1.35-.5l1.71-.46a1.82,1.82,0,0,0,.94-.48,1.35,1.35,0,0,0,.26-.9,1.62,1.62,0,0,0-.32-1.06,1.34,1.34,0,0,0-1.08-.38,1.3,1.3,0,0,0-1.05.42,1.68,1.68,0,0,0-.35,1.12v.33h-2.72Zm4.87,2.95a4.28,4.28,0,0,1-.64.21,2.33,2.33,0,0,0-1.32.66,1.86,1.86,0,0,0-.39,1.25,2.38,2.38,0,0,0,.26,1.16.92.92,0,0,0,.88.48,2.18,2.18,0,0,0,.63-.1,1.79,1.79,0,0,0,.6-.32,1.68,1.68,0,0,0,.45-.57,1.83,1.83,0,0,0,.17-.83v-2.32A2.7,2.7,0,0,1,437.25,276.07Z"/>
+   </g>
+  </g>
+ </g>
+</svg>
diff --git a/doc/rapport.gpp.md b/doc/rapport.gpp.md
index 9323ab327e036d11ded48d2f4670c519d6de376d..18006b897abc522dbe8e27d83d6ebedfab12cfee 100644
--- a/doc/rapport.gpp.md
+++ b/doc/rapport.gpp.md
@@ -5,26 +5,19 @@
 }---
 documentclass: memoir
 lang: fr-CH
-title: Travail de bachelor
-subtitle: |
+title: |
   Bootiful\
   Déploiement d'OS à choix durant le processus de boot
-author: |
-  Haute école du paysage, d'ingénierie et d'architecture de Genève\
-  \
-  Étudiant: Dimitri Lizzi\
-  Professeur référent: Florent Gluck
-date: |
-  août 2020
+author: Dimitri Lizzi
+advisor: Florent Glück
+orientation: logiciels et systèmes complexes
+date: Août 2020
+keywords: [Bachelor, HEPIA, HESSO, Bootiful]
 geometry: margin=2.5cm,includefoot,includehead
 papersize: a4
 numbersections: true
 fontsize: 12pt
-mainfont: lmroman12-regular.otf
-monofont: lmmono12-regular.otf
-monofontoptions: Scale=0.75
 output: pdf_document
-linkcolor: cyan
 header-includes: |
     \usepackage{pdfpages}
     \usepackage{fancyhdr}
@@ -32,7 +25,7 @@ header-includes: |
     \usepackage{float}
     \usepackage{lastpage}
     \usepackage{fvextra}
-    \DefineVerbatimEnvironment{Highlighting}{Verbatim}{frame=single,breaklines,commandchars=\\\{\}}
+    \DefineVerbatimEnvironment{Highlighting}{Verbatim}{frame=single,breaklines,commandchars=\\\{\},fontsize=\footnotesize}
 
     \pagestyle{fancy}
     \setlength{\headheight}{14pt}
@@ -55,6 +48,7 @@ header-includes: |
     
     \OnehalfSpacing
 abstract: |
+    \pagebreak
     TODO: Abstract + illustration
 ---
 !!comment{
@@ -515,6 +509,82 @@ il comporte de nombreuses limitations auxquelles il faudrait palier:
 
 # Recherche et développement
 
+## Compatibilité !!acronym{EFI}
+
+Lors des tests du système initial sur les PC fournis par l'école (DELL
+Optiplex 7060 micro), il s'est avéré que bien que le système de
+déploiement était fonctionnel, l'initialisation des images
+d'!!acronym{OS} qui venaient d'être déployées par le logiciel d'amorçage
+!!acronym{GRUB} ne fonctionnait pas: un écran noir était affiché, avec
+parfois une suite de caractères étranges affichée à l'écran, parfois
+non, alors que sur des machines virtuelles _VirtualBox_, le démarrage
+des mêmes images ne posait aucun problème.
+
+Ces mini-ordinateurs sont capables de démarrer sur le réseau avec le
+protocole !!acronym{PXE} en mode émulation _legacy_ ou en mode natif
+!!acronym{EFI}. Le système initial fonctionne uniquement en mode
+_legacy_ et il est soupçonné que c'est un bug ou une limitation dans
+l'émulation du mode _legacy_ sur ces machines qui empêchait le démarrage
+de l'!!acronym{OS} déployé, bien qu'il n'ait pas été possible de le
+prouver avec certitude.
+
+Cela a conduit à effectuer un autre test sur un ordinateur portable
+personnel à disposition (Lenovo U530), sur lequel il s'est avéré que le
+boot !!acronym{PXE} _legacy_ n'était même pas supporté: seul le
+démarrage en mode !!acronym{EFI} était possible.
+
+À ce moment, il a été décidé de modifier le système pour le rendre
+compatible !!acronym{EFI}/!!acronym{UEFI}, en partant du principe qu'il
+serait utilisé sur des !!acronym{PC} récents qui sont compatibles avec
+ce mode de démarrage.
+
+La première étape de cette transition vers !!acronym{EFI} a été de
+recompiler le logiciel d'amorçage !!acronym{GRUB} dans sa version
+!!acronym{EFI} pour une architecture x86 64 bits. Jusqu'à présent,
+l'exécutable déjà compilé de !!acronym{GRUB} présent dans les dossiers
+du projet initial avait été utilisé. Il avait été compilé pour une
+architecture x86 32 bits en mode !!acronym{PC} _legacy_ uniquement. La
+compilation du système est nécessaire car le système de déploiement
+initial comporte un module !!acronym{GRUB} développé spécifiquement pour
+le projet, qui permet d'effectuer la vérification et l'effacement de la
+signature à la fin du disque et de changer l'option de démarrage par
+défaut en fonction de sa présence. Il n'est donc pas possible d'utiliser
+un exécutable déjà compilé de !!acronym{GRUB} car il faut que ce module
+soit aussi compilé.
+
+Dans le projet initial, le code source de !!acronym{GRUB} dans sa
+version 2.02 avait simplement été recopié dans un dossier du dépôt git,
+le fichier source du module de vérification de la signature `isign.c`
+avait été rajouté au code source et les fichiers de `Makefile` avaient
+été modifiés pour que le nouveau module soit compilé. Le problème avec
+cette approche est qu'il est difficile de mettre à jour !!acronym{GRUB}
+sur une nouvelle version.
+
+Une nouvelle approche a été choisie pour intégrer le module `isign` à
+!!acronym{GRUB}, qui permet de mettre à jour plus facilement
+!!acronym{GRUB}, qui a d'ailleurs été utilisé en version 2.04, la
+dernière version sortie au moment où cela a été fait. La nouvelle
+approche est la suivante:
+
+1. Un clone du dépôt officiel de !!acronym{GRUB} a été créé sur le
+   serveur git de !!acronym{HEPIA}. Il a été nommé `bootiful-grub`.
+2. Un commit a été fait sur ce clone du dépôt git, contenant l'ajout du
+   fichier source `isign.c` et la modification du fichier générant le
+   `Makefile` pour prendre en compte ce module lors de la compilation.
+3. Le dépôt git cloné a été rajouté comme sous module du dépôt principal
+   du projet _Bootiful_ dans le sous dossier `grub/bootiful-grub`.
+
+L'avantage de cette nouvelle approche est qu'il est maintenant facile
+d'intégrer les changements survenus dans le dépôt git officiel sur son
+clone pour bénéficier des dernières mises à jour de !!acronym{GRUB}.
+
+
+
+**TODO: expliquer les problèmes rencontrés sans !!acronym{EFI} avec
+lesmachines récentes, des modifications nécessaires pour supporter ce
+nouveau système et des limitations que cela apporte.**
+
+
 ## Amélioration de la vitesse de transfert des images
 
 Le protocole !!acronym{NFS} est utilisé dans le système initial pour
@@ -1253,6 +1323,7 @@ fonctionnalité de Docker de construction en plusieurs "étages"
 Le fichier `Makefile` à la racine du projet définit des cibles et des
 recettes pour exécuter `docker build` exporter les données des deux
 derniers étages dans leurs dossiers respectifs:
+
 - le contenu de l'étage `nfs-export-stage`, c'est à dire l'archive
   `nfsroot.tar.gz`, est exportée dans le dossier `nfs/`. Elle sera
   extraite dans le serveur !!acronym{NFS}.
@@ -1268,12 +1339,6 @@ différentes mesures qui ont montré que clonezilla est intéressant les
 images larges mais que dd est parfois plus performant pour de petites
 images.**
 
-## Compatibilité !!acronym{EFI}
-
-**TODO: expliquer les problèmes rencontrés sans !!acronym{EFI} avec les machines
-récentes, des modifications nécessaires pour supporter ce nouveau
-système et des limitations que cela apporte.**
-
 ## Déploiement d'image Windows
 
 ## Amélioration des scripts de déploiement
diff --git a/doc/rapport.md b/doc/rapport.md
index cc8f8903da80be927f997ba6a9d8233cf777f7f3..44c63c3ef3a23205e61afef0425f16c3a5a06e91 100644
--- a/doc/rapport.md
+++ b/doc/rapport.md
@@ -503,6 +503,82 @@ il comporte de nombreuses limitations auxquelles il faudrait palier:
 
 # Recherche et développement
 
+## Compatibilité <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr>
+
+Lors des tests du système initial sur les PC fournis par l'école (DELL
+Optiplex 7060 micro), il s'est avéré que bien que le système de
+déploiement était fonctionnel, l'initialisation des images
+d'<abbr title="Operating System: système d’exploitation ">OS</abbr> qui venaient d'être déployées par le logiciel d'amorçage
+<abbr title="GRand Unified Bootloader ">GRUB</abbr> ne fonctionnait pas: un écran noir était affiché, avec
+parfois une suite de caractères étranges affichée à l'écran, parfois
+non, alors que sur des machines virtuelles _VirtualBox_, le démarrage
+des mêmes images ne posait aucun problème.
+
+Ces mini-ordinateurs sont capables de démarrer sur le réseau avec le
+protocole <abbr title="Pre-boot eXecution Environment: environnement d’exécution pré-démarrage ">PXE</abbr> en mode émulation _legacy_ ou en mode natif
+<abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr>. Le système initial fonctionne uniquement en mode
+_legacy_ et il est soupçonné que c'est un bug ou une limitation dans
+l'émulation du mode _legacy_ sur ces machines qui empêchait le démarrage
+de l'<abbr title="Operating System: système d’exploitation ">OS</abbr> déployé, bien qu'il n'ait pas été possible de le
+prouver avec certitude.
+
+Cela a conduit à effectuer un autre test sur un ordinateur portable
+personnel à disposition (Lenovo U530), sur lequel il s'est avéré que le
+boot <abbr title="Pre-boot eXecution Environment: environnement d’exécution pré-démarrage ">PXE</abbr> _legacy_ n'était même pas supporté: seul le
+démarrage en mode <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr> était possible.
+
+À ce moment, il a été décidé de modifier le système pour le rendre
+compatible <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr>/<abbr title="Unified Extensible Firmware Interface: interface micrologicielle extensible unifiée ">UEFI</abbr>, en partant du principe qu'il
+serait utilisé sur des <abbr title="Personal Computer: ordinateur personnel ">PC</abbr> récents qui sont compatibles avec
+ce mode de démarrage.
+
+La première étape de cette transition vers <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr> a été de
+recompiler le logiciel d'amorçage <abbr title="GRand Unified Bootloader ">GRUB</abbr> dans sa version
+<abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr> pour une architecture x86 64 bits. Jusqu'à présent,
+l'exécutable déjà compilé de <abbr title="GRand Unified Bootloader ">GRUB</abbr> présent dans les dossiers
+du projet initial avait été utilisé. Il avait été compilé pour une
+architecture x86 32 bits en mode <abbr title="Personal Computer: ordinateur personnel ">PC</abbr> _legacy_ uniquement. La
+compilation du système est nécessaire car le système de déploiement
+initial comporte un module <abbr title="GRand Unified Bootloader ">GRUB</abbr> développé spécifiquement pour
+le projet, qui permet d'effectuer la vérification et l'effacement de la
+signature à la fin du disque et de changer l'option de démarrage par
+défaut en fonction de sa présence. Il n'est donc pas possible d'utiliser
+un exécutable déjà compilé de <abbr title="GRand Unified Bootloader ">GRUB</abbr> car il faut que ce module
+soit aussi compilé.
+
+Dans le projet initial, le code source de <abbr title="GRand Unified Bootloader ">GRUB</abbr> dans sa
+version 2.02 avait simplement été recopié dans un dossier du dépôt git,
+le fichier source du module de vérification de la signature `isign.c`
+avait été rajouté au code source et les fichiers de `Makefile` avaient
+été modifiés pour que le nouveau module soit compilé. Le problème avec
+cette approche est qu'il est difficile de mettre à jour <abbr title="GRand Unified Bootloader ">GRUB</abbr>
+sur une nouvelle version.
+
+Une nouvelle approche a été choisie pour intégrer le module `isign` à
+<abbr title="GRand Unified Bootloader ">GRUB</abbr>, qui permet de mettre à jour plus facilement
+<abbr title="GRand Unified Bootloader ">GRUB</abbr>, qui a d'ailleurs été utilisé en version 2.04, la
+dernière version sortie au moment où cela a été fait. La nouvelle
+approche est la suivante:
+
+1. Un clone du dépôt officiel de <abbr title="GRand Unified Bootloader ">GRUB</abbr> a été créé sur le
+   serveur git de <abbr title="Haute école du paysage, d’ingénierie et d’architecture de Genève ">HEPIA</abbr>. Il a été nommé `bootiful-grub`.
+2. Un commit a été fait sur ce clone du dépôt git, contenant l'ajout du
+   fichier source `isign.c` et la modification du fichier générant le
+   `Makefile` pour prendre en compte ce module lors de la compilation.
+3. Le dépôt git cloné a été rajouté comme sous module du dépôt principal
+   du projet _Bootiful_ dans le sous dossier `grub/bootiful-grub`.
+
+L'avantage de cette nouvelle approche est qu'il est maintenant facile
+d'intégrer les changements survenus dans le dépôt git officiel sur son
+clone pour bénéficier des dernières mises à jour de <abbr title="GRand Unified Bootloader ">GRUB</abbr>.
+
+
+
+**TODO: expliquer les problèmes rencontrés sans <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr> avec
+lesmachines récentes, des modifications nécessaires pour supporter ce
+nouveau système et des limitations que cela apporte.**
+
+
 ## Amélioration de la vitesse de transfert des images
 
 Le protocole <abbr title="Network File System: système de fichiers en réseau ">NFS</abbr> est utilisé dans le système initial pour
@@ -1310,6 +1386,7 @@ fonctionnalité de Docker de construction en plusieurs "étages"
 Le fichier `Makefile` à la racine du projet définit des cibles et des
 recettes pour exécuter `docker build` exporter les données des deux
 derniers étages dans leurs dossiers respectifs:
+
 - le contenu de l'étage `nfs-export-stage`, c'est à dire l'archive
   `nfsroot.tar.gz`, est exportée dans le dossier `nfs/`. Elle sera
   extraite dans le serveur <abbr title="Network File System: système de fichiers en réseau ">NFS</abbr>.
@@ -1325,12 +1402,6 @@ différentes mesures qui ont montré que clonezilla est intéressant les
 images larges mais que dd est parfois plus performant pour de petites
 images.**
 
-## Compatibilité <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr>
-
-**TODO: expliquer les problèmes rencontrés sans <abbr title="Extensible Firmware Interface: interface micrologicielle extensible unifiée ">EFI</abbr> avec les machines
-récentes, des modifications nécessaires pour supporter ce nouveau
-système et des limitations que cela apporte.**
-
 ## Déploiement d'image Windows
 
 ## Amélioration des scripts de déploiement
diff --git a/doc/rapport.pdf b/doc/rapport.pdf
index 7683dcab65d32b3ecb7c75be0d85b3a75fb59225..831007b923fac7eba0c2af77ad0c036c00466168 100644
Binary files a/doc/rapport.pdf and b/doc/rapport.pdf differ
diff --git a/doc/rapport.tex b/doc/rapport.tex
new file mode 100644
index 0000000000000000000000000000000000000000..e51283ea6342d5309da407edae4c7927a84d46c8
--- /dev/null
+++ b/doc/rapport.tex
@@ -0,0 +1,2243 @@
+% Options for packages loaded elsewhere
+\PassOptionsToPackage{unicode}{hyperref}
+\PassOptionsToPackage{hyphens}{url}
+%
+\documentclass[
+  12pt,
+  french,
+  a4paper,
+]{memoir}
+\usepackage{lmodern}
+\usepackage{amssymb,amsmath}
+\usepackage{ifxetex,ifluatex}
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+  \usepackage[T1]{fontenc}
+  \usepackage[utf8]{inputenc}
+  \usepackage{textcomp} % provide euro and other symbols
+\else % if luatex or xetex
+  \usepackage{unicode-math}
+  \defaultfontfeatures{Scale=MatchLowercase}
+  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
+\fi
+% Use upquote if available, for straight quotes in verbatim environments
+\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
+\IfFileExists{microtype.sty}{% use microtype if available
+  \usepackage[]{microtype}
+  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
+}{}
+\makeatletter
+\@ifundefined{KOMAClassName}{% if non-KOMA class
+  \IfFileExists{parskip.sty}{%
+    \usepackage{parskip}
+  }{% else
+    \setlength{\parindent}{0pt}
+    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
+}{% if KOMA class
+  \KOMAoptions{parskip=half}}
+\makeatother
+\usepackage{xcolor}
+\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
+\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
+\hypersetup{
+  pdftitle={Bootiful Déploiement d'OS à choix durant le processus de boot},
+  pdfauthor={Dimitri Lizzi},
+  pdflang={fr-CH},
+  pdfkeywords={Bachelor, HEPIA, HESSO, Bootiful},
+  hidelinks,
+  pdfcreator={LaTeX via pandoc}}
+\urlstyle{same} % disable monospaced font for URLs
+\usepackage[margin=2.5cm,includefoot,includehead]{geometry}
+\usepackage{color}
+\usepackage{fancyvrb}
+\newcommand{\VerbBar}{|}
+\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
+\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
+% Add ',fontsize=\small' for more characters per line
+\newenvironment{Shaded}{}{}
+\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
+\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
+\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
+\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
+\newcommand{\BuiltInTok}[1]{#1}
+\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
+\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
+\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
+\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
+\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
+\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
+\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
+\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
+\newcommand{\ExtensionTok}[1]{#1}
+\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
+\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
+\newcommand{\ImportTok}[1]{#1}
+\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
+\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
+\newcommand{\NormalTok}[1]{#1}
+\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
+\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
+\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
+\newcommand{\RegionMarkerTok}[1]{#1}
+\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
+\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
+\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
+\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
+\usepackage{longtable,booktabs}
+% Correct order of tables after \paragraph or \subparagraph
+\usepackage{etoolbox}
+\makeatletter
+\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
+\makeatother
+% Allow footnotes in longtable head/foot
+\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
+\makesavenoteenv{longtable}
+\usepackage{graphicx}
+\makeatletter
+\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
+\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
+\makeatother
+% Scale images if necessary, so that they will not overflow the page
+% margins by default, and it is still possible to overwrite the defaults
+% using explicit options in \includegraphics[width, height, ...]{}
+\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
+% Set default figure placement to htbp
+\makeatletter
+\def\fps@figure{htbp}
+\makeatother
+\setlength{\emergencystretch}{3em} % prevent overfull lines
+\providecommand{\tightlist}{%
+  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
+\setcounter{secnumdepth}{5}
+\usepackage{pdfpages}
+\usepackage{fancyhdr}
+\usepackage{graphicx}
+\usepackage{float}
+\usepackage{lastpage}
+\usepackage{fvextra}
+\DefineVerbatimEnvironment{Highlighting}{Verbatim}{frame=single,breaklines,commandchars=\\\{\}}
+
+\pagestyle{fancy}
+\setlength{\headheight}{14pt}
+
+\renewcommand{\headrulewidth}{0.4pt}
+\renewcommand{\footrulewidth}{0.4pt}
+
+\fancyhead[LO,LE]{Bootiful}
+\fancyhead[CO,CE]{Déploiement d'OS à choix durant le processus de boot}
+\fancyhead[RO,RE]{Dimitri Lizzi}
+\fancyfoot[LO,LE]{août 2020}
+
+\fancyfoot[CO,CE]{}
+\fancyfoot[RE,RO]{\thepage /\pageref{LastPage}}
+
+\setcounter{tocdepth}{4}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{9pt}
+
+\OnehalfSpacing
+\ifxetex
+  % Load polyglossia as late as possible: uses bidi with RTL langages (e.g. Hebrew, Arabic)
+  \usepackage{polyglossia}
+  \setmainlanguage[]{french}
+\else
+  \usepackage[shorthands=off,main=french]{babel}
+\fi
+
+\title{Bootiful\\
+Déploiement d'OS à choix durant le processus de boot}
+\author{Dimitri Lizzi}
+\date{Août 2020}
+
+\begin{document}
+% Nom conformes des tables
+\renewcommand*\listfigurename{Liste des illustrations}
+\renewcommand*\listtablename{Liste des tableaux}
+% Sets the page numbering style to roman
+%\pagestyle{headings}
+\setcounter{page}{1}
+\pagenumbering{roman}
+
+% Hides the page number for the cover page
+\thispagestyle{empty}
+% Hides the header for the cover page
+% Cover page
+\begin{figure}
+    \begin{sffamily}
+        \begin{minipage}{.4\textwidth}
+            \centering
+            \hspace*{-3cm}\includegraphics[height=2cm,bb=0 0 278.9 70.92]{images/logo_hepia.svg}
+        \end{minipage}\qquad
+        \begin{minipage}{.4\textwidth}
+            \centering
+            \hspace*{5cm}\includegraphics[scale=1]{images/hes.png}
+        \end{minipage}
+    \end{sffamily}
+\end{figure}
+
+\begin{center}
+    \huge{Bootiful\\
+Déploiement d'OS à choix durant le processus de boot}\\
+    \vspace{.5cm}
+    \IfFileExists{images/front-logo.png}{
+      \includegraphics[width=8cm,height=5cm]{images/front-logo.png}\\
+    }{
+      \vspace{5cm}
+    }
+
+    \vspace{5mm}
+    \large{Thèse de Bachelor présentée par}\\
+    \vspace{5mm}
+    \textbf{\Large{Dimitri Lizzi}}\\
+    \vspace{5mm}
+
+    \large{pour l’obtention du titre Bachelor of Science HES-SO en}\\
+    \vspace{5mm}
+    \textbf{\Large{Ingénierie des technologies de l’information avec orientation en \\logiciels
+et systèmes complexes}}
+
+    \vspace{5mm}
+    \textbf{Août 2020\\}
+    \vspace{5mm}
+    \begin{tabular}{ p{6cm} }
+      \multicolumn{1}{c}{Professeur-e HES responsable}\\
+      \multicolumn{1}{c}{\textbf{Florent Glück}}\\
+    \end{tabular}
+\end{center}
+
+
+\mainmatter
+\tableofcontents
+\newpage
+
+\chapter*{Liste des acronymes}
+\addcontentsline{toc}{chapter}{Liste des acronymes}
+
+\begin{description}
+\item[EFI \protect\hypertarget{acronym__EFI}{}{}]
+\emph{Extensible Firmware Interface}: interface micrologicielle
+extensible unifiée
+\item[BIOS \protect\hypertarget{acronym__BIOS}{}{}]
+\emph{Basic Input Output System}: système de base d'entrée sortie
+\item[FTP \protect\hypertarget{acronym__FTP}{}{}]
+\emph{File Transfer Protocol}: protocole de transfert de fichier
+\item[DHCP \protect\hypertarget{acronym__DHCP}{}{}]
+\emph{Dynamic Host Configuration Protocol}: protocole de configuration
+dynamique des hôtes
+\item[GPT \protect\hypertarget{acronym__GPT}{}{}]
+\emph{GUID Partition Table}: table de partitionnement GUID
+\item[GRUB \protect\hypertarget{acronym__GRUB}{}{}]
+\emph{GRand Unified Bootloader} EFI
+\protect\hypertarget{acronym__EFI}{}{}
+
+\emph{Extensible Firmware Interface}: interface micrologicielle
+extensible unifiée
+\end{description}
+
+FTP \protect\hypertarget{acronym__FTP}{}{} HEPIA
+\protect\hypertarget{acronym__HEPIA}{}{} \textasciitilde{} \emph{File
+Transfer Protocol}: protocole de transfert de fichier \textasciitilde{}
+Haute école du paysage, d'ingénierie et d'architecture de Genève
+
+\begin{description}
+\tightlist
+\item[GPT \protect\hypertarget{acronym__GPT}{}{}]
+\emph{GUID Partition Table}: table de partitionnement GUID
+\item[HTTPS \protect\hypertarget{acronym__HTTPS}{}{}]
+\emph{HyperText Transfer Protocol Secure}: protocole de transfert
+hypertexte sécurisé
+\item[GRUB \protect\hypertarget{acronym__GRUB}{}{}]
+\emph{GRand Unified Bootloader}
+\item[HTTP \protect\hypertarget{acronym__HTTP}{}{}]
+\emph{HyperText Transfer Protocol}: protocole de transfert hypertexte
+\item[HEPIA \protect\hypertarget{acronym__HEPIA}{}{}]
+Haute école du paysage, d'ingénierie et d'architecture de Genève
+\item[IPFS \protect\hypertarget{acronym__IPFS}{}{}]
+\emph{InterPlanetary File System}: système de fichier inter-planétaire
+\item[HTTPS \protect\hypertarget{acronym__HTTPS}{}{}]
+\emph{HyperText Transfer Protocol Secure}: protocole de transfert
+hypertexte sécurisé
+\item[IP \protect\hypertarget{acronym__IP}{}{}]
+\emph{Internet Protocol}: protocole internet
+\item[HTTP \protect\hypertarget{acronym__HTTP}{}{}]
+\emph{HyperText Transfer Protocol}: protocole de transfert hypertexte
+\item[LDAP \protect\hypertarget{acronym__LDAP}{}{}]
+\emph{Lightweight Directory Access Protocol}: protocole léger d'accès à
+un annuaire
+\item[IPFS \protect\hypertarget{acronym__IPFS}{}{}]
+\emph{InterPlanetary File System}: système de fichier inter-planétaire
+\item[MBR \protect\hypertarget{acronym__MBR}{}{}]
+\emph{Master Boot Record}: enregistrement d'amorcage maître
+\item[IP \protect\hypertarget{acronym__IP}{}{}]
+\emph{Internet Protocol}: protocole internet
+\item[NAT \protect\hypertarget{acronym__NAT}{}{}]
+\emph{Network Address Translation}: traduction d'adresse réseau
+\item[LDAP \protect\hypertarget{acronym__LDAP}{}{}]
+\emph{Lightweight Directory Access Protocol}: protocole léger d'accès à
+un annuaire
+\item[NFS \protect\hypertarget{acronym__NFS}{}{}]
+\emph{Network File System}: système de fichiers en réseau
+\item[MBR \protect\hypertarget{acronym__MBR}{}{}]
+\emph{Master Boot Record}: enregistrement d'amorcage maître
+\item[OS \protect\hypertarget{acronym__OS}{}{}]
+\emph{Operating System}: système d'exploitation
+\item[NAT \protect\hypertarget{acronym__NAT}{}{}]
+\emph{Network Address Translation}: traduction d'adresse réseau
+\item[PC \protect\hypertarget{acronym__PC}{}{}]
+\emph{Personal Computer}: ordinateur personnel
+\item[NFS \protect\hypertarget{acronym__NFS}{}{}]
+\emph{Network File System}: système de fichiers en réseau
+\item[PXE \protect\hypertarget{acronym__PXE}{}{}]
+\emph{Pre-boot eXecution Environment}: environnement d'exécution
+pré-démarrage
+\item[OS \protect\hypertarget{acronym__OS}{}{}]
+\emph{Operating System}: système d'exploitation
+\item[SCP \protect\hypertarget{acronym__SCP}{}{}]
+\emph{Secure CoPy}: protocole de copie sécurisée sur le réseau
+\item[PC \protect\hypertarget{acronym__PC}{}{}]
+\emph{Personal Computer}: ordinateur personnel
+\item[SMB \protect\hypertarget{acronym__SMB}{}{}]
+\emph{Server Message Block}
+\item[SSH \protect\hypertarget{acronym__SSH}{}{}]
+\emph{Secure SHell}: protocole de terminal à distance securisé
+\item[PXE \protect\hypertarget{acronym__PXE}{}{}]
+\emph{Pre-boot eXecution Environment}: environnement d'exécution
+pré-démarrage
+\end{description}
+
+SCP \protect\hypertarget{acronym__SCP}{}{} TFTP
+\protect\hypertarget{acronym__TFTP}{}{} \textasciitilde{} \emph{Secure
+CoPy}: protocole de copie sécurisée sur le réseau \textasciitilde{}
+\emph{Trivial File Transfer Protocol}: protocole simplifié de transfert
+de fichiers
+
+\begin{description}
+\item[UEFI \protect\hypertarget{acronym__UEFI}{}{}]
+\emph{Unified Extensible Firmware Interface}: interface micrologicielle
+extensible unifiée SMB \protect\hypertarget{acronym__SMB}{}{}
+
+\emph{Server Message Block}
+\end{description}
+
+WWW \protect\hypertarget{acronym__WWW}{}{} SSH
+\protect\hypertarget{acronym__SSH}{}{} \textasciitilde{} \emph{World
+Wide Web}: toile mondiale / réseau mondial \textasciitilde{}
+\emph{Secure SHell}: protocole de terminal à distance securisé
+
+\newpage
+\listoffigures
+\newpage
+\listoftables
+
+\hypertarget{introduction}{%
+\chapter{Introduction}\label{introduction}}
+
+\hypertarget{contexte}{%
+\section{Contexte}\label{contexte}}
+
+Aujourd'hui les machines des salles de cours à
+\protect\hyperlink{acronym__HEPIA}{HEPIA} sont installées avec une image
+spécifique d'un système d'exploitation. Dans le cadre de certains cours,
+on désirerait pouvoir utiliser un autre système d'exploitation
+(\protect\hyperlink{acronym__OS}{OS}) et aussi avoir la possibilité
+d'être administrateur sur la machine physique. En effet, utiliser une
+machine virtuelle n'est pas toujours souhaitable, surtout lorsqu'il y a
+interaction avec du matériel, typiquement lors du développement pour
+l'embarqué. Le but de ce projet est de développer un système de
+déploiement répondant à ces besoins. Lors de la mise sous tension d'une
+machine, le système proposerait à l'utilisateur un choix d'OSes et
+celui-ci s'installerait à la volée (distributions Linux, différentes
+versions de Windows, etc.). Afin de minimiser le temps d'attente lors de
+l'installation de l'\protect\hyperlink{acronym__OS}{OS}, un mécanisme de
+cache évitant le téléchargement des images préalablement téléchargées
+sera mis en place. On désire aussi que le système de déploiement
+permette de customiser certains aspects de l'image choisie. Ce travail
+ce base sur une ébauche d'un travail déjà existant.
+
+\hypertarget{objectifs}{%
+\section{Objectifs}\label{objectifs}}
+
+\begin{itemize}
+\tightlist
+\item
+  Etude du travail existant.
+\item
+  Mise en place d'un déploiement automatisé et reproductible du travail
+  existant.
+\item
+  Ajout du support d'images Windows.
+\item
+  Optimisation du format d'image afin d'en accélérer sensiblement la
+  vitesse de téléchargement.
+\item
+  Mise en place d'un mécanisme de personnalisation des images en
+  post-installation.
+\item
+  Implémenter une gestion administrative aisée du système de déploiement
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Il doit être aisé de créer des images et configurer les opérations à
+    effectuer en post-installation.
+  \end{itemize}
+\item
+  Le système doit pouvoir supporter l'authentification des utilisateurs
+  via un serveur \protect\hyperlink{acronym__LDAP}{LDAP} (Linux
+  seulement)
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Les OS déployés (Linux), doivent pouvoir s'intégrer au processus
+    d'authentification utilisé dans les salles de laboratoires ITI.
+  \end{itemize}
+\item
+  Gestion du système aussi simple et aisée que possible.
+\item
+  Si le temps le permet: optimisation de la bande passante du réseau
+  dans le cas de nombreux téléchargements effectués en parallèle.
+\end{itemize}
+
+\hypertarget{muxe9thodologie-de-travail}{%
+\section{Méthodologie de travail}\label{muxe9thodologie-de-travail}}
+
+\textbf{TODO: Expliquer comment le travail a été planifié, les meetings
+hebdomadaires, les outils à disposition, le fait de travailler à
+distance dans un contexte ``cours du soir''}
+
+\hypertarget{cas-dutilisation}{%
+\chapter{Cas d'utilisation}\label{cas-dutilisation}}
+
+\textbf{TODO: décrire les cas d'utilisation du projet à l'aide d'un
+diagramme de use cases qui montre les inter-actions possibles entre les
+différentes entités du sytème que sont les utilsateurs, administrateurs,
+les postes clients, le serveur, les images, les configurations. Le
+diagramme doit décrire les aspects fonctionnels du système (quoi) sans
+détailler les aspects techniques (comment).}
+
+L'aspect fonctionnel du système à réaliser est décrit avec un diagramme
+de cas d'utilisations dans la figure \ref{diagram_usecases}.
+
+\begin{figure}
+\centering
+\includegraphics{images/diagram_usecases.svg}
+\caption{Diagramme des cas d'utilisation du
+système.\label{diagram_usecases}}
+\end{figure}
+
+\hypertarget{uxe9tat-de-lart}{%
+\chapter{État de l'art}\label{uxe9tat-de-lart}}
+
+De nombreux systèmes de déploiement
+d'\protect\hyperlink{acronym__OS}{OS} existent, mais aucun d'entre eux
+ne répond précisément aux objectifs précis du cahier des charges de ce
+projet.
+
+Les sous-sections qui suivent décrivent quelques-uns de ces systèmes,
+leurs points forts et points faibles et pourquoi ils ne sont pas adaptés
+tels-quel pour ce projet.
+
+\hypertarget{ibm-tivoli-rembo}{%
+\section{IBM Tivoli / Rembo}\label{ibm-tivoli-rembo}}
+
+\textbf{TODO: expliquer que ce projet se rapproche le plus des objectifs
+du projet, qu'il a été développé initialement à l'université de Genève
+et a été utilisé à HEPIA par le passé avec succès. Expliquer le rachat
+par IBM et la problématique de la licence couteuse. Introduire l'intérêt
+d'une solution open source pour ne pas retomber dans le meme schéma.}
+
+\hypertarget{fog}{%
+\section{Fog}\label{fog}}
+
+\textbf{TODO: expliquer le fonctionnement et les cas d'utilisation de
+fog, l'utilisation actuelle de ce système dans l'école, de ses
+limitations et pourquoi il ne permet pas de répondre aux objectifs de ce
+projet.}
+
+\hypertarget{clonezilla}{%
+\section{Clonezilla}\label{clonezilla}}
+
+\textbf{TODO: expliquer le fonctionnement, les cas d'utilisation le
+contexte. Parler de l'outil partclone et de ses avantages. Expliquer
+pourquoi il n'est pas adapté tel quel, mais aussi pourquoi il est
+intéressant de réutiliser certaines parties.}
+
+\hypertarget{ghost}{%
+\section{Ghost}\label{ghost}}
+
+\textbf{TODO: expliquer le fonctionnement et mettre en parallèle à fog
+et clonezilla et souligner les problématiques d'une solution commerciale
+au lieu d'une solution open-source. }
+
+\hypertarget{acronis-trueimage}{%
+\section{Acronis TrueImage}\label{acronis-trueimage}}
+
+\textbf{TODO: expliquer le fonctionnement et mettre en parallèle à fog
+et clonezilla et souligner les problématiques d'une solution commerciale
+au lieu d'une solution open-source. }
+
+\hypertarget{architecture-initiale-du-projet}{%
+\chapter{Architecture initiale du
+projet}\label{architecture-initiale-du-projet}}
+
+Le projet \emph{Bootiful} n'a pas été initié dans le cadre de ce travail
+de bachelor: une implémentation basique avait déjà été réalisée afin de
+prouver que l'idée fonctionne. Cette version initiale a été créée par
+Abhilash Venkatesh, un étudiant indien qui est venu à
+\protect\hyperlink{acronym__HEPIA}{HEPIA} effectuer un stage pendant la
+période de mai à juillet 2019.
+
+Les premières étapes de ce travail diplôme ont été de reproduire le
+système réalisé dans le projet initial afin de valider son
+fonctionnement, d'analyser en détail son fonctionnement et sa structure
+et de documenter son architecture.
+
+Ce chapitre est l'aboutissement de cette étude. Il décrit les détails de
+l'architecture du projet initial qui a été reproduite, afin d'apporter
+un contexte aux chapitres suivants qui décrivent les ajouts et
+modifications de cette architecture.
+
+\hypertarget{composants-initiaux}{%
+\section{Composants initiaux}\label{composants-initiaux}}
+
+Le système est composé de multiples clients qui communiquent avec un
+serveur central à travers un réseau \protect\hyperlink{acronym__IP}{IP}.
+
+\hypertarget{postes-clients}{%
+\subsection{Postes clients}\label{postes-clients}}
+
+Les postes clients supportés par le système sont des ordinateurs
+compatibles \protect\hyperlink{acronym__PC}{PC} x86.
+
+Ils doivent nécessairement être équipés d'une carte réseau et d'un
+micrologiciel \protect\hyperlink{acronym__BIOS}{BIOS} ou
+\protect\hyperlink{acronym__UEFI}{UEFI} capables et configurés pour
+amorcer un système d'exploitation à partir du réseau à chaque démarrage
+en utilisant le standard \protect\hyperlink{acronym__PXE}{PXE}.
+
+Ils doivent aussi disposer d'un disque dur sur lequel les images de
+système d'exploitation seront déployées et mises en cache. L'espace
+disque est subdivisé en trois parties distinctes ayant chacune un rôle
+précis.
+
+La première partie du disque est l'espace dédié au déploiement d'un
+\protect\hyperlink{acronym__OS}{OS}. Elle prend 80\% de l'espace total
+disponible, au début du disque. Au tout début de cette partie du disque,
+dans le premier secteur addressable du disque, se trouve le secteur
+d'amorçage au format \protect\hyperlink{acronym__MBR}{MBR}. Ce premier
+secteur contient deux informations nécessaires pour le chargement d'un
+système d'exploitation:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\item
+  \textbf{La routine d'amorcage}: c'est le premier programme exécuté
+  lors du démarrage sur le disque. Sa taille est très limitée: 440
+  octets. Il sert généralement à initier un chargeur d'amorcage ou
+  \emph{bootloader} présent un peu plus loin sur le disque, qui est un
+  petit programme qui va initier un système d'exploitation.
+\item
+  \textbf{La table des partitions}: définit une liste de partitions, qui
+  sont des subdivisions logiques de l'espace du disque. Selon le système
+  d'exploitation installé et la manière dont il a été configuré lors de
+  son installation initiale les partitions peuvent varier en nombre et
+  en taille. Les données à l'intérieur de chaque partition sont
+  généralement structurées en utilisant un système de fichiers. Les
+  partitions vont varier en nombre, taille, et format selon l'image
+  déployée.
+\end{enumerate}
+
+La seconde partie du disque est l'espace dédié à la mise en cache
+d'images d'\protect\hyperlink{acronym__OS}{OS}, qui prend 20\% de
+l'espace total disponible, moins 4096 octets, à la fin du disque. Ce
+cache permet de stocker des images disques compressées qui peuvent être
+décompressées sur la première partie du disque. Lors du premier
+déploiement d'une image disque compressée disponible sur le serveur,
+cette dernière est transmise depuis le serveur jusqu'au client en
+version compressée à travers le réseau. Au fur et à mesure que les
+données compressées de l'image sont réceptionnées par le client, elles
+sont simultanément copiées dans le cache et décompressées sur la
+première partie du disque.
+
+Ce mécanisme de cache permet de ne plus avoir à télécharger à nouveau
+l'image lors des prochains déploiements car elle sera disponible
+localement. Il suffira de décompresser le fichier présent dans le cache
+et d'écrire les données extraites séquentiellement sur la première
+partie du disque. Cela permet d'éviter de surcharger la bande passante
+du réseau et les ressources du serveur, en particulier quand un grand
+nombre de clients vont fréquemment déployer la même image en même temps,
+comme cela sera souvent le cas dans le contexte d'une école
+d'informatique où les élèves déploient la même image au début de chaque
+session d'un même cours.
+
+Enfin, les 4096 octets restants à la fin du disque sont dédiés à
+l'écriture d'une signature servant à signaler si une image vient d'être
+deployée sur le disque. La présence cette signature est verifiée à
+chaque démarrage pour déterminer s'il faut démarrer une image
+fraichement déployée ou si au contraire l'image déployée a déjà été
+utilisée et qu'il faut lancer un nouveau déploiement. Ainsi, le système
+peut s'assurer qu'une image disque déployée n'est exécutée qu'une seule
+fois, ce qui laisse la liberté à l'utilisateur du poste client de faire
+ce qu'il veut sur le système déployé sans se soucier de rendre le
+système inutilisable, car il suffit de redémarrer la machine pour
+repartir sur une base propre.
+
+Le mécanisme de signature est nécessaire à cause du moyen choisi pour
+déployer les images: un système d'exploitation Linux minimaliste est est
+chargé en mémoire depuis le réseau afin de lancer le processus de choix
+d'une image et de la déployer. Une fois le déploiement terminé, la
+machine redémarre. La signature à la fin du disque est un moyen simple
+et efficace de faire persister l'information qu'une image vient d'être
+déployée et de la vérifier au démarrage.
+
+\hypertarget{serveur}{%
+\subsection{Serveur}\label{serveur}}
+
+Le composant central du système est un \emph{serveur} linux qui
+inter-agit avec les postes clients pour leur permettre d'effectuer
+plusieurs actions:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\tightlist
+\item
+  Recevoir une configuration IP et un chargeur d'amorcage
+  \protect\hyperlink{acronym__GRUB}{GRUB} à exécuter pour démarrer sur
+  le réseau en utilisant le standard PXE.
+\item
+  Analyser la signature présente sur le disque dur depuis le chargeur
+  d'amorçage chargeur d'amorcage
+  \protect\hyperlink{acronym__GRUB}{GRUB}.
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Si elle n'est pas présente, amorcer un système d'exploitation
+    minimaliste servant à effectuer le choix d'une image et
+    d'automatiser son déploiement et sa mise en cache.
+  \item
+    Si elle est présente, l'effacer et démarrer sur le disque dur pour
+    initier l'amorçage de l'\protect\hyperlink{acronym__OS}{OS} déployé.
+  \end{itemize}
+\item
+  Lister les images disponible et les méta-données de chacune d'entre
+  elle:
+
+  \begin{itemize}
+  \tightlist
+  \item
+    Le nom de l'image, pour permettre aux utilisateurs d'effectuer un
+    choix.
+  \item
+    La taille de l'image décompressée, pour pouvoir vérifier que la
+    taille du disque client est suffisante pour déployer l'image.
+  \item
+    La taille de l'image compressée, pour pouvoir vérifier que l'image
+    puisse être mise en cache.
+  \item
+    Un \emph{hash} de l'image pour pouvoir l'identifier de manière
+    unique et vérifier si elle est déjà présente dans le cache ou s'il
+    faut la télécharger.
+  \end{itemize}
+\item
+  Télécharger une image choisie.
+\item
+  Sauvegarder et charger une copie du
+  \protect\hyperlink{acronym__MBR}{MBR} contenant la table des
+  partitions qui contient la partition cachée, afin de pouvoir le
+  restaurer et remonter cette partition.
+\item
+  Sauvegarder un log du déploiement afin de pouvoir garder une trace des
+  temps de déploiement et des éventuelles erreurs rencontrées.
+\end{enumerate}
+
+Trois protocoles réseau standard sont utilisés pour permettre au client
+d'effectuer ces actions:
+
+\begin{itemize}
+\item
+  \protect\hyperlink{acronym__DHCP}{DHCP}: fournit aux clients initiant
+  un démarrage sur le réseau une configuration IP, et l'adresse d'un
+  serveur TFTP et le nom du fichier exécutable du chargeur d'amorçage à
+  récupérer sur ce dernier
+\item
+  \protect\hyperlink{acronym__TFTP}{TFTP}: permet au clients de
+  télécharger:
+
+  \begin{itemize}
+  \tightlist
+  \item
+    le fichier exécutable du chargeur d'amorçage
+  \item
+    la configuration du chargeur d'amorçage
+  \item
+    les modules optionels du chargeur d'amorçage, téléchargés selon la
+    configuration
+  \item
+    l'image initrd permettant d'initialiser le système linux de
+    déploiement
+  \item
+    le noyeau linux de l'OS de déploiement
+  \item
+    l'image du système de fichier racine de l'OS de déploiement
+  \end{itemize}
+\item
+  \protect\hyperlink{acronym__NFS}{NFS}: permet au système linux de
+  monter un partage distant qui contient:
+
+  \begin{itemize}
+  \tightlist
+  \item
+    les scripts permettant d'effectuer le déploiement automatique
+  \item
+    un dossier contenant les images et leurs métadonnées
+  \item
+    un dossier dans lequel enregistrer une copie du MBR
+  \item
+    un dossier dans lequel enregistrer les logs du déploiement
+  \end{itemize}
+\end{itemize}
+
+\hypertarget{diagramme-des-composants-du-serveur}{%
+\subsection{Diagramme des composants du
+serveur}\label{diagramme-des-composants-du-serveur}}
+
+La figure \ref{diagram_components} est un diagramme qui détaille les
+différents composants et leurs interactions.
+
+\begin{figure}
+\centering
+\includegraphics{images/diagram_components.svg}
+\caption{Diagramme des composants du système\label{diagram_components}}
+\end{figure}
+
+\hypertarget{processus-de-duxe9ploiement-initial}{%
+\section{Processus de déploiement
+initial}\label{processus-de-duxe9ploiement-initial}}
+
+\textbf{TODO: décrire pas à pas les différentes étapes du processus de
+déploiement telles que montrées sur le diagramme.}
+
+Les différentes étapes du processus de déploiement d'images sont
+décrites dans la figure \ref{diagram_activity_deployment} qui est un
+diagrame d'activité détaillant les différentes étapes du processus de
+déploiement d'images.
+
+\begin{figure}
+\centering
+\includegraphics{images/diagram_activity_deployment.svg}
+\caption{Diagramme d'activité du processus de déploiement
+initial\label{diagram_activity_deployment}}
+\end{figure}
+
+\hypertarget{architecture-ruxe9seau-initiale}{%
+\section{Architecture réseau
+initiale}\label{architecture-ruxe9seau-initiale}}
+
+Pour faire fonctionner le système, il faut que les machines clientes et
+le serveur puissent communiquer à travers un réseau local.
+
+Les tests ont été effectués dans un réseau domestique classique: une
+\emph{box} internet sert à la fois de passerelle internet et de routeur
+DHCP dans le réseau local.
+
+Il y a un problème pour tester le système dans ce réseau local: le
+serveur de déploiement doit aussi jouer le rôle de serveur DHCP et il y
+aura des collisions entre les deux. La solution choisie pour palier à ce
+problème, est d'utiliser deux interfaces réseau sur le serveur pour le
+connecter à deux réseaux locaux distincts.
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\item
+  L'interface \texttt{eth0} du serveur de déploiement est connectée au
+  réseau \texttt{192.168.1.0/24}, dont les adresses IP sont distribuées
+  par la box internet, qui sert aussi de passerelle vers internet.
+\item
+  L'interface \texttt{eth1} du serveur de déploiement est connectée au
+  réseau \texttt{192.168.56.0/24}, dont les adresses IP sont distribuées
+  par le serveur de déploiement d'images. Il n'y a pas de passerelle
+  vers internet.
+\end{enumerate}
+
+Le serveur étant une machine virtuelle \emph{VirtualBox} créée par
+l'outil \emph{Vagrant}, ses interfaces réseau sont aussi virtuelles. Ces
+interfaces virtuelles ont été ratachées aux interfaces de la machine
+hôte de la manière suivante:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\tightlist
+\item
+  L'interface \texttt{eth0} de la machine virtuelle est ratachée à
+  l'interface \texttt{wlan0} de la machine hôte en utilisant le mode
+  \protect\hyperlink{acronym__NAT}{NAT}.
+\item
+  L'interface \texttt{eth1} de la machine virtuelle est ratachée à
+  l'interface \texttt{eth0} de la machine hôte en utilisant le mode
+  \texttt{bridged}.
+\end{enumerate}
+
+La figure \ref{diagram_home_network} illustre les détails de la
+configuration réseau décrite ci-dessus.
+
+\begin{figure}
+\centering
+\includegraphics{images/diagram_home_network.svg}
+\caption{Diagramme montrant la configuration des équipements réseaux
+utilisée pendant le test du système
+initial.\label{diagram_home_network}}
+\end{figure}
+
+\hypertarget{mise-en-opuxe9ration-du-projet-initial}{%
+\section{Mise en opération du projet
+initial}\label{mise-en-opuxe9ration-du-projet-initial}}
+
+La mise en fonctionnement du système initial à partir de la
+documentation et des fichiers du dépôt git a été fastidieuse car il
+contient des fichiers de configuration, des binaires et des sources et
+des scripts non documentés. Il faut parcourir les différents fichiers
+\texttt{readme} éparpillés dans les dossiers pour tenter de comprendre
+comment installer un serveur. Aussi, certaines configurations ne
+semblaient pas être à jour et ne fonctionnaient pas en étant utilisées
+telles quel.
+
+La configuration du serveur \protect\hyperlink{acronym__DHCP}{DHCP} a du
+être modifiée pour qu'en plus du
+\texttt{option\ tftp-server-name\ "192.168.56.100"}, le paramètre
+\texttt{next-server\ 192.168.56.100} soit aussi envoyé aux clients. Le
+premier paramètre sert au client à savoir sur quel serveur TFTP
+l'exécutable d'amorçage (dans ce cas,
+\protect\hyperlink{acronym__GRUB}{GRUB}) doit être téléchargé.
+Cependant, une fois \protect\hyperlink{acronym__GRUB}{GRUB} démarré, il
+n'était pas capable de trouver l'image du système linux de déploiement.
+L'option \texttt{next-server} a permis de renseigner
+\protect\hyperlink{acronym__GRUB}{GRUB} sur le fait qu'il doit par
+défaut rechercher les fichiers mentionnés dans la configuration dans le
+serveur \protect\hyperlink{acronym__TFTP}{TFTP} accessible par l'adresse
+IP mentionnée.
+
+Ensuite, une fois capable de démarrer l'OS de déploiement, il a fallu
+résoudre de nombreux petits bugs dans les scripts de déploiement, qui ne
+s'exécutaient pas complètement à cause d'erreurs dans certaines
+commandes. Une fois les scripts corrigés, le démarrage de l'image
+déployée ne fonctionnait pas. Pour des raisons non documentées,
+\protect\hyperlink{acronym__GRUB}{GRUB} était configuré pour lancer le
+programme \texttt{ipxe} depuis le serveur
+\protect\hyperlink{acronym__TFTP}{TFTP}, qui lui même initie le
+démarrage depuis le premier disque. Ce système ne fonctionnait pas:
+\texttt{ipxe} ne se lançait même pas à cause d'un chemin invalide. De
+plus ce système rajoutait une étape inutile:
+\protect\hyperlink{acronym__GRUB}{GRUB} est tout à fait capable de
+démarrer sur le premier disque. Le fichier de configuration de
+\protect\hyperlink{acronym__GRUB}{GRUB} a donc été modifié pour
+directement démarrer sur le disque quand la signature est détectée à la
+fin du disque. Enfin, le système était fonctionnel.
+
+Pour faciliter l'utilisation et le développement du système dans le
+futur, il a été décidé d'automatiser la création d'une machine virtuelle
+du serveur, afin que la mise en fonctionnement d'un nouveau serveur de
+déploiement d'images soit le plus simple possible nécessite le moins
+d'intervention possible. Le programme \emph{Vagrant} a été utilisé dans
+un premier temps pour automatiser la création d'une machine virtuelle à
+partir d'un fichier \texttt{Vagrantfile} définissant la configuration de
+la machine et les commandes à lancer pour l'installer et la configurer.
+Une fois ce fichier de configuration créé, une seule commande est
+nécessaire pour créer, configurer et lancer un serveur fonctionnel dans
+une machine virtuelle: \texttt{vagrant\ up}.
+
+\begin{figure}
+\centering
+\includegraphics{images/vagrant_logo.svg}
+\caption{Logo du logiciel \emph{Vagrant} utilisé pour automatiser la
+création du serveur du système initial.}
+\end{figure}
+
+La distribution \emph{Linux} \emph{Debian} a été choisie comme
+\protect\hyperlink{acronym__OS}{OS} de base de cette machine virtuelle,
+car elle est \emph{open-source}, populaire, stable et dispose de
+nombreux paquets. Elle est utilisée dans la version \emph{Buster}, qui
+est la version stable au moment de ce travail.
+
+\begin{figure}
+\centering
+\includegraphics{images/debian_logo.svg}
+\caption{Logo de la distribution \emph{Linux} \emph{Debian} utilisée
+comme base du serveur.}
+\end{figure}
+
+\hypertarget{limitations-du-projet-initial}{%
+\section{Limitations du projet
+initial}\label{limitations-du-projet-initial}}
+
+Bien que le système du projet initial ait pu être mis en fonctionnement,
+il comporte de nombreuses limitations auxquelles il faudrait palier:
+
+\begin{itemize}
+\tightlist
+\item
+  Les systèmes EFI ne sont pas supportés.
+\item
+  Les images prennent beaucoup de place et sont longues à transférer.
+\item
+  Les grosses images prennent beaucoup de temps à être déployées.
+\item
+  La création d'images nécessite plusieurs opérations en ligne de
+  commande, ce n'est pas très facile à utiliser.
+\item
+  Les scripts de déploiement sont fragiles et gèrent mal les erreurs.
+\item
+  Il n'y a pas de système de personnalisation d'image. Si on veut faire
+  \(n\) personnalisation partant sur la base du même
+  \protect\hyperlink{acronym__OS}{OS}, il faut faire \(n\) images: une
+  pour chaque personnalisation.
+\item
+  L'installation de nouveaux outils sur le système d'exploitation de
+  l'\protect\hyperlink{acronym__OS}{OS} de déploiement créé avec
+  \emph{Buildroot} peut être compliqué si l'outil a beaucoup de
+  dépendances.
+\item
+  Les dépendances du projet sont difficile à reproduire: il faut
+  disposer des bonnes dépendances et du bon environnement.
+\item
+  Les scripts de déploiement ne fonctionnent que si le client utilise
+  une interface réseau nommée \texttt{eth0}.
+\item
+  Les logs sauvés sur le serveur ne sont pas très complets et il est
+  difficile de diagnostiquer les erreurs et les timings des différentes
+  étapes à partir de ceux-ci.
+\item
+  Le système de déploiement doit sauver et restaurer un
+  \protect\hyperlink{acronym__MBR}{MBR} sur le serveur pour utiliser sa
+  partition cachée de cache des images. Cela implique des
+  lectures/écritures sur le disque et sur le partage NFS du serveur qui
+  prennent du temps et rajoutent de la complexité. Étant donné que la
+  position du cache est fixe (elle est calculée à partir de la taille du
+  disque, qui ne devrait pas changer), le client devrait être capable de
+  détecter et monter la partition sans dépendre du serveur.
+\end{itemize}
+
+\hypertarget{recherche-et-duxe9veloppement}{%
+\chapter{Recherche et
+développement}\label{recherche-et-duxe9veloppement}}
+
+\hypertarget{compatibilituxe9-efi}{%
+\section{\texorpdfstring{Compatibilité
+\protect\hyperlink{acronym__EFI}{EFI}}{Compatibilité EFI}}\label{compatibilituxe9-efi}}
+
+Lors des tests du système initial sur les PC fournis par l'école (DELL
+Optiplex 7060 micro), il s'est avéré que bien que le système de
+déploiement était fonctionnel, l'initialisation des images
+d'\protect\hyperlink{acronym__OS}{OS} qui venaient d'être déployées par
+le logiciel d'amorçage \protect\hyperlink{acronym__GRUB}{GRUB} ne
+fonctionnait pas: un écran noir était affiché, avec parfois une suite de
+caractères étranges affichée à l'écran, parfois non, alors que sur des
+machines virtuelles \emph{VirtualBox}, le démarrage des mêmes images ne
+posait aucun problème.
+
+Ces mini-ordinateurs sont capables de démarrer sur le réseau avec le
+protocole \protect\hyperlink{acronym__PXE}{PXE} en mode émulation
+\emph{legacy} ou en mode natif \protect\hyperlink{acronym__EFI}{EFI}. Le
+système initial fonctionne uniquement en mode \emph{legacy} et il est
+soupçonné que c'est un bug ou une limitation dans l'émulation du mode
+\emph{legacy} sur ces machines qui empêchait le démarrage de
+l'\protect\hyperlink{acronym__OS}{OS} déployé, bien qu'il n'ait pas été
+possible de le prouver avec certitude.
+
+Cela a conduit à effectuer un autre test sur un ordinateur portable
+personnel à disposition (Lenovo U530), sur lequel il s'est avéré que le
+boot \protect\hyperlink{acronym__PXE}{PXE} \emph{legacy} n'était même
+pas supporté: seul le démarrage en mode
+\protect\hyperlink{acronym__EFI}{EFI} était possible.
+
+À ce moment, il a été décidé de modifier le système pour le rendre
+compatible
+\protect\hyperlink{acronym__EFI}{EFI}/\protect\hyperlink{acronym__UEFI}{UEFI},
+en partant du principe qu'il serait utilisé sur des
+\protect\hyperlink{acronym__PC}{PC} récents qui sont compatibles avec ce
+mode de démarrage.
+
+La première étape de cette transition vers
+\protect\hyperlink{acronym__EFI}{EFI} a été de recompiler le logiciel
+d'amorçage \protect\hyperlink{acronym__GRUB}{GRUB} dans sa version
+\protect\hyperlink{acronym__EFI}{EFI} pour une architecture x86 64 bits.
+Jusqu'à présent, l'exécutable déjà compilé de
+\protect\hyperlink{acronym__GRUB}{GRUB} présent dans les dossiers du
+projet initial avait été utilisé. Il avait été compilé pour une
+architecture x86 32 bits en mode \protect\hyperlink{acronym__PC}{PC}
+\emph{legacy} uniquement. La compilation du système est nécessaire car
+le système de déploiement initial comporte un module
+\protect\hyperlink{acronym__GRUB}{GRUB} développé spécifiquement pour le
+projet, qui permet d'effectuer la vérification et l'effacement de la
+signature à la fin du disque et de changer l'option de démarrage par
+défaut en fonction de sa présence. Il n'est donc pas possible d'utiliser
+un exécutable déjà compilé de \protect\hyperlink{acronym__GRUB}{GRUB}
+car il faut que ce module soit aussi compilé.
+
+Dans le projet initial, le code source de
+\protect\hyperlink{acronym__GRUB}{GRUB} dans sa version 2.02 avait
+simplement été recopié dans un dossier du dépôt git, le fichier source
+du module de vérification de la signature \texttt{isign.c} avait été
+rajouté au code source et les fichiers de \texttt{Makefile} avaient été
+modifiés pour que le nouveau module soit compilé. Le problème avec cette
+approche est qu'il est difficile de mettre à jour
+\protect\hyperlink{acronym__GRUB}{GRUB} sur une nouvelle version.
+
+Une nouvelle approche a été choisie pour intégrer le module
+\texttt{isign} à \protect\hyperlink{acronym__GRUB}{GRUB}, qui permet de
+mettre à jour plus facilement \protect\hyperlink{acronym__GRUB}{GRUB},
+qui a d'ailleurs été utilisé en version 2.04, la dernière version sortie
+au moment où cela a été fait. La nouvelle approche est la suivante:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\tightlist
+\item
+  Un clone du dépôt officiel de \protect\hyperlink{acronym__GRUB}{GRUB}
+  a été créé sur le serveur git de
+  \protect\hyperlink{acronym__HEPIA}{HEPIA}. Il a été nommé
+  \texttt{bootiful-grub}.
+\item
+  Un commit a été fait sur ce clone du dépôt git, contenant l'ajout du
+  fichier source \texttt{isign.c} et la modification du fichier générant
+  le \texttt{Makefile} pour prendre en compte ce module lors de la
+  compilation.
+\item
+  Le dépôt git cloné a été rajouté comme sous module du dépôt principal
+  du projet \emph{Bootiful} dans le sous dossier
+  \texttt{grub/bootiful-grub}.
+\end{enumerate}
+
+L'avantage de cette nouvelle approche est qu'il est maintenant facile
+d'intégrer les changements survenus dans le dépôt git officiel sur son
+clone pour bénéficier des dernières mises à jour de
+\protect\hyperlink{acronym__GRUB}{GRUB}.
+
+\textbf{TODO: expliquer les problèmes rencontrés sans
+\protect\hyperlink{acronym__EFI}{EFI} avec lesmachines récentes, des
+modifications nécessaires pour supporter ce nouveau système et des
+limitations que cela apporte.}
+
+\hypertarget{amuxe9lioration-de-la-vitesse-de-transfert-des-images}{%
+\section{Amélioration de la vitesse de transfert des
+images}\label{amuxe9lioration-de-la-vitesse-de-transfert-des-images}}
+
+Le protocole \protect\hyperlink{acronym__NFS}{NFS} est utilisé dans le
+système initial pour transférer une image depuis le client vers le
+serveur. Peut-être que la vitesse de transfert des images à travers le
+réseau pourrait être améliorée en utilisant un autre protocole. Pour
+décider si le choix de ce protocole est adapté ou si au contraire il
+serait bénéfique d'en utiliser un autre, la vitesse de transfert d'une
+grosse image a été mesurée sur différents protocoles de transfert de
+fichier.
+
+\hypertarget{protocoles-considuxe9ruxe9s}{%
+\subsection{Protocoles considérés}\label{protocoles-considuxe9ruxe9s}}
+
+Les différents protocoles qui ont été mesurés sont:
+
+\begin{itemize}
+\tightlist
+\item
+  \protect\hyperlink{acronym__SCP}{SCP}: ce protocole, utilisable avec
+  le programme éponyme \texttt{scp}, permet le transfert de fichiers
+  sécurisé entre un client et un serveur utilisant le protocole d'accès
+  à distance sécurisé \protect\hyperlink{acronym__SSH}{SSH}. Bien que le
+  chiffrage de la communication n'est pas nécessaire dans notre cas, il
+  est intéressant d'observer si ce dernier a un impact sur le temps de
+  transfert.
+\item
+  \protect\hyperlink{acronym__HTTP}{HTTP}: c'est le protocole
+  client-serveur utilisé sur le World Wide Web
+  (\protect\hyperlink{acronym__WWW}{WWW}) pour la communication entre en
+  les navigateurs (client) et les serveurs. Il est souvent utilisé pour
+  le téléchargement de fichiers sur internet et offre probablement des
+  performances acceptables. Il existe aussi une version chiffrée de ce
+  protocole, \protect\hyperlink{acronym__HTTPS}{HTTPS}, mais uniquement
+  la version non-chiffrée sera testée ici, car le chiffrement de la
+  communication ne semble pas nécessaire et pourrait impacter les
+  performances.
+\item
+  \protect\hyperlink{acronym__FTP}{FTP}: ce protocole standard fait
+  exactement ce que nous avons besoin: transférer des fichiers à travers
+  le réseau. Il y a de forte chances qu'il offre de très bonnes
+  performances.
+\item
+  \protect\hyperlink{acronym__NFS}{NFS}: le protocole standard pour
+  monter à distance des dossiers partagés entre des
+  \protect\hyperlink{acronym__OS}{OS} Linux. C'est ce système qui est
+  utilisé par le projet initial, mais ce n'est probablement pas le plus
+  rapide, car permet de faire plus qu'un simple transfert de fichiers.
+\item
+  \protect\hyperlink{acronym__SMB}{SMB}: le protocole standard pour
+  monter à distance des dossier partagés entre des
+  \protect\hyperlink{acronym__OS}{OS} Windows. Une implémentation existe
+  sous linux, \emph{Samba}, et elle est courremment utilisée pour une
+  meilleure compatiblité avec les systèmes Windows que sont équivalent
+  \protect\hyperlink{acronym__NFS}{NFS}.
+\item
+  \protect\hyperlink{acronym__IPFS}{IPFS}: ce protocole pair à pair
+  décentralisé permet à chacun de des pairs de mettre à disposition ou
+  de télécharger des fichiers. Il pourrait être intéressant d'utiliser
+  ce protocole pour soulager la charge du serveur, car tous les clients
+  connectés peuvent se partager des parties d'images qu'ils ont déjà. Le
+  serveur de déploiement ne serait qu'un pair de plus, qui dispose de
+  toutes les images. Il est cependant possible que ce protocole ne soit
+  pas le plus performant à cause de sa jeunesse et de son mode de
+  fonctionnement complexe qui apporte un surcout à l'échange, en tout
+  cas dans le cas ou il n'y a que deux pairs.
+\end{itemize}
+
+\hypertarget{environnement-des-tests-de-performance-des-protocoles-de-transfert-de-fichiers}{%
+\subsection{Environnement des tests de performance des protocoles de
+transfert de
+fichiers}\label{environnement-des-tests-de-performance-des-protocoles-de-transfert-de-fichiers}}
+
+Deux machines de test identiques ont été utilisées: il s'agit de mini-PC
+DELL Optiplex 7060 micro avec les spécifications suivantes:
+
+\begin{itemize}
+\tightlist
+\item
+  Processeur: Intel® Core™ i7-8700 CPU cadencé à 3.20GHz,
+\item
+  Mémoire vive: 8 GiB (2 barettes 4GiB SODIMM DDR4 Synchronous 2666 MHz
+  (0.4 ns))
+\item
+  Disque: TOSHIBA KSG60ZMV SSD 476GiB (512GB)
+\item
+  Réseau: Intel e1000e Gigabit Ethernet
+\end{itemize}
+
+Les deux machines de test sont connectées en réseau avec un switch
+Gigabit Ethernet. Le système d'exploitation Debian 10.4.0 (nom de code
+\emph{buster}) AMD64 a été installé sur deux machines de test, sans
+interface graphique. La première machine est nommée \texttt{debian1} et
+la seconde \texttt{debian2}. Les noms \texttt{debian1.home} et
+\texttt{debian2.home} permettent aux deux machines de communiquer entre
+elles en faisant abstraction de leur adresse
+\protect\hyperlink{acronym__IP}{IP}. L'utilisateur \texttt{debian} avec
+le mot de passe \texttt{debian} est utilisé sur chacune des deux
+machines.
+
+Le fichier à copier, \texttt{win10.tar.gz} est une image brute de
+windows 10 compressée avec \texttt{gzip}, qui fait une taille totale de
+13743592907 B (12.8 GiB). Il est présent dans le dossier
+\texttt{/home/debian} de la machine \texttt{debian1}.
+
+La commande \texttt{perf} est utilisée pour tester 4 exécutions d'une
+commande de copie lancée depuis la machine \texttt{debian2}. Elle est
+installée à l'aide de la commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install linux{-}perf}
+\end{Highlighting}
+\end{Shaded}
+
+Pour faire fonctionner la commande sans être root, le kernel doit être
+configuré avec la commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\BuiltInTok{echo}\NormalTok{ 1 }\OperatorTok{\textgreater{}}\NormalTok{ /proc/sys/kernel/perf\_event\_paranoid}
+\end{Highlighting}
+\end{Shaded}
+
+Les sections suivantes détaillent les configurations spécifiques à
+chaque protocole effectuées sur chacune des machines et les résultats du
+test. La dernière section récapitule les résultats et explique quel
+protocole est choisi pour la suite du travail et pourquoi.
+
+\hypertarget{tests-de-performance-du-protocole-de-transfert-de-fichiers-scp}{%
+\subsection{\texorpdfstring{Tests de performance du protocole de
+transfert de fichiers
+\protect\hyperlink{acronym__SCP}{SCP}}{Tests de performance du protocole de transfert de fichiers SCP}}\label{tests-de-performance-du-protocole-de-transfert-de-fichiers-scp}}
+
+Tout d'abord, des clés SSH ont été générées sur chaque machine avec la
+commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\FunctionTok{ssh{-}keygen}
+\end{Highlighting}
+\end{Shaded}
+
+Ensuite, les clés ont été échangées. Sur \texttt{debian1}, la commande
+suivante a été utilisée:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{ssh{-}copy{-}id}\NormalTok{ debian2.home}
+\end{Highlighting}
+\end{Shaded}
+
+Sur \texttt{debian2}, la commande suivante a été utilisée:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{ssh{-}copy{-}id}\NormalTok{ debian1.home}
+\end{Highlighting}
+\end{Shaded}
+
+Finalement, le benchmark de la copie a été lancé sur \texttt{debian2}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\ExtensionTok{perf}\NormalTok{ stat {-}r 4 {-}d scp debian1.home:/home/debian/win10.tar.gz /home/debian/win10.tar.gz}
+\ExtensionTok{win10.tar.gz}\NormalTok{                                                                       100\%   13GB 109.6MB/s   01:59    }
+\ExtensionTok{win10.tar.gz}\NormalTok{                                                                       100\%   13GB 109.6MB/s   01:59    }
+\ExtensionTok{win10.tar.gz}\NormalTok{                                                                       100\%   13GB 109.7MB/s   01:59    }
+\ExtensionTok{win10.tar.gz}\NormalTok{                                                                       100\%   13GB 109.6MB/s   01:59    }
+
+ \ExtensionTok{Performance}\NormalTok{ counter stats for }\StringTok{\textquotesingle{}scp debian1.home:/home/debian/win10.tar.gz /home/debian/win10.tar.gz\textquotesingle{}}\NormalTok{ (4 runs)}\BuiltInTok{:}
+
+         \ExtensionTok{60}\NormalTok{,349.20 msec task{-}clock                \#    0.504 CPUs utilized            ( +{-}  3.61\% )}
+           \ExtensionTok{808}\NormalTok{,243      context{-}switches          \#    0.013 M/sec                    ( +{-}  0.26\% )}
+                \ExtensionTok{16}\NormalTok{      cpu{-}migrations            \#    0.000 K/sec                    ( +{-} 14.73\% )}
+            \ExtensionTok{16}\NormalTok{,862      page{-}faults               \#    0.279 K/sec                    ( +{-} 18.95\% )}
+   \ExtensionTok{191}\NormalTok{,612,352,176      cycles                    \#    3.175 GHz                      ( +{-}  0.33\% )  }\KeywordTok{(}\ExtensionTok{50.09\%}\KeywordTok{)}
+   \ExtensionTok{406}\NormalTok{,400,076,305      instructions              \#    2.12  insn per cycle           ( +{-}  0.25\% )  }\KeywordTok{(}\ExtensionTok{62.64\%}\KeywordTok{)}
+    \ExtensionTok{13}\NormalTok{,334,327,547      branches                  \#  220.953 M/sec                    ( +{-}  1.42\% )  }\KeywordTok{(}\ExtensionTok{62.43\%}\KeywordTok{)}
+       \ExtensionTok{246}\NormalTok{,499,018      branch{-}misses             \#    1.85\% of all branches          ( +{-}  3.10\% )  }\KeywordTok{(}\ExtensionTok{62.36\%}\KeywordTok{)}
+    \ExtensionTok{64}\NormalTok{,653,696,732      L1{-}dcache{-}loads           \# 1071.326 M/sec                    ( +{-}  0.44\% )  }\KeywordTok{(}\ExtensionTok{62.40\%}\KeywordTok{)}
+     \ExtensionTok{4}\NormalTok{,559,992,550      L1{-}dcache{-}load{-}misses     \#    7.05\% of all L1{-}dcache hits    ( +{-}  0.41\% )  }\KeywordTok{(}\ExtensionTok{62.43\%}\KeywordTok{)}
+       \ExtensionTok{784}\NormalTok{,218,339      LLC{-}loads                 \#   12.995 M/sec                    ( +{-}  0.64\% )  }\KeywordTok{(}\ExtensionTok{50.01\%}\KeywordTok{)}
+       \ExtensionTok{121}\NormalTok{,317,304      LLC{-}load{-}misses           \#   15.47\% of all LL{-}cache hits     ( +{-}  0.52\% )  }\KeywordTok{(}\ExtensionTok{50.29\%}\KeywordTok{)}
+
+          \ExtensionTok{119.8094}\NormalTok{ +{-} 0.0182 seconds time elapsed  ( +{-}  0.02\% )}
+\end{Highlighting}
+\end{Shaded}
+
+\hypertarget{tests-de-performance-du-protocole-de-transfert-de-fichiers-http}{%
+\subsection{\texorpdfstring{Tests de performance du protocole de
+transfert de fichiers
+\protect\hyperlink{acronym__HTTP}{HTTP}}{Tests de performance du protocole de transfert de fichiers HTTP}}\label{tests-de-performance-du-protocole-de-transfert-de-fichiers-http}}
+
+Le serveur \protect\hyperlink{acronym__HTTP}{HTTP} \emph{Apache} a été
+installé sur la machine \texttt{debian1} et le fichier a été mis à
+disposition sur ce serveur avec les commandes suivantes:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install apache2}
+\FunctionTok{cp}\NormalTok{ win10.tar.gz /var/www/html/}
+\end{Highlighting}
+\end{Shaded}
+
+Finalement, le benchmark du téléchargement du fichier avec la commande
+\texttt{wget} a été lancé sur \texttt{debian2}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\ExtensionTok{perf}\NormalTok{ stat {-}r 4 {-}d wget http://debian1.home/win10.tar.gz}
+\ExtensionTok{{-}{-}2020{-}05{-}20}\NormalTok{ 09:53:53{-}{-}  http://debian1.home/win10.tar.gz}
+\ExtensionTok{Resolving}\NormalTok{ debian1.home (debian1.home)}\ExtensionTok{...}\NormalTok{ 2a02:120b:c3e2:cab0:e6b9:7aff:feed:e0cd, 192.168.1.29}
+\ExtensionTok{Connecting}\NormalTok{ to debian1.home (debian1.home)}\KeywordTok{|}\ExtensionTok{2a02}\NormalTok{:120b:c3e2:cab0:e6b9:7aff:feed:e0cd}\KeywordTok{|}\NormalTok{:}\ExtensionTok{80...}\NormalTok{ connected.}
+\ExtensionTok{HTTP}\NormalTok{ request sent, awaiting response... 200 OK}
+\ExtensionTok{Length}\NormalTok{: 13743592907 (13G) [}\ExtensionTok{application}\NormalTok{/}\ExtensionTok{x{-}gzip}\NormalTok{]}
+\ExtensionTok{Saving}\NormalTok{ to: ‘win10.tar.gz.2’}
+
+\ExtensionTok{win10.tar.gz.2}\NormalTok{                100\%[==============================================}\OperatorTok{\textgreater{}}\NormalTok{]  12.80G   110MB/s    in 2m 0s   }
+
+\ExtensionTok{2020{-}05{-}20}\NormalTok{ 09:55:53 (110 MB/s) }\ExtensionTok{{-}}\NormalTok{ ‘win10.tar.gz.2’ saved [13743592907/13743592907]}
+
+\ExtensionTok{{-}{-}2020{-}05{-}20}\NormalTok{ 09:55:53{-}{-}  http://debian1.home/win10.tar.gz}
+\ExtensionTok{Resolving}\NormalTok{ debian1.home (debian1.home)}\ExtensionTok{...}\NormalTok{ 2a02:120b:c3e2:cab0:e6b9:7aff:feed:e0cd, 192.168.1.29}
+\ExtensionTok{Connecting}\NormalTok{ to debian1.home (debian1.home)}\KeywordTok{|}\ExtensionTok{2a02}\NormalTok{:120b:c3e2:cab0:e6b9:7aff:feed:e0cd}\KeywordTok{|}\NormalTok{:}\ExtensionTok{80...}\NormalTok{ connected.}
+\ExtensionTok{HTTP}\NormalTok{ request sent, awaiting response... 200 OK}
+\ExtensionTok{Length}\NormalTok{: 13743592907 (13G) [}\ExtensionTok{application}\NormalTok{/}\ExtensionTok{x{-}gzip}\NormalTok{]}
+\ExtensionTok{Saving}\NormalTok{ to: ‘win10.tar.gz.3’}
+
+\ExtensionTok{win10.tar.gz.3}\NormalTok{                100\%[==============================================}\OperatorTok{\textgreater{}}\NormalTok{]  12.80G   108MB/s    in 2m 0s   }
+
+\ExtensionTok{2020{-}05{-}20}\NormalTok{ 09:57:52 (109 MB/s) }\ExtensionTok{{-}}\NormalTok{ ‘win10.tar.gz.3’ saved [13743592907/13743592907]}
+
+\ExtensionTok{{-}{-}2020{-}05{-}20}\NormalTok{ 09:57:52{-}{-}  http://debian1.home/win10.tar.gz}
+\ExtensionTok{Resolving}\NormalTok{ debian1.home (debian1.home)}\ExtensionTok{...}\NormalTok{ 2a02:120b:c3e2:cab0:e6b9:7aff:feed:e0cd, 192.168.1.29}
+\ExtensionTok{Connecting}\NormalTok{ to debian1.home (debian1.home)}\KeywordTok{|}\ExtensionTok{2a02}\NormalTok{:120b:c3e2:cab0:e6b9:7aff:feed:e0cd}\KeywordTok{|}\NormalTok{:}\ExtensionTok{80...}\NormalTok{ connected.}
+\ExtensionTok{HTTP}\NormalTok{ request sent, awaiting response... 200 OK}
+\ExtensionTok{Length}\NormalTok{: 13743592907 (13G) [}\ExtensionTok{application}\NormalTok{/}\ExtensionTok{x{-}gzip}\NormalTok{]}
+\ExtensionTok{Saving}\NormalTok{ to: ‘win10.tar.gz.4’}
+
+\ExtensionTok{win10.tar.gz.4}\NormalTok{                100\%[==============================================}\OperatorTok{\textgreater{}}\NormalTok{]  12.80G   108MB/s    in 2m 1s   }
+
+\ExtensionTok{2020{-}05{-}20}\NormalTok{ 09:59:53 (109 MB/s) }\ExtensionTok{{-}}\NormalTok{ ‘win10.tar.gz.4’ saved [13743592907/13743592907]}
+
+\ExtensionTok{{-}{-}2020{-}05{-}20}\NormalTok{ 09:59:53{-}{-}  http://debian1.home/win10.tar.gz}
+\ExtensionTok{Resolving}\NormalTok{ debian1.home (debian1.home)}\ExtensionTok{...}\NormalTok{ 2a02:120b:c3e2:cab0:e6b9:7aff:feed:e0cd, 192.168.1.29}
+\ExtensionTok{Connecting}\NormalTok{ to debian1.home (debian1.home)}\KeywordTok{|}\ExtensionTok{2a02}\NormalTok{:120b:c3e2:cab0:e6b9:7aff:feed:e0cd}\KeywordTok{|}\NormalTok{:}\ExtensionTok{80...}\NormalTok{ connected.}
+\ExtensionTok{HTTP}\NormalTok{ request sent, awaiting response... 200 OK}
+\ExtensionTok{Length}\NormalTok{: 13743592907 (13G) [}\ExtensionTok{application}\NormalTok{/}\ExtensionTok{x{-}gzip}\NormalTok{]}
+\ExtensionTok{Saving}\NormalTok{ to: ‘win10.tar.gz.5’}
+
+\ExtensionTok{win10.tar.gz.5}\NormalTok{                100\%[==============================================}\OperatorTok{\textgreater{}}\NormalTok{]  12.80G   110MB/s    in 2m 0s   }
+
+\ExtensionTok{2020{-}05{-}20}\NormalTok{ 10:01:52 (110 MB/s) }\ExtensionTok{{-}}\NormalTok{ ‘win10.tar.gz.5’ saved [13743592907/13743592907]}
+
+
+ \ExtensionTok{Performance}\NormalTok{ counter stats for }\StringTok{\textquotesingle{}wget http://debian1.home/win10.tar.gz\textquotesingle{}}\NormalTok{ (4 runs)}\BuiltInTok{:}
+
+         \ExtensionTok{46}\NormalTok{,792.73 msec task{-}clock                \#    0.390 CPUs utilized            ( +{-}  0.64\% )}
+           \ExtensionTok{417}\NormalTok{,641      context{-}switches          \#    0.009 M/sec                    ( +{-}  0.31\% )}
+                \ExtensionTok{18}\NormalTok{      cpu{-}migrations            \#    0.000 K/sec                    ( +{-}  8.25\% )}
+               \ExtensionTok{292}\NormalTok{      page{-}faults               \#    0.006 K/sec                    ( +{-}  0.30\% )}
+    \ExtensionTok{61}\NormalTok{,311,321,905      cycles                    \#    1.310 GHz                      ( +{-}  0.25\% )  }\KeywordTok{(}\ExtensionTok{49.71\%}\KeywordTok{)}
+    \ExtensionTok{55}\NormalTok{,652,602,418      instructions              \#    0.91  insn per cycle           ( +{-}  0.20\% )  }\KeywordTok{(}\ExtensionTok{61.93\%}\KeywordTok{)}
+    \ExtensionTok{10}\NormalTok{,835,524,321      branches                  \#  231.564 M/sec                    ( +{-}  0.14\% )  }\KeywordTok{(}\ExtensionTok{62.04\%}\KeywordTok{)}
+       \ExtensionTok{229}\NormalTok{,073,690      branch{-}misses             \#    2.11\% of all branches          ( +{-}  1.03\% )  }\KeywordTok{(}\ExtensionTok{62.77\%}\KeywordTok{)}
+    \ExtensionTok{16}\NormalTok{,218,621,768      L1{-}dcache{-}loads           \#  346.606 M/sec                    ( +{-}  0.16\% )  }\KeywordTok{(}\ExtensionTok{62.94\%}\KeywordTok{)}
+     \ExtensionTok{1}\NormalTok{,767,713,664      L1{-}dcache{-}load{-}misses     \#   10.90\% of all L1{-}dcache hits    ( +{-}  0.17\% )  }\KeywordTok{(}\ExtensionTok{62.78\%}\KeywordTok{)}
+       \ExtensionTok{392}\NormalTok{,258,789      LLC{-}loads                 \#    8.383 M/sec                    ( +{-}  1.79\% )  }\KeywordTok{(}\ExtensionTok{50.19\%}\KeywordTok{)}
+       \ExtensionTok{113}\NormalTok{,116,138      LLC{-}load{-}misses           \#   28.84\% of all LL{-}cache hits     ( +{-}  0.25\% )  }\KeywordTok{(}\ExtensionTok{49.57\%}\KeywordTok{)}
+
+           \ExtensionTok{119.871}\NormalTok{ +{-} 0.235 seconds time elapsed  ( +{-}  0.20\% )}
+\end{Highlighting}
+\end{Shaded}
+
+\hypertarget{tests-de-performance-du-protocole-de-transfert-de-fichiers-ftp}{%
+\subsection{\texorpdfstring{Tests de performance du protocole de
+transfert de fichiers
+\protect\hyperlink{acronym__FTP}{FTP}}{Tests de performance du protocole de transfert de fichiers FTP}}\label{tests-de-performance-du-protocole-de-transfert-de-fichiers-ftp}}
+
+Le serveur \protect\hyperlink{acronym__FTP}{FTP} \texttt{vsftpd} a été
+installé sur la machine \texttt{debian1} avec la commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install vsftpd}
+\end{Highlighting}
+\end{Shaded}
+
+Le client \protect\hyperlink{acronym__FTP}{FTP} \texttt{ftp} a été
+installé sur la machine \texttt{debian2} avec la commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install ftp}
+\end{Highlighting}
+\end{Shaded}
+
+Par défaut, un utilisateur se connecte sur son dossier \texttt{home} sur
+le serveur, donc il n'y a pas besoin de créer de configuration spéciale
+car le fichier à \texttt{win10.tar.gz} est déjà présent dans le dossier
+\texttt{/home/debian}. La commande suivante est lancée pour mesurer le
+temps de transfert:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\ExtensionTok{perf}\NormalTok{ stat {-}r 4 {-}d lftp {-}u debian,debian {-}e }\StringTok{"get {-}e win10.tar.gz;quit"}\NormalTok{ debian1.home}
+\ExtensionTok{13743592907}\NormalTok{ bytes transferred in 120 seconds (109.61 MiB/s)             }
+\ExtensionTok{13743592907}\NormalTok{ bytes transferred in 120 seconds (109.11 MiB/s)             }
+\ExtensionTok{13743592907}\NormalTok{ bytes transferred in 120 seconds (108.81 MiB/s)             }
+\ExtensionTok{13743592907}\NormalTok{ bytes transferred in 120 seconds (109.01 MiB/s)             }
+
+ \ExtensionTok{Performance}\NormalTok{ counter stats for }\StringTok{\textquotesingle{}lftp {-}u debian,debian {-}e get {-}e win10.tar.gz;quit debian1.home\textquotesingle{}}\NormalTok{ (4 runs)}\BuiltInTok{:}
+
+         \ExtensionTok{43}\NormalTok{,760.05 msec task{-}clock                \#    0.364 CPUs utilized            ( +{-}  3.19\% )}
+           \ExtensionTok{416}\NormalTok{,480      context{-}switches          \#    0.010 M/sec                    ( +{-}  0.21\% )}
+                \ExtensionTok{20}\NormalTok{      cpu{-}migrations            \#    0.000 K/sec                    ( +{-} 17.44\% )}
+               \ExtensionTok{768}\NormalTok{      page{-}faults               \#    0.018 K/sec                    ( +{-}  1.76\% )}
+    \ExtensionTok{50}\NormalTok{,319,107,200      cycles                    \#    1.150 GHz                      ( +{-}  1.87\% )  }\KeywordTok{(}\ExtensionTok{49.42\%}\KeywordTok{)}
+    \ExtensionTok{41}\NormalTok{,925,907,326      instructions              \#    0.83  insn per cycle           ( +{-}  2.58\% )  }\KeywordTok{(}\ExtensionTok{61.97\%}\KeywordTok{)}
+     \ExtensionTok{8}\NormalTok{,345,354,967      branches                  \#  190.707 M/sec                    ( +{-}  2.51\% )  }\KeywordTok{(}\ExtensionTok{62.63\%}\KeywordTok{)}
+       \ExtensionTok{192}\NormalTok{,939,322      branch{-}misses             \#    2.31\% of all branches          ( +{-}  3.57\% )  }\KeywordTok{(}\ExtensionTok{62.66\%}\KeywordTok{)}
+    \ExtensionTok{12}\NormalTok{,148,795,763      L1{-}dcache{-}loads           \#  277.623 M/sec                    ( +{-}  2.11\% )  }\KeywordTok{(}\ExtensionTok{63.06\%}\KeywordTok{)}
+     \ExtensionTok{1}\NormalTok{,646,404,955      L1{-}dcache{-}load{-}misses     \#   13.55\% of all L1{-}dcache hits    ( +{-}  0.76\% )  }\KeywordTok{(}\ExtensionTok{62.79\%}\KeywordTok{)}
+       \ExtensionTok{516}\NormalTok{,891,020      LLC{-}loads                 \#   11.812 M/sec                    ( +{-}  0.79\% )  }\KeywordTok{(}\ExtensionTok{49.87\%}\KeywordTok{)}
+       \ExtensionTok{112}\NormalTok{,961,435      LLC{-}load{-}misses           \#   21.85\% of all LL{-}cache hits     ( +{-}  0.29\% )  }\KeywordTok{(}\ExtensionTok{49.56\%}\KeywordTok{)}
+
+           \ExtensionTok{120.151}\NormalTok{ +{-} 0.213 seconds time elapsed  ( +{-}  0.18\% )}
+\end{Highlighting}
+\end{Shaded}
+
+\hypertarget{tests-de-performance-du-protocole-de-transfert-de-fichiers-nfs}{%
+\subsection{\texorpdfstring{Tests de performance du protocole de
+transfert de fichiers
+\protect\hyperlink{acronym__NFS}{NFS}}{Tests de performance du protocole de transfert de fichiers NFS}}\label{tests-de-performance-du-protocole-de-transfert-de-fichiers-nfs}}
+
+Le serveur \protect\hyperlink{acronym__NFS}{NFS} est installé et
+configuré avec les commandes suivantes sur \texttt{debian1}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install nfs{-}kernel{-}server}
+\FunctionTok{mkdir}\NormalTok{ /nfsroot}
+\FunctionTok{cp}\NormalTok{ win10.tar.gz /nfsroot/}
+\BuiltInTok{echo} \StringTok{\textquotesingle{}/nfsroot/         *(rw,fsid=0,no\_root\_squash,no\_subtree\_check,async,insecure)\textquotesingle{}} \OperatorTok{\textgreater{}\textgreater{}}\NormalTok{ /etc/exports}
+\ExtensionTok{systemctl}\NormalTok{ restart nfs{-}server}
+\end{Highlighting}
+\end{Shaded}
+
+Le client partage est monté sur le client \texttt{debian2} avec les
+commandes suivantes:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\FunctionTok{su}
+\ExtensionTok{apt}\NormalTok{ install nfs{-}common}
+\FunctionTok{mkdir}\NormalTok{ /nfsroot}
+\FunctionTok{mount}\NormalTok{ {-}t nfs debian1.home:/nfsroot /nfsroot}
+\BuiltInTok{exit}
+\end{Highlighting}
+\end{Shaded}
+
+Finalement, le benchmark de la copie a été lancé sur \texttt{debian2}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\ExtensionTok{perf}\NormalTok{ stat {-}r 4 {-}d cp {-}f /nfsroot/win10.tar.gz \textasciitilde{}/win10.tar.gz}
+
+ \ExtensionTok{Performance}\NormalTok{ counter stats for }\StringTok{\textquotesingle{}cp {-}f /nfsroot/win10.tar.gz /home/debian/win10.tar.gz\textquotesingle{}}\NormalTok{ (4 runs)}\BuiltInTok{:}
+
+         \ExtensionTok{17}\NormalTok{,076.43 msec task{-}clock                \#    0.142 CPUs utilized            ( +{-}  7.26\% )}
+            \ExtensionTok{13}\NormalTok{,716      context{-}switches          \#    0.803 K/sec                    ( +{-}  3.93\% )}
+                 \ExtensionTok{3}\NormalTok{      cpu{-}migrations            \#    0.000 K/sec                    ( +{-} 22.88\% )}
+               \ExtensionTok{360}\NormalTok{      page{-}faults               \#    0.021 K/sec                    ( +{-}  0.24\% )}
+    \ExtensionTok{29}\NormalTok{,329,681,962      cycles                    \#    1.718 GHz                      ( +{-}  0.84\% )  }\KeywordTok{(}\ExtensionTok{50.10\%}\KeywordTok{)}
+    \ExtensionTok{39}\NormalTok{,303,308,222      instructions              \#    1.34  insn per cycle           ( +{-}  0.27\% )  }\KeywordTok{(}\ExtensionTok{62.64\%}\KeywordTok{)}
+     \ExtensionTok{7}\NormalTok{,592,336,916      branches                  \#  444.609 M/sec                    ( +{-}  0.28\% )  }\KeywordTok{(}\ExtensionTok{62.68\%}\KeywordTok{)}
+        \ExtensionTok{79}\NormalTok{,751,186      branch{-}misses             \#    1.05\% of all branches          ( +{-}  0.28\% )  }\KeywordTok{(}\ExtensionTok{62.46\%}\KeywordTok{)}
+    \ExtensionTok{10}\NormalTok{,749,309,904      L1{-}dcache{-}loads           \#  629.482 M/sec                    ( +{-}  0.40\% )  }\KeywordTok{(}\ExtensionTok{62.54\%}\KeywordTok{)}
+     \ExtensionTok{1}\NormalTok{,097,825,933      L1{-}dcache{-}load{-}misses     \#   10.21\% of all L1{-}dcache hits    ( +{-}  1.45\% )  }\KeywordTok{(}\ExtensionTok{62.44\%}\KeywordTok{)}
+       \ExtensionTok{230}\NormalTok{,105,352      LLC{-}loads                 \#   13.475 M/sec                    ( +{-}  1.25\% )  }\KeywordTok{(}\ExtensionTok{49.92\%}\KeywordTok{)}
+        \ExtensionTok{13}\NormalTok{,665,720      LLC{-}load{-}misses           \#    5.94\% of all LL{-}cache hits     ( +{-}  8.55\% )  }\KeywordTok{(}\ExtensionTok{49.87\%}\KeywordTok{)}
+
+           \ExtensionTok{120.417}\NormalTok{ +{-} 0.119 seconds time elapsed  ( +{-}  0.10\% )}
+\end{Highlighting}
+\end{Shaded}
+
+\hypertarget{tests-de-performance-du-protocole-de-transfert-de-fichiers-smb}{%
+\subsection{\texorpdfstring{Tests de performance du protocole de
+transfert de fichiers
+\protect\hyperlink{acronym__SMB}{SMB}}{Tests de performance du protocole de transfert de fichiers SMB}}\label{tests-de-performance-du-protocole-de-transfert-de-fichiers-smb}}
+
+Le serveur \protect\hyperlink{acronym__SMB}{SMB} \texttt{samba} est
+installé et configuré avec les commandes suivantes sur \texttt{debian1}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install samba}
+\ExtensionTok{smbpasswd}\NormalTok{ {-}a debian }
+\FunctionTok{cat} \StringTok{\textquotesingle{}[debian]}
+\StringTok{path = /home/debian}
+\StringTok{valid users = debian}
+\StringTok{read only = no\textquotesingle{}} \OperatorTok{\textgreater{}\textgreater{}}\NormalTok{ /etc/samba/smb.conf}
+\ExtensionTok{systemctl}\NormalTok{ restart smbd}
+\end{Highlighting}
+\end{Shaded}
+
+Le client \protect\hyperlink{acronym__SMB}{SMB} \texttt{samba} est
+installé sur le client avec la commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\ExtensionTok{apt}\NormalTok{ install samba{-}client}
+\end{Highlighting}
+\end{Shaded}
+
+Finalement, le benchmark de la copie est lancé sur \texttt{debian2}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\ExtensionTok{perf}\NormalTok{ stat {-}r 4 {-}d smbclient {-}U debian\%debian //debian1.home/debian {-}c }\StringTok{\textquotesingle{}get win10.tar.gz\textquotesingle{}}
+\ExtensionTok{Unable}\NormalTok{ to initialize messaging context}
+\ExtensionTok{getting}\NormalTok{ file \textbackslash{}win10.tar.gz of size 13743592907 as win10.tar.gz (109684.9 KiloBytes/sec) }\KeywordTok{(}\ExtensionTok{average}\NormalTok{ 109684.9 KiloBytes/sec}\KeywordTok{)}
+\ExtensionTok{Unable}\NormalTok{ to initialize messaging context}
+\ExtensionTok{getting}\NormalTok{ file \textbackslash{}win10.tar.gz of size 13743592907 as win10.tar.gz (109443.4 KiloBytes/sec) }\KeywordTok{(}\ExtensionTok{average}\NormalTok{ 109443.4 KiloBytes/sec}\KeywordTok{)}
+\ExtensionTok{Unable}\NormalTok{ to initialize messaging context}
+\ExtensionTok{getting}\NormalTok{ file \textbackslash{}win10.tar.gz of size 13743592907 as win10.tar.gz (110095.1 KiloBytes/sec) }\KeywordTok{(}\ExtensionTok{average}\NormalTok{ 110095.1 KiloBytes/sec}\KeywordTok{)}
+\ExtensionTok{Unable}\NormalTok{ to initialize messaging context}
+\ExtensionTok{getting}\NormalTok{ file \textbackslash{}win10.tar.gz of size 13743592907 as win10.tar.gz (109244.7 KiloBytes/sec) }\KeywordTok{(}\ExtensionTok{average}\NormalTok{ 109244.7 KiloBytes/sec}\KeywordTok{)}
+
+ \ExtensionTok{Performance}\NormalTok{ counter stats for }\StringTok{\textquotesingle{}smbclient {-}U debian\%debian //debian1.home/debian {-}c get win10.tar.gz\textquotesingle{}}\NormalTok{ (4 runs)}\BuiltInTok{:}
+
+         \ExtensionTok{35}\NormalTok{,488.67 msec task{-}clock                \#    0.290 CPUs utilized            ( +{-}  0.49\% )}
+           \ExtensionTok{352}\NormalTok{,535      context{-}switches          \#    0.010 M/sec                    ( +{-}  0.24\% )}
+                \ExtensionTok{14}\NormalTok{      cpu{-}migrations            \#    0.000 K/sec                    ( +{-} 19.12\% )}
+             \ExtensionTok{3}\NormalTok{,915      page{-}faults               \#    0.110 K/sec                    ( +{-}  3.20\% )}
+    \ExtensionTok{35}\NormalTok{,420,663,303      cycles                    \#    0.998 GHz                      ( +{-}  0.45\% )  }\KeywordTok{(}\ExtensionTok{50.50\%}\KeywordTok{)}
+    \ExtensionTok{35}\NormalTok{,124,728,140      instructions              \#    0.99  insn per cycle           ( +{-}  2.40\% )  }\KeywordTok{(}\ExtensionTok{62.99\%}\KeywordTok{)}
+     \ExtensionTok{6}\NormalTok{,843,251,403      branches                  \#  192.829 M/sec                    ( +{-}  2.43\% )  }\KeywordTok{(}\ExtensionTok{62.60\%}\KeywordTok{)}
+       \ExtensionTok{115}\NormalTok{,346,267      branch{-}misses             \#    1.69\% of all branches          ( +{-}  1.05\% )  }\KeywordTok{(}\ExtensionTok{62.27\%}\KeywordTok{)}
+     \ExtensionTok{9}\NormalTok{,922,177,546      L1{-}dcache{-}loads           \#  279.587 M/sec                    ( +{-}  1.82\% )  }\KeywordTok{(}\ExtensionTok{61.98\%}\KeywordTok{)}
+     \ExtensionTok{1}\NormalTok{,307,137,276      L1{-}dcache{-}load{-}misses     \#   13.17\% of all L1{-}dcache hits    ( +{-}  0.23\% )  }\KeywordTok{(}\ExtensionTok{62.22\%}\KeywordTok{)}
+       \ExtensionTok{437}\NormalTok{,456,998      LLC{-}loads                 \#   12.327 M/sec                    ( +{-}  4.03\% )  }\KeywordTok{(}\ExtensionTok{50.00\%}\KeywordTok{)}
+       \ExtensionTok{159}\NormalTok{,643,085      LLC{-}load{-}misses           \#   36.49\% of all LL{-}cache hits     ( +{-}  8.69\% )  }\KeywordTok{(}\ExtensionTok{50.44\%}\KeywordTok{)}
+
+           \ExtensionTok{122.565}\NormalTok{ +{-} 0.215 seconds time elapsed  ( +{-}  0.18\% )}
+\end{Highlighting}
+\end{Shaded}
+
+\hypertarget{tests-de-performance-du-protocole-de-transfert-de-fichiers-ipfs}{%
+\subsection{\texorpdfstring{Tests de performance du protocole de
+transfert de fichiers
+\protect\hyperlink{acronym__IPFS}{IPFS}}{Tests de performance du protocole de transfert de fichiers IPFS}}\label{tests-de-performance-du-protocole-de-transfert-de-fichiers-ipfs}}
+
+Sur chacune des machines, le langage \emph{Go} doit être installé avec
+les commandes suivantes:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\FunctionTok{wget}\NormalTok{ https://dl.google.com/go/go1.14.3.linux{-}amd64.tar.gz}
+\FunctionTok{tar}\NormalTok{ {-}C /usr/local {-}xzf go1.14.3.linux{-}amd64.tar.gz}
+\BuiltInTok{echo} \StringTok{\textquotesingle{}export PATH=$PATH:/usr/local/go/bin\textquotesingle{}} \OperatorTok{\textgreater{}\textgreater{}}\NormalTok{ /etc/profile}
+\BuiltInTok{export} \VariableTok{PATH=$PATH}\NormalTok{:/usr/local/go/bin}
+\end{Highlighting}
+\end{Shaded}
+
+Ensuite, \protect\hyperlink{acronym__IPFS}{IPFS} est installé sur
+chacune des machines:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\FunctionTok{wget}\NormalTok{ https://dist.ipfs.io/go{-}ipfs/v0.5.1/go{-}ipfs\_v0.5.1\_linux{-}amd64.tar.gz}
+\FunctionTok{tar}\NormalTok{ xvzf go{-}ipfs\_v0.5.1\_linux{-}amd64.tar.gz}
+\FunctionTok{mv}\NormalTok{ go{-}ipfs/ipfs /usr/local/bin/ipfs}
+\end{Highlighting}
+\end{Shaded}
+
+Un noeud \protect\hyperlink{acronym__IPFS}{IPFS} est ensuite initialisé
+sur chacune des machines:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ init}
+\end{Highlighting}
+\end{Shaded}
+
+Pour avoir un réseau IPFS privé, on génère une clé de \emph{swarm} sur
+\texttt{debian1} et on la copie sur \texttt{debian2}, en lançant les
+commandes suivantes sur la machine \texttt{debian1}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\BuiltInTok{echo}\NormalTok{ {-}e }\StringTok{"/key/swarm/psk/1.0.0/\textbackslash{}n/base16/\textbackslash{}n}\KeywordTok{\textasciigrave{}}\FunctionTok{tr}\NormalTok{ {-}dc }\StringTok{\textquotesingle{}a{-}f0{-}9\textquotesingle{}} \OperatorTok{\textless{}}\NormalTok{ /dev/urandom }\KeywordTok{|} \FunctionTok{head}\NormalTok{ {-}c64}\KeywordTok{\textasciigrave{}}\StringTok{"} \OperatorTok{\textgreater{}}\NormalTok{ \textasciitilde{}/.ipfs/swarm.key}
+\FunctionTok{scp}\NormalTok{ /home/debian/.ipfs/swarm.key debian2.home:/home/debian/.ipfs/swarm.key}
+\end{Highlighting}
+\end{Shaded}
+
+Maintenant, il faut configurer un noeud d'amorçage (\emph{bootstrap
+node}) sur \texttt{debian1}, qui sera utilisé par \texttt{debian2} pour
+se connecter au réseau \protect\hyperlink{acronym__IPFS}{IPFS} privé
+séparé du réseau public qui utilise d'autres noeuds d'amorçage. Pour
+faire cela, il faut commencer par supprimer la liste des noeuds
+d'amorçage publics sur les deux machines avec la commande suivante:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ bootstrap rm {-}{-}all}
+\end{Highlighting}
+\end{Shaded}
+
+Ensuite, il faut récupérer l'identifiant unique \texttt{PeerID} de
+\texttt{debian1} pour pouvoir le configurer comme un noeud d'amorçage
+dans \texttt{debian2}. La commande suivante est lancée sur
+\texttt{debian1}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ config show }\KeywordTok{|} \FunctionTok{grep} \StringTok{"PeerID"}
+    \StringTok{"PeerID"}\NormalTok{: }\StringTok{"QmX9MYUQhjKxua6HQMtpzaZd9ui4gGT75FJgAxeQJC47Ei"}
+\end{Highlighting}
+\end{Shaded}
+
+L'identitfiant unique \texttt{PeerID} de \texttt{debian1} retourné par
+la commande est:
+
+\texttt{QmX9MYUQhjKxua6HQMtpzaZd9ui4gGT75FJgAxeQJC47Ei}
+
+On peutmaintenant le rajouter dans la configuration des noeuds
+d'amorçage des deux machines en lançant la commande suivante sur chacune
+d'entre elle:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ bootstrap add /dnsaddr/debian1.home/p2p/QmX9MYUQhjKxua6HQMtpzaZd9ui4gGT75FJgAxeQJC47Ei}
+\end{Highlighting}
+\end{Shaded}
+
+Maintenant, le \emph{daemon} \protect\hyperlink{acronym__IPFS}{IPFS}
+peut être lancé sur chacune des machines. La variable d'environnement
+\texttt{LIBP2P\_FORCE\_PNET=1} est définie pour forcer les échanges à se
+faire sur un réseau privé.
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\BuiltInTok{export} \VariableTok{LIBP2P\_FORCE\_PNET=}\NormalTok{1}
+\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ daemon}
+\end{Highlighting}
+\end{Shaded}
+
+Dans ce cas, le \emph{daemon} a été exécuté en avant plan et un second
+terminal sera ouvert pour la suite des commandes. Dans une configuration
+plus durable, il faudrait le faire tourner en arrière plan, par exemple
+avec une unité systemd.
+
+Maintenant on peut partager l'image sur le réseau avec la commande
+suivante sur \texttt{debian1}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ add win10.tar.gz }
+\ExtensionTok{added}\NormalTok{ QmRm8As8ECuQoLq3UWowsxJ8mh89txLvpUh7A2mgw5pMhv win10.tar.gz}
+ \ExtensionTok{12.80}\NormalTok{ GiB / 12.80 GiB [==============================================================================] 100.00\%}
+\end{Highlighting}
+\end{Shaded}
+
+Le temps d'ajout de l'image a pris plus de trois minutes. À la fin, la
+référence du fichier, qui l'identifie de manière unique sur le réseau,
+est affichée: \texttt{QmRm8As8ECuQoLq3UWowsxJ8mh89txLvpUh7A2mgw5pMhv}.
+
+On peut maintenant tenter de récupérer le fichier depuis
+\texttt{debian2}:
+
+\begin{Shaded}
+\begin{Highlighting}[]
+\NormalTok{$ }\VariableTok{IPFS\_PATH=}\NormalTok{\textasciitilde{}/.ipfs }\ExtensionTok{ipfs}\NormalTok{ get QmRm8As8ECuQoLq3UWowsxJ8mh89txLvpUh7A2mgw5pMhv}
+\ExtensionTok{Saving}\NormalTok{ file(s) }\ExtensionTok{to}\NormalTok{ QmRm8As8ECuQoLq3UWowsxJ8mh89txLvpUh7A2mgw5pMhv}
+ \ExtensionTok{12.80}\NormalTok{ GiB / 12.80 GiB [==============================================================================] 100.00\% 7m27s}
+\end{Highlighting}
+\end{Shaded}
+
+Le transfert a pris \(7m27s = 447s\). C'est beaucoup trop long pour nos
+besoins. Le benchmark avec \texttt{perf} n'a même pas été effectué au vu
+de ce résultat.
+
+\hypertarget{choix-du-protocole-de-transfert-de-fichiers}{%
+\subsection{Choix du protocole de transfert de
+fichiers}\label{choix-du-protocole-de-transfert-de-fichiers}}
+
+La table \ref{table_protocols} ainsi que la figure \ref{chart_protocols}
+récapitulent les résultats mesurés pour chacun des protocoles testés. On
+peut remarquer que pour tous les protocoles, sauf
+\protect\hyperlink{acronym__IPFS}{IPFS}, les résultats sont proches de
+120 secondes. Cette durée montre que pour ces protocoles, on est proches
+de la limite théorique de gigabit ethernet:
+
+\[ \frac{13743592907 [B]}{120 [s]} = \frac{109948743256 [b]}{120 [s]} \approx 916239527 [b/s] \approx 0.916 [Gb/s] \approx 1 [Gb/s] \]
+
+On peut donc conclure que le choix du protocole
+\protect\hyperlink{acronym__NFS}{NFS} est approprié car les autres
+protocole n'accélèrent pas considérablement la vitesse de transfert
+d'une image.
+
+\clearpage
+
+\begin{longtable}[]{@{}llll@{}}
+\caption{Table des mesures de la durée de la copie d'un fichier avec
+différents protocoles \label{table_protocols}}\tabularnewline
+\toprule
+\begin{minipage}[b]{0.22\columnwidth}\raggedright
+Protocole\strut
+\end{minipage} & \begin{minipage}[b]{0.22\columnwidth}\raggedright
+Durée (secondes)\strut
+\end{minipage} & \begin{minipage}[b]{0.22\columnwidth}\raggedright
+Écart entre les mesures (± secondes)\strut
+\end{minipage} & \begin{minipage}[b]{0.22\columnwidth}\raggedright
+Nombre de mesures\strut
+\end{minipage}\tabularnewline
+\midrule
+\endfirsthead
+\toprule
+\begin{minipage}[b]{0.22\columnwidth}\raggedright
+Protocole\strut
+\end{minipage} & \begin{minipage}[b]{0.22\columnwidth}\raggedright
+Durée (secondes)\strut
+\end{minipage} & \begin{minipage}[b]{0.22\columnwidth}\raggedright
+Écart entre les mesures (± secondes)\strut
+\end{minipage} & \begin{minipage}[b]{0.22\columnwidth}\raggedright
+Nombre de mesures\strut
+\end{minipage}\tabularnewline
+\midrule
+\endhead
+\begin{minipage}[t]{0.22\columnwidth}\raggedright
+SCP\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+119.8094\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+0.0182\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+4\strut
+\end{minipage}\tabularnewline
+\begin{minipage}[t]{0.22\columnwidth}\raggedright
+HTTP\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+119.871\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+0.235\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+4\strut
+\end{minipage}\tabularnewline
+\begin{minipage}[t]{0.22\columnwidth}\raggedright
+FTP\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+120.151\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+0.213\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+4\strut
+\end{minipage}\tabularnewline
+\begin{minipage}[t]{0.22\columnwidth}\raggedright
+NFS\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+120.417\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+0.119\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+4\strut
+\end{minipage}\tabularnewline
+\begin{minipage}[t]{0.22\columnwidth}\raggedright
+SMB\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+122.565\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+0.215\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+4\strut
+\end{minipage}\tabularnewline
+\begin{minipage}[t]{0.22\columnwidth}\raggedright
+IPFS\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+447\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+0\strut
+\end{minipage} & \begin{minipage}[t]{0.22\columnwidth}\raggedright
+1\strut
+\end{minipage}\tabularnewline
+\bottomrule
+\end{longtable}
+
+\begin{figure}
+\centering
+\includegraphics{charts/chart_protocols.svg}
+\caption{Graphique des mesures de la durée de la copie d'un fichier avec
+différents protocoles\label{chart_protocols}}
+\end{figure}
+
+\clearpage
+
+\hypertarget{ruxe9duction-de-la-taille-des-images}{%
+\section{Réduction de la taille des
+images}\label{ruxe9duction-de-la-taille-des-images}}
+
+Dans le système initial, une image prend beaucoup de place. Chaque image
+est une copie exacte des partitions d'un système effectuée avec l'outil
+\texttt{dd}, qui est ensuite compressée avec \texttt{gzip}. Cette taille
+massive a plusieurs impacts négatifs:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\tightlist
+\item
+  Ralentissement de la vitesse de déploiement: il y a plus de données à
+  transmettre à travers le réseau et à copier sur le disque à chaque
+  déploiement.
+\item
+  Réduction du nombre d'images pouvant être mise en cache en même temps.
+\item
+  Réduction du nombre d'images pouvant être stockées sur le serveur.
+\end{enumerate}
+
+L'outil \emph{Clonezilla} a été considéré pour créer des images de
+taille plus réduites. Les images clonezilla sont créées avec l'outil
+\emph{Partclone}. Cet outil utilise une approche différente de
+\texttt{dd}: seuls les blocs utilisés sur les partitions sont copiés
+dans le fichier de l'image et seuls les blocs utilisés sont ensuite
+restaurés. Les images contentant uniquement les blocs utilisés sont
+ensuite compressées avec \texttt{gzip}.
+
+La taille des images créées avec clonezilla a été comparée à la taille
+des images déployées et à la taille des images juste compressées avec
+\texttt{gzip}, avec trois images:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\tightlist
+\item
+  Une petite image du système \emph{Debian}, comparée dans le tableau
+  \ref{table_image_sizes_debian} et la figure
+  \ref{chart_image_sizes_debian}
+\item
+  Une image moyenne du système \emph{Xubuntu}, comparée dans le tableau
+  \ref{table_image_sizes_xubuntu} et la figure
+  \ref{chart_image_sizes_xubuntu}
+\item
+  Une grande image du système \emph{Windows 10}, comparée dans le
+  tableau \ref{table_image_sizes_win10} et la figure
+  \ref{chart_image_sizes_win10}
+\end{enumerate}
+
+\clearpage
+
+\begin{longtable}[]{@{}ll@{}}
+\caption{Table des tailles d'une petite image \emph{Debian} dans
+plusieurs formats \label{table_image_sizes_debian}}\tabularnewline
+\toprule
+Type & Taille (GB)\tabularnewline
+\midrule
+\endfirsthead
+\toprule
+Type & Taille (GB)\tabularnewline
+\midrule
+\endhead
+Déployé & 3.220176384\tabularnewline
+Gzip & 0.496763976\tabularnewline
+Clonezilla & 0.29615293\tabularnewline
+\bottomrule
+\end{longtable}
+
+\begin{figure}
+\centering
+\includegraphics{charts/chart_image_sizes_debian.svg}
+\caption{Graphique des tailles d'une petite image \emph{Debian} dans
+plusieurs formats\label{chart_image_sizes_debian}}
+\end{figure}
+
+\clearpage
+
+\begin{longtable}[]{@{}ll@{}}
+\caption{Table des tailles d'une image \emph{Xubuntu} moyenne dans
+plusieurs formats \label{table_image_sizes_xubuntu}}\tabularnewline
+\toprule
+Type & Taille (GB)\tabularnewline
+\midrule
+\endfirsthead
+\toprule
+Type & Taille (GB)\tabularnewline
+\midrule
+\endhead
+Déployé & 200.511847936\tabularnewline
+Gzip & 2.031040094\tabularnewline
+Clonezilla & 1.840064982\tabularnewline
+\bottomrule
+\end{longtable}
+
+\begin{figure}
+\centering
+\includegraphics{charts/chart_image_sizes_xubuntu.svg}
+\caption{Graphique des tailles d'une image \emph{Xubuntu} moyenne dans
+plusieurs formats\label{chart_image_sizes_xubuntu}}
+\end{figure}
+
+\clearpage
+
+\begin{longtable}[]{@{}ll@{}}
+\caption{Table des tailles d'une grande image \emph{Windows 10} dans
+plusieurs formats \label{table_image_sizes_win10}}\tabularnewline
+\toprule
+Type & Taille (GB)\tabularnewline
+\midrule
+\endfirsthead
+\toprule
+Type & Taille (GB)\tabularnewline
+\midrule
+\endhead
+Déployé & 512.09515776\tabularnewline
+Gzip & 31.9568621077\tabularnewline
+Clonezilla & 12.855020882\tabularnewline
+\bottomrule
+\end{longtable}
+
+\begin{figure}
+\centering
+\includegraphics{charts/chart_image_sizes_win10.svg}
+\caption{Graphique des tailles d'une grande image \emph{Windows 10} dans
+plusieurs formats\label{chart_image_sizes_win10}}
+\end{figure}
+
+On peut voir que les images créées avec \emph{Clonezilla} prennent
+environ la moitié de la taille des images simplement compressées avec
+\texttt{gzip}. Les résultats de ces mesures de tailles ont donc motivé
+la modification du système de déploiement pour que des images
+\emph{Clonezilla} puissent être utilisées.
+
+\hypertarget{amuxe9lioration-de-los-de-duxe9ploiement}{%
+\section{Amélioration de l'OS de
+déploiement}\label{amuxe9lioration-de-los-de-duxe9ploiement}}
+
+\hypertarget{buildroot-loutil-de-construction-de-los-de-duxe9ploiement-initial}{%
+\subsection{\texorpdfstring{\emph{Buildroot}: l'outil de construction de
+l'\protect\hyperlink{acronym__OS}{OS} de déploiement
+initial}{Buildroot: l'outil de construction de l'OS de déploiement initial}}\label{buildroot-loutil-de-construction-de-los-de-duxe9ploiement-initial}}
+
+L'image du système d'exploitation \emph{Linux} servant à l'exécution des
+scripts de déploiement dans le système initial est construit avec
+\emph{Buildroot}. Cet outil permet de générer compiler un noyau linux,
+de créer un système de fichier racine minimal et de générer un chargeur
+d'amorçage (\emph{bootloader}). Cet outil est principalement utilisé
+pour générer des systèmes embarqués. Il avait été choisi dans le système
+initial car il permettait de créer une image
+d'\protect\hyperlink{acronym__OS}{OS} très petite qui peut être
+téléchargée très rapidement sur le réseau.
+
+\hypertarget{probluxe8mes-avec_buildroot_-pour-construire-los-de-duxe9ploiement}{%
+\subsection{\texorpdfstring{Problèmes avec\_Buildroot\_ pour construire
+l'\protect\hyperlink{acronym__OS}{OS} de
+déploiement}{Problèmes avec\_Buildroot\_ pour construire l'OS de déploiement}}\label{probluxe8mes-avec_buildroot_-pour-construire-los-de-duxe9ploiement}}
+
+Buildroot permet d'installer facilement les paquets de nombreuses
+applications dans le système de fichiers de l'image. Malheureusement,
+aucun paquet n'existe pour \emph{Clonezilla}. L'idée de créer un paquet
+pour ce logiciel a été étudiée, mais n'a pas été retenue, car il
+nécessite de nombreuses dépendances, et bien que cela aurait été
+possible de le faire, le temps à investir dans cette tâche aurait été
+considérable, et le résultat n'aurait été testable qu'une fois cette
+tâche accomplie. De plus, pour chaque mise à jour de \emph{Clonezilla}
+que l'on souhaiterait utiliser, par exemple pour profiter de
+l'implémentation d'un nouveau système de fichier ou des résolutions de
+bugs, il faudrait remettre à jour ce paquet.
+
+\hypertarget{choix-de-debian-pour-remplauxe7er-buildroot}{%
+\subsection{\texorpdfstring{Choix de \emph{Debian} pour remplaçer
+\emph{Buildroot}}{Choix de Debian pour remplaçer Buildroot}}\label{choix-de-debian-pour-remplauxe7er-buildroot}}
+
+Pour simplifier l'utilisation de \emph{Clonezilla} et de nombreux autres
+outils, le passsage à une solution alternative à \emph{Buildroot} a été
+décidé. De nombreuses distributions Linux proposent des paquets pour
+\emph{Clonezilla}. Les plus intéressantes sont \emph{Debian} et
+\emph{Ubuntu} car l'équipe de \emph{Clonezilla} les utilise pour la
+version \emph{live-CD} de l'outil. Ils développent et distribuent
+eux-mêmes des paquets au format \texttt{deb} pour ces deux
+distributions. Un travail a donc été entrepris pour remplacer
+l'\protect\hyperlink{acronym__OS}{OS} de déploiement basé sur
+\emph{Buildroot} par un \protect\hyperlink{acronym__OS}{OS} basé sur
+\emph{Debian}. Ce choix permettra d'utiliser facilement les nombreux
+paquets disponibles pour cette distribution si il y en a besoin dans les
+versions futures du système de déploiement.
+
+Le problème avec l'utilisation d'une distribution telle que
+\emph{Debian} est que la taille du système de fichiers racine n'est pas
+aussi réduite que ce que l'on peut obtenir avec \emph{Buildroot}. La
+stratégie d'exécution du système d'exploitation a donc été modifiée pour
+tenir compte de ce changement de taille. Le système initial chargeait à
+chaque fois une image entière du système de fichiers racine (environ
+100MB) en mémoire. Sur le nouveau système, seul le noyau linux est
+téléchargé, ainsi que l'image \emph{initrd}. Le sytème de fichier racine
+est monté à partir d'un partage \protect\hyperlink{acronym__NFS}{NFS}.
+Cela permet d'avoir un système de fichiers racine contenant beaucoup
+plus de données, mais de ne télécharger à travers le réseau que ceux qui
+sont utilisés, au moment où ils sont utilisés.
+
+\hypertarget{cruxe9ation-du-systuxe8me-de-fichiers-racine-debian-avec-multistrap}{%
+\subsection{\texorpdfstring{Création du système de fichiers racine
+\emph{Debian} avec
+\emph{multistrap}}{Création du système de fichiers racine Debian avec multistrap}}\label{cruxe9ation-du-systuxe8me-de-fichiers-racine-debian-avec-multistrap}}
+
+Le système de fichiers racine accessible via un partage
+\protect\hyperlink{acronym__NFS}{NFS} est créé en utilisant l'outil
+\emph{multistrap} fourni par Debian. Cet outil permet de générer un
+système de fichiers racine pour une architecture donnée, et d'y
+installer une liste de paquets choisie. Une fois le sytème de fichiers
+racine créé, certains fichiers de configurations doivent sont créés
+manuellement:
+
+\begin{itemize}
+\tightlist
+\item
+  \texttt{/etc/hostname}: le nom d'hôte de la machine. Dans notre cas,
+  la valeur \texttt{bootiful-deployer} a été entrée.
+\item
+  \texttt{/etc/hosts}: la liste des hôtes connus. Dans notre cas, une
+  seule entrée est nécessaire: \texttt{127.0.0.1\ \ localhost}
+\item
+  \texttt{/etc/fstab}: la liste de systèmes de fichiers à monter au
+  démarrage. Pour palier au fait que le système de fichiers racine sera
+  en lecture seule, plusieurs dossiers ont été montés en \texttt{tmpfs}
+  (système de fichier temporaire chargé en mémoire) afin de permettre
+  aux processus du système d'y écrire des fichiers: \texttt{/tmp},
+  \texttt{/dev}, \texttt{/var/run}, \texttt{/var/lock},
+  \texttt{/var/tmp}, \texttt{/var/log}, \texttt{/var/lib/clonezilla},
+  \texttt{/bootiful}
+\item
+  \texttt{/etc/mtab}: ce fichier contient la liste des volumes
+  actuellement montés. Au début, il n'avait pas été créé et cela causait
+  une erreur fatale dans \emph{Partclone}, qui n'arrivait pas à détecter
+  si une partition était montée ou non. Cela a été résolu en créant ce
+  fichier comme un lien symbolique vers le fichier \texttt{/proc/mounts}
+  qui est un faux fichier généré en mémoire par le noyau \emph{Linux} et
+  qui contient la liste des points des volumes actuellement montés.
+\end{itemize}
+
+Quelques autres fichiers sont rajoutés/remplacés dans le système de
+fichiers racine:
+
+\begin{itemize}
+\tightlist
+\item
+  \texttt{/etc/initramfs.conf}: configuration pour générer une image
+  \emph{initramfs} qui va initialiser montage du système de fichiers
+  racine depuis un partage NFS
+\item
+  \texttt{/etc/systemd/system/bootiful-deploy-log.service}:
+  configuration d'unité \emph{Systemd} qui permet de lancer le script
+  d'initialisation du déploiement d'images au démarrage
+\item
+  \texttt{/usr/bin/bootiful-deploy-init}: script d'initialisation du
+  déploiement d'images. Lance le script de déploiement d'images et
+  affiche permet de choisir quelle action effectuer si le déploiement ne
+  se termine pas avec succès.
+\item
+  \texttt{/usr/bin/bootiful-common}: script contenant des fonctions
+  communes aux différents script de déploiement \texttt{bootiful-*}. Il
+  n'est pas conçu pour être exécuté directement, mais à être chargé par
+  les autres scripts avec la commande \texttt{source}.
+\item
+  \texttt{/usr/bin/bootiful-deploy}: script permettant le choix de
+  l'image, des configurations (si applicable), et d'effectuer le
+  déploiement de l'image choisie.
+\item
+  \texttt{/usr/bin/bootiful-save-image}: script utilitaire permettant de
+  construire une image avec \emph{dd}. Il a été utilisé pour construire
+  les images des benchmarks, mais il vaut mieux utiliser le live-cd
+  \emph{Clonezilla} pour la création d'une nouvelle image.
+\item
+  \texttt{/usr/bin/bootiful-reset-cache}: script utilitaire permettant
+  de réinitialiser le cache des images. Il a été utilisé pour pouvoir
+  facilement réinitialiser le cache lors des benchmarks.
+\end{itemize}
+
+Ensuite, la commande \texttt{chroot} est utilisée pour remplacer
+temporairement le système de fichier racine actuel de la machine (celle
+qui a lancé \emph{multistrap}) par celui qui vient d'être créé.
+Plusieurs commandes sont lancées dans cet environnement pour initialiser
+le système:
+
+\begin{enumerate}
+\def\labelenumi{\arabic{enumi}.}
+\tightlist
+\item
+  \texttt{dpkg\ -\/-configure\ -a}: lance la configuration
+  post-installation de tous les paquets \emph{Debian}.
+\item
+  \texttt{apt-get\ autoremove\ -\/-purge\ \&\&\ apt-get\ clean}:
+  désinstalle les dépendances inutiles et vide le cache des paquets.
+\item
+  \texttt{update-initramfs\ -u}: regénère une image \emph{initramfs} qui
+  va initialiser montage du système de fichiers racine depuis un partage
+  NFS en utilisant la configuration rajoutée précédemment dans
+  \texttt{/etc/initramfs.conf}.
+\item
+  \texttt{systemctl\ enable\ bootiful-deploy-log.service}: active
+  l'unité \emph{Systemd} de lancement automatique du script de
+  déploiement décrite dans le fichier
+  \texttt{/etc/systemd/system/bootiful-deploy-log.service} ajouté
+  précédemment.
+\end{enumerate}
+
+\hypertarget{automatisation-de-la-cruxe9ation-du-systuxe8me-de-duxe9ploiement-avec-docker}{%
+\subsection{\texorpdfstring{Automatisation de la création du système de
+déploiement avec
+\emph{Docker}}{Automatisation de la création du système de déploiement avec Docker}}\label{automatisation-de-la-cruxe9ation-du-systuxe8me-de-duxe9ploiement-avec-docker}}
+
+Pour utiliser l'outil \emph{multistrap} afin de créer un système de
+fichier racine \emph{Debian}, il faut que le programme
+\texttt{multistrap} soit lancé depuis un système d'exploitation
+\emph{Debian}. Pour rendre la création de ce système de fichiers
+possible depuis d'autres distributions Linux, un conteneur \emph{Docker}
+a été créé.
+
+Le processus de création du système décrit dans la section précédente a
+été automatisé et est décrit dans un fichier \texttt{Dockerfile}. La
+nouvelle fonctionnalité de Docker de construction en plusieurs
+``étages'' (\emph{multi-stage build}) a été utilisée. Trois ``étages''
+sont définis:
+
+\begin{itemize}
+\tightlist
+\item
+  \texttt{build-stage}: depuis une image \texttt{debian:bullseye}
+  construit une image de système de fichier racine \emph{Debian} et le
+  configure comme décrit dans la section précédente. Le dossier
+  \texttt{/boot/} est sorti du dossier du système de fichiers racine
+  nouvellement créé et déplacé dans \texttt{/multistrap/boot}. Le reste
+  du système de fichier racine (tout sauf \texttt{/boot/} est compressé
+  dans une archive \texttt{/multistrap/nfsroot.tar.gz}. Cette étape est
+  un pré-requis des étapes suivantes et n'est normalement pas exécutée
+  directement.
+\item
+  \texttt{nfs-export-stage}: dans une image vide
+  (\texttt{FROM\ scratch}), copie le fichier
+  \texttt{/multistrap/nfsroot.tar.gz} depuis l'étape
+  \texttt{build-stage}. L'image de cette étape contient donc uniquement
+  un fichier à sa racine, \texttt{nfsroot.tar.gz}, qui pourra être
+  exporté et extrait dans le serveur
+  \protect\hyperlink{acronym__NFS}{NFS} pour être partagé.
+\item
+  \texttt{tftp-export-stage}: dans une image vide
+  (\texttt{FROM\ scratch}), copie le contenu du dossier
+  \texttt{/multistrap/boot} depuis l'étape \texttt{build-stage}. L'image
+  de cette étape contient donc uniquement le contenu de la du dossier
+  \texttt{/boot/} de la partition racine, c'est à dire les fichiers
+  \texttt{initrd.img} (image \emph{initrd} initialisant le système de
+  fichier racine depuis \protect\hyperlink{acronym__NFS}{NFS}) et
+  \texttt{vmlinuz} (le noyau \emph{Linux}). Le contenu de cette image
+  pourra être exporté dans le dossier partagé du serveur
+  \protect\hyperlink{acronym__TFTP}{TFTP}, afin d'être téléchargé depuis
+  le logiciel d'amorçage \protect\hyperlink{acronym__GRUB}{GRUB} pour
+  lancer le système de déploiement.
+\end{itemize}
+
+Le fichier \texttt{Makefile} à la racine du projet définit des cibles et
+des recettes pour exécuter \texttt{docker\ build} exporter les données
+des deux derniers étages dans leurs dossiers respectifs:
+
+\begin{itemize}
+\tightlist
+\item
+  le contenu de l'étage \texttt{nfs-export-stage}, c'est à dire
+  l'archive \texttt{nfsroot.tar.gz}, est exportée dans le dossier
+  \texttt{nfs/}. Elle sera extraite dans le serveur
+  \protect\hyperlink{acronym__NFS}{NFS}.
+\item
+  le contenu de l'étage \texttt{tftp-export-stage}, c'est à dire
+  \texttt{initrd.img} et \texttt{vmlinuz} sont exportés dans le dossier
+  \texttt{tftp/tftpboot/boot/deployer} qui contient le système de
+  déploiement d'image servi par le serveur
+  \protect\hyperlink{acronym__TFTP}{TFTP}.
+\end{itemize}
+
+\hypertarget{ruxe9duction-du-temps-de-duxe9ploiement-total}{%
+\section{Réduction du temps de déploiement
+total}\label{ruxe9duction-du-temps-de-duxe9ploiement-total}}
+
+\textbf{TODO: expliquer, détailler et comparer (tableaux, diagrammes)
+les différentes mesures qui ont montré que clonezilla est intéressant
+les images larges mais que dd est parfois plus performant pour de
+petites images.}
+
+\hypertarget{duxe9ploiement-dimage-windows}{%
+\section{Déploiement d'image
+Windows}\label{duxe9ploiement-dimage-windows}}
+
+\hypertarget{amuxe9lioration-des-scripts-de-duxe9ploiement}{%
+\section{Amélioration des scripts de
+déploiement}\label{amuxe9lioration-des-scripts-de-duxe9ploiement}}
+
+\textbf{TODO: Expliquer les problèmes rencontrés avec les scripts de
+déploiement initiaux et les nombreuses améliorations apportées par leur
+ré-écriture\\
+quasi-complète (gestion des erreurs, stack traces, amélioration des
+logs, gestion des images plus grandes que le cache, mesure des timings,
+scripts utilitaires de maintenance, possibilité d'utiliser clonezilla,
+détection du point d'entrée EFI).}
+
+\hypertarget{personnalisation-dimages-post-duxe9ploiement}{%
+\section{Personnalisation d'images
+post-déploiement}\label{personnalisation-dimages-post-duxe9ploiement}}
+
+\textbf{TODO: expliquer pourquoi Ansible a été choisi pour cette tache,
+et des avantages que cela apporte de pouvoir customiser une image
+post-déploiement plutôt que d'avoir une multitude d'images pour chaque
+personnalisation (simplicité de création de playbook plutot que la
+création d'une image complète, possiblité de réutiliser les mêmes
+playbooks sur plusieurs images similaires, réutilisation d'images).}
+
+\hypertarget{architecture-finale-du-projet}{%
+\chapter{Architecture finale du
+projet}\label{architecture-finale-du-projet}}
+
+\hypertarget{composants}{%
+\section{Composants}\label{composants}}
+
+\textbf{TODO: diagramme des composants du projet et description}
+
+\hypertarget{processus-de-duxe9ploiement}{%
+\section{Processus de déploiement}\label{processus-de-duxe9ploiement}}
+
+\textbf{TODO: diagramme du processus de déploiement et description
+complète de ce dernier. Explication détaillées de la structure des
+scripts de déploiement, de leurs possibilités et de leurs limitations.}
+
+\hypertarget{architecture-ruxe9seau}{%
+\section{Architecture réseau}\label{architecture-ruxe9seau}}
+
+\textbf{TODO: description de l'architecture réseau finale utilisée pour
+développer et tester le système avec diagramme. Expliquer comment cette
+architecture de test peut être transposée à une architecture de
+production.}
+
+\hypertarget{processus-de-build}{%
+\section{Processus de build}\label{processus-de-build}}
+
+\textbf{TODO: expliquer comment sont construites les différentes parties
+du projet. Expliquer les différentes parties du makefile et les
+différentes images docker utilisées pour construire les différents
+composants.}
+
+\hypertarget{duxe9ploiement-du-serveur}{%
+\section{Déploiement du serveur}\label{duxe9ploiement-du-serveur}}
+
+\textbf{TODO: expliquer comment le serveur peut fonctionner à l'aide
+d'un \texttt{docker-compose} réunissant les serveurs TFTP, NFS et DHCP.
+Expliquer comment ces différentes parties sont utilisés dans un
+environnement de développement, les limitations, et comment adapter
+cette configuration à un environnement de production.}
+
+\hypertarget{structure-des-images}{%
+\section{Structure des images}\label{structure-des-images}}
+
+\textbf{TODO: expliquer exactement comment sont structurées les données
+des images (raw et clonezilla).}
+
+\hypertarget{systuxe8me-de-personnalisation-des-images}{%
+\section{Système de personnalisation des
+images}\label{systuxe8me-de-personnalisation-des-images}}
+
+\textbf{TODO: expliquer en détails comment fonctionne le système de
+personnalisation des images, ce qui est nécéssaire sur le client et ce
+qui est nécessaire sur le serveur}
+
+\hypertarget{utilisation-du-systuxe8me-duxe9ployuxe9}{%
+\chapter{Utilisation du système
+déployé}\label{utilisation-du-systuxe8me-duxe9ployuxe9}}
+
+\hypertarget{duxe9ployer-une-image-sur-un-poste}{%
+\section{Déployer une image sur un
+poste}\label{duxe9ployer-une-image-sur-un-poste}}
+
+\textbf{TODO: expliquer pas à pas comment utiliser l'interface pour
+déployer une image sur un client et les différentes inter-actions de
+l'utilisateur, avec des captures d'écran, etc.}
+
+\hypertarget{cruxe9ation-dune-image-clonezilla}{%
+\section{Création d'une image
+clonezilla}\label{cruxe9ation-dune-image-clonezilla}}
+
+\textbf{TODO: expliquer pas à pas comment créer une image avec
+clonezilla et comment l'ajouter au serveur de déploiement.}
+
+\hypertarget{cruxe9ation-dune-image-dd}{%
+\section{Création d'une image dd}\label{cruxe9ation-dune-image-dd}}
+
+\textbf{TODO: expliquer pas à pas comment créer une image avec
+clonezilla et comment l'ajouter au serveur de déploiement.}
+
+\hypertarget{pruxe9paration-dune-image-pour-quelle-supporte-le-systuxe8me-de-personnalisation}{%
+\section{Préparation d'une image pour qu'elle supporte le système de
+personnalisation}\label{pruxe9paration-dune-image-pour-quelle-supporte-le-systuxe8me-de-personnalisation}}
+
+\textbf{TODO: expliquer comment préparer un système pour qu'il supporte
+le système de personnalisation avec ansible, et comment créer les
+scripts de personnalisation, avec un exemple type simple.}
+
+\hypertarget{conclusion}{%
+\chapter{Conclusion}\label{conclusion}}
+
+\hypertarget{synthuxe8se-du-travail-effectuuxe9}{%
+\subsection{Synthèse du travail
+effectué}\label{synthuxe8se-du-travail-effectuuxe9}}
+
+\hypertarget{points-damuxe9lioration}{%
+\subsection{Points d'amélioration}\label{points-damuxe9lioration}}
+
+\hypertarget{retour-personnel-sur-la-maniuxe8re-dont-le-travail-sest-effectuuxe9}{%
+\subsection{Retour personnel sur la manière dont le travail s'est
+effectué}\label{retour-personnel-sur-la-maniuxe8re-dont-le-travail-sest-effectuuxe9}}
+
+\backmatter
+\end{document}
diff --git a/doc/templates/default.latex b/doc/templates/default.latex
index 4ceca434c64c66fd8f37379cc24bf7b71767d8d3..a59da0d1d2e6604fba9d57eed38ef5019ccc7478 100644
--- a/doc/templates/default.latex
+++ b/doc/templates/default.latex
@@ -401,21 +401,59 @@ $endif$
 $endif$
 
 \begin{document}
-$if(has-frontmatter)$
-\frontmatter
-$endif$
-$if(title)$
-$if(beamer)$
-\frame{\titlepage}
-$else$
-\maketitle
-$endif$
-$if(abstract)$
-\begin{abstract}
-$abstract$
-\end{abstract}
-$endif$
-$endif$
+% Nom conformes des tables
+\renewcommand*\listfigurename{Liste des illustrations}
+\renewcommand*\listtablename{Liste des tableaux}
+% Sets the page numbering style to roman
+%\pagestyle{headings}
+\setcounter{page}{1}
+\pagenumbering{roman}
+
+% Hides the page number for the cover page
+\thispagestyle{empty}
+% Hides the header for the cover page
+% Cover page
+\begin{figure}
+    \begin{sffamily}
+        \begin{minipage}{.4\textwidth}
+            \centering
+            \hspace*{-3cm}\includegraphics[height=1.25cm]{images/logo_hepia.pdf}
+        \end{minipage}\qquad
+        \begin{minipage}{.4\textwidth}
+            \centering
+            \hspace*{5cm}\includegraphics[height=1.25cm]{images/logo-hesso-geneve.pdf}
+        \end{minipage}
+    \end{sffamily}
+\end{figure}
+
+\begin{center}
+    \huge{$title$}\\
+    \vspace{.5cm}
+    \IfFileExists{images/front-logo.png}{
+      \includegraphics[width=8cm,height=5cm]{images/front-logo.png}\\
+    }{
+      \vspace{5cm}
+    }
+
+    \vspace{5mm}
+    \large{Thèse de Bachelor présentée par}\\
+    \vspace{5mm}
+    \textbf{\Large{$author$}}\\
+    \vspace{5mm}
+
+    \large{pour l’obtention du titre Bachelor of Science HES-SO en}\\
+    \vspace{5mm}
+    \textbf{\Large{Ingénierie des technologies de l’information avec orientation en \\$orientation$}}
+
+    \vspace{5mm}
+    \textbf{$date$\\}
+    \vspace{5mm}
+    \begin{tabular}{ p{6cm} }
+      \multicolumn{1}{c}{Professeur-e HES responsable}\\
+      \multicolumn{1}{c}{\textbf{$advisor$}}\\
+    \end{tabular}
+\end{center}
+
 
 $for(include-before)$
 $include-before$