Compare commits

3 Commits

Author SHA1 Message Date
Amaury JOLY
18448b481e fix du devcontainer 2026-03-02 12:22:40 +00:00
Amaury JOLY
94b22408e5 Install party 2026-03-02 12:22:15 +00:00
Amaury JOLY
8f51a7eed6 je rajoute un mecanisme de detection d'equivocation 2026-02-23 15:01:43 +01:00
10 changed files with 324 additions and 19 deletions

View File

@@ -6,7 +6,7 @@
"containerEnv": { //Add your build arguments here
"DEBIAN_FRONTEND": "noninteractive"
},
"runArgs": ["--net=host"], //Add you docker run arguments here
// "runArgs": ["--net=host"], //Add you docker run arguments here
"updateContentCommand": ".devcontainer/install-tools.sh", //Path to the installation script run inside the DevContainer
// "customizations": {
// //Add your customizations here

View File

@@ -181,9 +181,11 @@ Each process $p_i$ maintains the following local variables:
$\received \gets \emptyset$\;
$\delivered \gets \emptyset$\;
$\prop[r][j] \gets \bot, \forall r, j$\;
$W[r] \gets \bot, \forall r$\;
$W[r] \gets \bot, \forall r$; this is the set of the winners for the round $r$\\
$B[r] \gets \bot, \forall r$; this is the set of processes who have bahaved maliciously for round $r$\\
$\resolved[r] \gets \bot, \forall r$\;
$Y[j]$ a Set of $n$ $\BFTDL$\;
$Y$ a $\BFTDL$ such that the value space is $\mathcal{R} \times \Pi$\;
$V$ a $\BFTDL$ such that the value space is $(\mathcal{R} \times \mathcal{M} \times \Pi)$\;
\end{algorithm}
\LinesNumbered
@@ -203,59 +205,71 @@ Each process $p_i$ maintains the following local variables:
% \Statex \textbf{Proposer Job}
\Fn{Propose($\bot$)}{
$r \gets \texttt{last\_commited}$\;
\While{$S \neq \emptyset$ with $S \gets \received \setminus (\delivered \cup (\bigcup_{r' < r} \bigcup_{j \in W[r']} \prop[r'][j]))$}{
\While{$S \neq \emptyset$ with $S \gets \received \setminus (\delivered \cup (\bigcup_{r' < r} \bigcup_{\substack{(j,S')\in W[r']\\ j\notin B[r']\\ S' \in \prop[r'][j]}} S'))$}{
% \Comment{PROP PHASE}\;
\tcc*[f]{PROP PHASE}\\
$\RBcast(i, \texttt{PROP}, S, \current)$\;
\textbf{wait} until $|\{j: |\{k: (k, \PROVEtrace(r)) \in Y[j].\BFTREAD()\}| \geq t+1\}| \geq n - f$\;
$V.\BFTPROVE((r, S, i))$\;
$\RBcast(i, \texttt{PROP}, S, r)$\;
\textbf{wait} until $|\{j: \exists S, |\{k: (k,(r, S, j)) \in V.\BFTREAD()\}| \geq t+1\}| \geq n - t$\;
% \Comment{COMMIT PHASE}
\tcc*[f]{COMMIT PHASE}\\
\textbf{for each} $j \in \Pi$ \textbf{do} $Y[j].\BFTAPPEND(r)$
\For{\textbf{each} $j \in \Pi$}{
% $Y[j].\BFTAPPEND(r)$\;
$V.\BFTAPPEND((r, S, j))$\;
$Y.\BFTAPPEND((r, j))$\;
}
$\RBcast(i, \texttt{COMMIT}, r)$\;
\textbf{wait} until $|\resolved[r]| \geq n - f$\;
\textbf{wait} until $|\resolved[r]| \geq n - t$\;
% \Comment*{X PHASE}
\tcc*[f]{X PHASE}\\
$W[r] \gets \{j: |\{k: (k, \PROVEtrace(r)) \in Y[j].\BFTREAD()\}| \geq t+1\}$\;
% \tcc*[f]{X PHASE}\\
\BlankLine
$W[r] \gets \{(j, S): |\{k: (k, (r, S, j)) \in V.\BFTREAD()\}| \geq t+1\}$\;
$B[r] \gets \{j: |\{k: (k, (r, j)) \in Y.\BFTREAD()\}| \geq t+1\}$\;
$r \gets r + 1$\;
}
$\texttt{last\_commited} \gets r$\;
}
\end{algorithm}
% \renewcommand{\algletter}{C}
\begin{algorithm}[H]
\caption{$\ABdeliver()$ at process $p_i$}\label{alg:deliver-bft}
\SetAlgoLined
\Fn{ADeliver($\bot$)}{
$r \gets \texttt{last\_delivered}$\;
\If{$|\resolved[r]| < n - f$}{
\If{$|\resolved[r]| < n - t$}{
\Return{$\bot$}
}
$W[r] \gets \{j: |\{k: (k, \PROVEtrace(r)) \in Y[j].\BFTREAD()\}| \geq t+1\}$\;
\If{$\exists j \in W[r],\ \prop[r][j] = \bot$}{
$W \gets \{(j, S): |\{k: (k, (r, S, j)) \in V.\BFTREAD()\}| \geq t+1\}$\;
$B \gets \{j: |\{k: (k, (r, j)) \in Y.\BFTREAD()\}| \geq t+1\}$\;
\If{$\exists (j, S) \in W, j \notin B, S \notin \prop[r][j]$}{
\Return{$\bot$}
}
$M \gets \bigcup_{j \in W[r]} \prop[r][j]$\;\nllabel{code:Mcompute}
\BlankLine
$M \gets \bigcup_{\substack{(j,S)\in W\\ j\notin B\\ S \in prop[r][j]}} S$\;\nllabel{code:Mcompute}
$m \gets \ordered(M \setminus \delivered)[0]$\;
% \Comment*{Set $m$ as the smaller message not already delivered}
$\delivered \leftarrow \delivered \cup \{m\}$\;
\If{$M \setminus \delivered = \emptyset$}{
$\texttt{last\_delivered} \gets \texttt{last\_delivered} + 1$\;
}
% \Comment*{Check if all messages from round $r$ have been delivered}
\Return{$m$}
}
\end{algorithm}
% \renewcommand{\algletter}{D}
\begin{algorithm}[H]
\caption{RB handler at process $p_i$}\label{alg:rb-handler-bft}
\SetAlgoLined
\Upon{$Rdeliver(j, \texttt{PROP}, S, r)$}{
$\received \gets \received \cup \{S\}$\;
$\prop[r][j] \gets S$\;
$Y[j].\BFTPROVE(r)$\;
\uIf{$\prop[r][j] = \bot \vee (\{S' : (j, (r, S', j)) \in V.\BFTREAD()\} = \{S\})$}{
$V.\BFTPROVE((r, S, j))$\;
}
\Else{
$Y.\BFTPROVE((r, j))$\;
}
$\prop[r][j] \gets \prop[r][j] \cup S$\;
Propose()\;
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

View File

@@ -0,0 +1,291 @@
\documentclass[aspectratio=43,10pt]{beamer}
\usetheme{Madrid}
\usecolortheme{default}
\usefonttheme{professionalfonts}
\setbeamertemplate{navigation symbols}{}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage{microtype}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,calc,arrows.meta}
\title{}
\subtitle{}
\author{}
\institute{}
\date{}
\begin{document}
\begin{frame}{Install Party Linux}
\framesubtitle{Luminy - 18 fevrier 2026}
\centering
\includegraphics[width=\linewidth,height=0.34\textheight,keepaspectratio]{imgs/logo-6011e.png}
\end{frame}
\begin{frame}{Architecture d'un système d'exploitation}
Un OS c'est :
\begin{itemize}
\item Un Noyau (Kernel) : Ordonnancement, gestion de la mémoire, intéraction entre les composants physiques.
\item Des Bibliothèques (Drivers) : UN driver est UNE interface avec un composant physique. (Carte Graphique, carte réseau, imprimante, \dots)
\item Une Interface Graphique : Comment sont agenceés et gérées les fenetres
\item Des Application : Les logiciels à utiliser
\end{itemize}
\end{frame}
\begin{frame}{Architecture d'un système d'exploitation}
Un OS c'est :
\vspace{1em}
\centering
\begin{tikzpicture}[
box/.style={draw, rounded corners, align=center, minimum width=6cm, minimum height=0.9cm},
arrow/.style={-{Latex[length=3mm,width=2mm]}, thick}
]
\pause
\node[box] at (0, 5) (Noyau) {Noyau \\ (XNU, Windows NT, Linux, BSD, \dots)};
\pause
\node[box] at (0, 4) (Drivers) {Drivers \\ (Carte Graphique, disques durs, carte réseau, \dots)};
\node[box, red] at (0, 3) (Drivers) {Materiel};
\pause
\node[box] at (0, 6) (GUI) {GUI \\ (DWM, Quartz Compositor + WindowServer, X11 + Gnome, Wayland + Swayne)};
\pause
\node[box] at (0, 7) (Apps) {Applications};
\end{tikzpicture}
\end{frame}
\begin{frame}{Architecture d'un système d'exploitation}
Dans le cas de Windows, une version de windows = un package Noyau/GUI/Drivers définit et immuable + quelques applications par defaut
\vspace{1em}
\centering
\begin{tikzpicture}[
box/.style={draw, rounded corners, align=center, minimum width=6cm, minimum height=0.9cm},
arrow/.style={-{Latex[length=3mm,width=2mm]}, thick}
]
\node[box] at (0, 5) (Noyau) {Noyau \\ Windows NT};
\node[box] at (0, 4) (Drivers) {Drivers};
\node[box] at (0, 3) (Drivers) {Materiel};
\node[box] at (0, 6) (GUI) {GUI \\ DWM};
\node[box] at (0, 7) (Apps) {Applications \\ Microsoft Edge, Outlook, Skype, \dots};
\end{tikzpicture}
\pause
\textcolor{red}{Une distribution Linux c'est pareil !} \\
\pause
Une distribution = un package Noyau/GUI/Drivers définit + quelques applications par defaut
\end{frame}
\begin{frame}{Allons un peu plus en détail - L'interface graphique}
D'un point de vue de "à quoi ca ressemble", une distribution linux peut jouer sur 3 facteurs :
\begin{itemize}
\item Le serveur d'affichage (Xorg ou Weston principalement)
\item Le gestionnaire de fenetres (flottant ou tiling)
\item L'interface graphique (Gnome, KDE)
\end{itemize}
\begin{center}
\resizebox{0.8\width}{!}{
\begin{tikzpicture}[
box/.style={draw, rounded corners, align=center, minimum width=6cm, minimum height=0.9cm},
arrow/.style={-{Latex[length=3mm,width=2mm]}, thick}
]
\node[box] at (0, 5) (Noyau) {Noyau \\ Linux};
\node[box] at (0, 4) (Drivers) {Drivers};
\node[box] at (0, 3) (Drivers) {Materiel};
\node[box] at (0, 6) (GUI) {Serveur d'affichage \\ Xorg, Weston};
\node[box] at (6, 6) (GUI) {Windows Manager \\ Compiz, KWin, Awesome, I3};
\node[box] at (0, 7) (GUI) {Interface Graphique \\ Gnome, KDE};
\node[box] at (0, 8) (Apps) {Applications};
\end{tikzpicture}
}
\end{center}
\end{frame}
\begin{frame}{Allons un peu plus en détail - L'interface graphique}
\begin{center}
\begin{minipage}{0.49\textwidth}
\centering
\includegraphics[width=\linewidth,height=0.34\textheight,keepaspectratio]{imgs/canonical.png}
\par\smallskip
\small GNOME
\end{minipage}
\hfill
\begin{minipage}{0.49\textwidth}
\centering
\includegraphics[width=\linewidth,height=0.34\textheight,keepaspectratio]{imgs/xfce.jpg}
\par\smallskip
\small Xfce
\end{minipage}
\vspace{4mm}
\begin{minipage}{0.49\textwidth}
\centering
\includegraphics[width=\linewidth,height=0.34\textheight,keepaspectratio]{imgs/plasma.png}
\par\smallskip
\small KDE Plasma
\end{minipage}
\hfill
\begin{minipage}{0.49\textwidth}
\centering
\includegraphics[width=\linewidth,height=0.34\textheight,keepaspectratio]{imgs/i3.png}
\par\smallskip
\small i3 (tiling)
\end{minipage}
\end{center}
\end{frame}
\begin{frame}{Allons un peu plus en détail - La gestion des paquets}
Pour installer une applications sous windows :
\pause
\begin{itemize}
\item On execute un installeur (.msi ou .exe)
\item On execute une version "portable" (.exe)
\end{itemize}
\pause
\vspace{1em}
Sous linux c'est pareil :
\begin{itemize}
\item On execute un installeur (.dnf ou .deb)
\item On execute une version portable (Snap, Appimage, Flatpak, \dots)
\end{itemize}
\pause
\vspace{1em}
Le support des format d'installer dependent des distribution. \\
Les version portable (ou conteneurisé) sont a priori universel.
\end{frame}
\begin{frame}{Allons un peu plus en détail - La gestion des paquets}
On distingue donc deux grandes familles (en vrai y'en a plus que ca) \\
RPM Package Manager et dpkg.
\pause
\begin{center}
\begin{tikzpicture}[
font=\small,
n/.style={draw, rounded corners, align=center, minimum height=8mm, inner sep=3pt},
a/.style={-{Latex[length=3mm,width=2mm]}, thick},
node distance=10mm and 14mm
]
\node[n] (rpm) {RPM\\DNF};
\node[n, below=5mm of rpm] (dpkg) {DPKG\\APT};
\node[n, right=10mm of rpm] (redhat) {Red Hat};
\node[n, right=10mm of redhat] (fedora) {Fedora};
\node[n, right=10mm of fedora] (nobara) {Nobara};
\node[n, right=10mm of dpkg] (debian) {Debian};
\node[n, right=10mm of debian] (ubuntu) {Ubuntu};
\node[n, right=10mm of ubuntu] (mint) {Linux Mint};
\draw[a] (rpm) -- (redhat);
\draw[a] (redhat) -- (fedora);
\draw[a] (fedora) -- (nobara);
\draw[a] (dpkg) -- (debian);
\draw[a] (debian) -- (ubuntu);
\draw[a] (ubuntu) -- (mint);
\pause
\node[n, below=5mm of dpkg] (tar) {tar.xx \\ PacMan};
\node[n, right=10mm of tar] (arch) {Arch Linux};
\node[n, right=10mm of arch] (manjaro) {Manjaro};
\draw[a] (tar) -- (arch);
\draw[a] (arch) -- (manjaro);
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}{Allons un peu plus en détail - La gestion des paquets}
Les grosses différences de chaque gestionnaire sont plutot philosophique :
\begin{itemize}
\pause
\item APT : Image de stabilité et de grand publique.
\begin{itemize}
\item + : Très stable, grosse communauté donc beaucoup de ressources dont en francais.
\item - : Souvent plus en retard sur des versions très recentes de certains logiciels.
\end{itemize}
\pause
\item DNF : Image de robustesse avec une image plus d'usage professionel
\begin{itemize}
\item + : Très robuste, moins de chance de casser le système même pour des configurations exotiques
\item - : Le processus de mise à jour peut être plus lent, et plus compliqué à prendre en main que APT.
\end{itemize}
\pause
\item PacMan : Minimaliste et ultra à jour.
\begin{itemize}
\item + : Systeme de "Rolling Release" qui permet d'avoir les mise à jour en continu.
\item - : Necessite un plus grand travail de veille sur les mise à jour.
\end{itemize}
\end{itemize}
\end{frame}
\begin{frame}{Quelques autres trucs à savoir}
\begin{itemize}
\item /bin (binaries): Exécutables essentiels au système, utilisables par tous les utilisateurs
\pause
\item /boot: fichiers permettant à Linux de démarrer
\pause
\item /dev (device): Fichiers spéciaux représentant les point d'entrées de tous les périphériques (fichiers spéciaux des disques durs, écrans, partitions, consoles TTY, webcam, clavier, ...)
\pause
\item /etc (editing text config): Contient les fichiers de configuration du système et des setvices (*.conf, passwd, inittab, fstab)
\pause
\item /home: Répertoire personnel des utilisateurs
\pause
\item /mnt (mount) /media: Là où les ressources peuvent être montées de manière permanente (/media) ou temporaire (/mnt)
\pause
\item /root: Répertoire personnel du super utilisateur
\pause
\item /sbin (super binaries): Contient les programmes système essentiels utilisables par l'admin uniquement.
\pause
\item /tmp (temporary): Répertoire fichier temporaires
\pause
\item /usr (Unix System Resources): Contient des programmes, des librairies et des données utilisés par tous les utilisateurs du système
\pause
\item /var (variable): contient les données variables qui varient en fonction de l'utilisation du système. (logs, bdd, mails)
\end{itemize}
\end{frame}
\begin{frame}{Comment ca s'installe}
\begin{itemize}
\item Faire un backup
\item Avoir une clé usb bootable
\item Rentrer dans la selection du disque de boot en trouvant le bon FX
\item Tester en execution "live" que tout fonctionne bien
\item Choisir si on veut du mono ou dual-boot
\item Allouer ses partitions en fonction des ses usages
\end{itemize}
\end{frame}
\end{document}