Compare commits
No commits in common. "d7b42501943347e6b4bcbc13e1bfef9df16f59b4" and "8c53d9395b208a51bf7e27fd3e96aaec1f55d832" have entirely different histories.
d7b4250194
...
8c53d9395b
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,9 +1,6 @@
|
|||||||
|
|
||||||
log.*
|
log.*
|
||||||
|
|
||||||
MANIFEST
|
|
||||||
tarball
|
|
||||||
|
|
||||||
main.aux
|
main.aux
|
||||||
main.idx
|
main.idx
|
||||||
main.ilg
|
main.ilg
|
||||||
@ -12,6 +9,3 @@ main.log
|
|||||||
main.pdf
|
main.pdf
|
||||||
main.toc
|
main.toc
|
||||||
|
|
||||||
code/a.out
|
|
||||||
code/foo
|
|
||||||
|
|
||||||
|
2
Makefile
2
Makefile
@ -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/^/TetaTricks\//' > MANIFEST
|
ls $(TOTAR) | sed 's/^/Ordinateur\//' > MANIFEST
|
||||||
( cd .. ; tar zcvf livre_ordinateur.tar.gz `cat Ordinateur/MANIFEST` )
|
( cd .. ; tar zcvf livre_ordinateur.tar.gz `cat Ordinateur/MANIFEST` )
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,42 +18,10 @@ 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}
|
||||||
$ gcc hello.c
|
strace -o toto ./kluge
|
||||||
$ 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}
|
||||||
|
@ -5,24 +5,12 @@
|
|||||||
|
|
||||||
\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 ?
|
||||||
|
|
||||||
@ -46,81 +34,23 @@ int main(void) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
\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} ? UUID\index{uuid} ?
|
Iozone ? Bonnie ? Smart\index{smart} ?
|
||||||
Ddrescue ?
|
|
||||||
|
|
||||||
\subsection{blkid}
|
\section{Interface réseaux}
|
||||||
|
|
||||||
À 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 Ethernet
|
réseau (\textsc{up}, \textsc{running} dans la sortie de ifconfig).
|
||||||
(\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
|
||||||
@ -183,7 +113,6 @@ et je vous propose de ne pas trop lui faire confiance pour une
|
|||||||
application critique...
|
application critique...
|
||||||
|
|
||||||
|
|
||||||
% -----------------------------------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
int main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
printf("Hello world.\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
20
main.tex
20
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,
|
d'une très ancienne version (circa 2011) et donc,
|
||||||
peut-être pas vraiment d'actualité.
|
peut-être pas vraiment d'actualité.
|
||||||
|
|
||||||
\vspace{3em}
|
\vspace{5em}
|
||||||
|
|
||||||
|
|
||||||
Cependant, toute cette ouvrage est en cours de
|
Cependant, toute cette ouvrage est en cours de
|
||||||
@ -51,16 +51,8 @@ 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%
|
|
||||||
\footnote{Il m'arrive même de parfois les citer, si j'y pense.}.
|
\vspace{5em}
|
||||||
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
|
||||||
|
|
||||||
@ -73,16 +65,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}
|
||||||
|
Loading…
Reference in New Issue
Block a user