Compare commits

...

2 Commits

Author SHA1 Message Date
tth
d7b4250194 more blabla again 2020-11-20 04:06:44 +01:00
tth
3019e06bf5 little patch 2020-11-20 02:10:12 +01:00
6 changed files with 135 additions and 12 deletions

6
.gitignore vendored
View File

@ -1,6 +1,9 @@
log.* log.*
MANIFEST
tarball
main.aux main.aux
main.idx main.idx
main.ilg main.ilg
@ -9,3 +12,6 @@ main.log
main.pdf main.pdf
main.toc main.toc
code/a.out
code/foo

View File

@ -9,7 +9,7 @@ TOTAR = chap/*.tex chap/*.png *.tex *.c Makefile *.sh *.awk
tarball: $(TOTAR) tarball: $(TOTAR)
date >> tarball date >> tarball
ls $(TOTAR) | sed 's/^/Ordinateur\//' > MANIFEST ls $(TOTAR) | sed 's/^/TetaTricks\//' > MANIFEST
( cd .. ; tar zcvf livre_ordinateur.tar.gz `cat Ordinateur/MANIFEST` ) ( cd .. ; tar zcvf livre_ordinateur.tar.gz `cat Ordinateur/MANIFEST` )

View File

@ -18,10 +18,42 @@ Comme vous le savez tous, un appel système
est \textbf{le} moyen de communication qu'utilise un process est \textbf{le} moyen de communication qu'utilise un process
utilisateur pôur demander un service au noyau. utilisateur pôur demander un service au noyau.
\begin{lstlisting}[language=C]
#include <stdio.h>
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} \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} \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} \section{LD\_PRELOAD}\index{LD\_PRELOAD}

View File

@ -5,12 +5,24 @@
\section{Diagnostics} \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 dmesg, lshw, lsusb, lspci\dots
% ----------------------------------------------------------- % -----------------------------------------------------------
\section{Ports série} \section{Ports série}
\index{rs232} \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 Comment détecter si un \textit{device} correspond bien
à un port série ? à un port série ?
@ -38,19 +50,77 @@ int main(void) {
} }
\end{lstlisting} \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} \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 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 Parfois, je n'aime pas trop \textit{parser} celle-ci à grand
coup de \textit{regexp}\index{regexp}, en particulier dans un coup de \textit{regexp}\index{regexp}, en particulier dans un
contexte de type Busybox\index{busybox}. Et pour ce cas-là, je 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... application critique...
% -----------------------------------------------------------

6
code/hello.c Normal file
View File

@ -0,0 +1,6 @@
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello world.\n");
return 0;
}

View File

@ -41,7 +41,7 @@ Mais elles sont en vrac, et surtout, elles sont reprises
d'une très ancienne version (circa 2011) et donc, d'une très ancienne version (circa 2011) et donc,
peut-être pas vraiment d'actualité. peut-être pas vraiment d'actualité.
\vspace{5em} \vspace{3em}
Cependant, toute cette ouvrage est en cours de 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 essentiellement sur une machine Debian/amd64, avec des
morceaux de Fedora\index{Fedora} Server 33 juste là, à coté, morceaux de Fedora\index{Fedora} Server 33 juste là, à coté,
vers la page \pageref{chap:Fedora}. vers la page \pageref{chap:Fedora}.
Mes sources sont assez diverses%
\vspace{5em} \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 Your mileage may vary\dots
@ -65,16 +73,16 @@ Your mileage may vary\dots
% ============================================================== % ==============================================================
\input{chap/shell} \input{chap/shell}
% \input{chap/editeurs} \input{chap/editeurs}
\input{chap/son} \input{chap/son}
\input{chap/image} \input{chap/image}
\input{chap/reseau} \input{chap/reseau}
\input{chap/musique} \input{chap/musique}
% \input{chap/puredata} \input{chap/puredata}
\input{chap/MIDI} \input{chap/MIDI}
\input{chap/OSC} \input{chap/OSC}
\input{chap/backups} \input{chap/backups}
% \input{chap/processing} \input{chap/processing}
\input{chap/video} \input{chap/video}
\input{chap/graphisme} \input{chap/graphisme}
\input{chap/gnuplot} \input{chap/gnuplot}