diff --git a/.gitignore b/.gitignore index 39935f6..1c1fd52 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ main.log main.pdf main.toc +code/a.out +code/foo + diff --git a/chap/debug.tex b/chap/debug.tex index edb5569..f078644 100644 --- a/chap/debug.tex +++ b/chap/debug.tex @@ -18,10 +18,42 @@ Comme vous le savez tous, un appel système est \textbf{le} moyen de communication qu'utilise un process utilisateur pôur demander un service au noyau. +\begin{lstlisting}[language=C] +#include +int main(int argc, char *argv[]) +{ +printf("Hello world.\n"); +return 0; +} +\end{lstlisting} + +Un exemple canonique, n'est-il pas ? Ce bout de code affichant +quelque chose à l'écran, il doit bien y avoir un appel au noyau +qui traine par là. Nous allons donc le chercher% +\footnote{En trichant un peu, je l'avoue, je connais son nom.} + \begin{verbatim} -strace -o toto ./kluge +$ gcc hello.c +$ strace -o foo ./a.out +$ grep write foo +write(1, "Hello world.\n", 13) = 13 +$ \end{verbatim} +On peut réaliser la même opération en utilisant le filtrage interne +de strace, ce qui évite le passage par un +fichier intermédiaire, mais le résultat est moins lisible, +puisque a.out écrit sur stdout, et strace sur stderr~: + +\begin{verbatim} +$ strace -e write ./a.out +write(1, "Hello world.\n", 13Hello world. +) = 13 ++++ exited with 0 +++ +$ +\end{verbatim} + + % ============================================================== \section{LD\_PRELOAD}\index{LD\_PRELOAD} diff --git a/chap/hardware.tex b/chap/hardware.tex index 1fc002e..1c72552 100644 --- a/chap/hardware.tex +++ b/chap/hardware.tex @@ -5,12 +5,24 @@ \section{Diagnostics} +Quand les choses ne se passent pas comme prévu, quand il +y a des accrocs dans le plan, que le résultat n'est +qu'une video totalement noire de 17 minutes. dmesg, lshw, lsusb, lspci\dots % ----------------------------------------------------------- \section{Ports série} \index{rs232} +\begin{quote} +RS-232 (parfois appelée EIA RS-232, EIA 232 ou TIA 232) est +une norme standardisant une voie de communication de type série. +Le standard RS-232 recouvre plusieurs autres standards~: +les recommandations UIT-T V.24 (définition des circuits) +et V.28 (caractéristiques électriques), +ainsi que la norme ISO 2110 pour la connectique. +\end{quote} + Comment détecter si un \textit{device} correspond bien à un port série ? @@ -34,23 +46,81 @@ int main(void) { return 1; } - return 0; +return 0; } \end{lstlisting} +Et la question qui, je le sens, va venir~: « à quoi peut bien +servir un port série ? » appelle un réponse presque évidente~: +« à plusieurs choses ». Une petite liste~: +Connecter un Minitel\index{MINITEL} +pour dialoguer avec Ulla Trentsixquinze ? Brancher un +Sportster 14400 pour retouver Fidonet\index{Fidonet} ? +Discuter avec un équipement avionnique ? Rediriger +l'impression d'un MSX\index{MSX} vers Cups\index{cups} ? +Les possibilités sont infinies. C'est votre imagination qui +est la limite\footnote{Comme à peu près tout dans la vie.} % ----------------------------------------------------------- \section{Disques durs} -Iozone ? Bonnie ? Smart\index{smart} ? +Iozone ? Bonnie ? Smart\index{smart} ? UUID\index{uuid} ? +Ddrescue ? -\section{Interface réseaux} +\subsection{blkid} + +À mi-chemin entre le matériel et le système, la commande +\texttt{blkid}\index{blkid} affiche quelques informations +sur les périphériques blocs +et surtout les partitions qu'ils contiennent~: + +\begin{itemize} +\item Périphérique dans \texttt{/dev/} +\item UUID XXX\index{XXX} +\item Type de la partition +\item Label textuel +\item PARTUID +\end{itemize} + +% ----------------------------------------------------------- + +\subsection{Smart}\index{smart} + +Self-Monitoring, Analysis and Reporting Technology% +\footnote{http://www.smartmontools.org/} est un ensemble +de choses pour la surveillance de l'état des disques durs +et dérivés (SSD\index{SSD}). Il permettrait, dans un monde +idéal, la prédiction des pannes. + +\begin{verbatim} + smartctl -a /dev/sda + Print a large amount of SMART information for drive /dev/sda . + + smartctl -s off /dev/sdd + Disable SMART monitoring and data log collection on drive /dev/sdd . +\end{verbatim} + +% ----------------------------------------------------------- +\subsection{fsck}\index{fsck} + +\textsl{Check and repair a Linux filesystem} + +% ----------------------------------------------------------- +\subsection{tune2fs}\index{tune2fs} + +\textsl{Adjust tunable filesystem parameters on ext2/ext3/ext4 +filesystems} + +% ----------------------------------------------------------- + +\section{Interface réseau}\index{NIC} On a parfois besoin de savoir dans quel état est une interface -réseau (\textsc{up}, \textsc{running} dans la sortie de ifconfig). +réseau Ethernet +(\textsc{up}, \textsc{running} dans la sortie de ifconfig). Parfois, je n'aime pas trop \textit{parser} celle-ci à grand coup de \textit{regexp}\index{regexp}, en particulier dans un contexte de type Busybox\index{busybox}. Et pour ce cas-là, je @@ -113,6 +183,7 @@ et je vous propose de ne pas trop lui faire confiance pour une application critique... +% ----------------------------------------------------------- diff --git a/code/hello.c b/code/hello.c new file mode 100644 index 0000000..be5b83d --- /dev/null +++ b/code/hello.c @@ -0,0 +1,6 @@ +#include +int main(int argc, char *argv[]) +{ +printf("Hello world.\n"); +return 0; +} diff --git a/main.tex b/main.tex index da4edd5..1d0503f 100644 --- a/main.tex +++ b/main.tex @@ -41,7 +41,7 @@ Mais elles sont en vrac, et surtout, elles sont reprises d'une très ancienne version (circa 2011) et donc, peut-être pas vraiment d'actualité. -\vspace{5em} +\vspace{3em} Cependant, toute cette ouvrage est en cours de @@ -51,8 +51,16 @@ de «~La~Rache~»\index{rache}, essentiellement sur une machine Debian/amd64, avec des morceaux de Fedora\index{Fedora} Server 33 juste là, à coté, vers la page \pageref{chap:Fedora}. - -\vspace{5em} +Mes sources sont assez diverses% +\footnote{Il m'arrive même de parfois les citer, si j'y pense.}. +Quand j'ai un souci précis à régler dans l'urgence, je commence +par les \textsl{manpages}\index{man}\index{roff} qui contiennent +souvent la bonne piste, éventuellement avec l'installation +d'un nouveau paquet plus approprié. +Ensuite, je passe pas mal de temps à téléglander, et je tombe +parfois sur de petites perles que je m'empresse d'incruster +dans un chapitre. +\vspace{3em} Your mileage may vary\dots @@ -65,16 +73,16 @@ Your mileage may vary\dots % ============================================================== \input{chap/shell} -% \input{chap/editeurs} +\input{chap/editeurs} \input{chap/son} \input{chap/image} \input{chap/reseau} \input{chap/musique} -% \input{chap/puredata} +\input{chap/puredata} \input{chap/MIDI} \input{chap/OSC} \input{chap/backups} -% \input{chap/processing} +\input{chap/processing} \input{chap/video} \input{chap/graphisme} \input{chap/gnuplot}