Update 2018
This commit is contained in:
parent
3c2e528390
commit
b2b5c1c0eb
@ -1,9 +1,7 @@
|
|||||||
SOURCES = tutorial.md installation.md chroot.md pseudofs.md capabilities.md cgroups.md oom.md project-intro.md project-body.md project-rendu.md
|
SOURCES = tutorial.md installation.md chroot.md pseudofs.md mount.md capabilities.md cgroups.md oom.md project-intro.md project-body.md project-rendu.md
|
||||||
PANDOCOPTS = --latex-engine=xelatex \
|
PANDOCOPTS = --pdf-engine=xelatex \
|
||||||
--standalone \
|
--standalone \
|
||||||
--normalize \
|
|
||||||
--number-sections \
|
--number-sections \
|
||||||
--smart \
|
|
||||||
-M lang=fr-FR \
|
-M lang=fr-FR \
|
||||||
-M fontsize=12pt \
|
-M fontsize=12pt \
|
||||||
-M papersize=a4paper \
|
-M papersize=a4paper \
|
||||||
@ -12,7 +10,6 @@ PANDOCOPTS = --latex-engine=xelatex \
|
|||||||
-M sansfont="Linux Biolinum O" \
|
-M sansfont="Linux Biolinum O" \
|
||||||
-M colorlinks=true \
|
-M colorlinks=true \
|
||||||
-M linkcolor="black" \
|
-M linkcolor="black" \
|
||||||
-M urlcolor="[rgb]{0.2,0.6,0.4}" \
|
|
||||||
--include-in-header=../header.tex
|
--include-in-header=../header.tex
|
||||||
|
|
||||||
|
|
||||||
|
@ -79,11 +79,11 @@ Par exemple, on peut définir un attribut sur un fichier comme cela :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ echo 'Hello World!' > toto
|
42sh$ echo 'Hello World!' > toto
|
||||||
42sh$ setfattr -n user.foo -v bar toto
|
42sh$ setfattr -n user.foo -v bar toto
|
||||||
42sh$ getfattr -d toto
|
42sh$ getfattr -d toto
|
||||||
# file: toto
|
# file: toto
|
||||||
user.foo="bar"
|
user.foo="bar"
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -91,12 +91,12 @@ Encore plus fort, vous pouvez utiliser les ACL POSIX :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ sudo chown root:root toto && sudo chmod o-r toto
|
42sh$ sudo chown root:root toto && sudo chmod o-r toto
|
||||||
42sh$ cat toto
|
42sh$ cat toto
|
||||||
cat: toto: Permission denied
|
cat: toto: Permission denied
|
||||||
42sh$ sudo setfattr -m u:$USER:r toto
|
42sh$ sudo setfattr -m u:$USER:r toto
|
||||||
42sh$ cat toto
|
42sh$ cat toto
|
||||||
Hello World!
|
Hello World!
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -107,9 +107,9 @@ Vous pouvez voir ces attributs avec la commande :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ getfattr -d -m "^system" toto
|
42sh$ getfattr -d -m "^system" toto
|
||||||
# file: toto
|
# file: toto
|
||||||
system.posix_acl_access=0sgAAEAD/////AgAEOgDAEAA/////xAABAD////8=
|
system.posix_acl_access=0sgAAEAD/////AgAEOgDAEAA/////xAABAD////8=
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -127,9 +127,9 @@ Si votre distribution profite de ces attributs étendus, vous devriez obtenir :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ getfattr -d -m "^security" $(which ping)
|
42sh$ getfattr -d -m "^security" $(which ping)
|
||||||
# file: bin/ping
|
# file: bin/ping
|
||||||
security.capability=0sAQAAAgAgAAAAAAAAAAAAAAAAAAA=
|
security.capability=0sAQAAAgAgAAAAAAAAAAAAAAAAAAA=
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -137,8 +137,8 @@ Ou, dans sa version plus lisible :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ getcap $(which ping)
|
42sh$ getcap $(which ping)
|
||||||
/bin/ping = cap_net_raw+ep
|
/bin/ping = cap_net_raw+ep
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -150,31 +150,31 @@ d'un processus :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ ./view_caps 1
|
42sh$ ./view_caps 1
|
||||||
cap_user_header_t
|
cap_user_header_t
|
||||||
-----------------
|
-----------------
|
||||||
Version: 20080522
|
Version: 20080522
|
||||||
PID: 1
|
PID: 1
|
||||||
|
|
||||||
cap_user_data_t
|
cap_user_data_t
|
||||||
---------------
|
---------------
|
||||||
effective: 0x3fffffffff
|
effective: 0x3fffffffff
|
||||||
CAP_AUDIT_CONTROL
|
CAP_AUDIT_CONTROL
|
||||||
CAP_AUDIT_READ
|
CAP_AUDIT_READ
|
||||||
[...]
|
[...]
|
||||||
CAP_SYS_TIME
|
CAP_SYS_TIME
|
||||||
CAP_SYS_TTY_CONFIG
|
CAP_SYS_TTY_CONFIG
|
||||||
CAP_SYSLOG
|
CAP_SYSLOG
|
||||||
CAP_WAKE_ALARM
|
CAP_WAKE_ALARM
|
||||||
permitted: 0x3fffffffff
|
permitted: 0x3fffffffff
|
||||||
CAP_AUDIT_CONTROL
|
CAP_AUDIT_CONTROL
|
||||||
CAP_AUDIT_READ
|
CAP_AUDIT_READ
|
||||||
[...]
|
[...]
|
||||||
CAP_SYS_TIME
|
CAP_SYS_TIME
|
||||||
CAP_SYS_TTY_CONFIG
|
CAP_SYS_TTY_CONFIG
|
||||||
CAP_SYSLOG
|
CAP_SYSLOG
|
||||||
CAP_WAKE_ALARM
|
CAP_WAKE_ALARM
|
||||||
inheritable: 0x0
|
inheritable: 0x0
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -24,8 +24,8 @@ procédure suivante :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
mkdir /sys/fs/cgroup/freezer/
|
mkdir /sys/fs/cgroup/freezer/
|
||||||
mount -t cgroup -o freezer none /sys/fs/cgroup/freezer/
|
mount -t cgroup -o freezer none /sys/fs/cgroup/freezer/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -43,8 +43,8 @@ par exemple la racine :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
mkdir /sys/fs/cgroup/freezer/virli/
|
mkdir /sys/fs/cgroup/freezer/virli/
|
||||||
ls /sys/fs/cgroup/freezer/virli/
|
ls /sys/fs/cgroup/freezer/virli/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ du groupe. Pour ajouter une tâche à ce groupe, cela se passe de cette manière
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
echo $PID > /sys/fs/cgroup/freezer/virli/tasks
|
echo $PID > /sys/fs/cgroup/freezer/virli/tasks
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -103,7 +103,7 @@ l'exécution s'arrêter. Si vous manquez d'inspiration, utilisez :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
for i in $(seq 9999); do echo -n $i; sleep .1; echo -n " - "; sleep .1; done
|
for i in $(seq 9999); do echo -n $i; sleep .1; echo -n " - "; sleep .1; done
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ calcul à notre shell et ses fils :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
echo FROZEN > /sys/fs/cgroup/freezer/virli/freezer.state
|
echo FROZEN > /sys/fs/cgroup/freezer/virli/freezer.state
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ l'exécution :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
echo THAWED > /sys/fs/cgroup/freezer/virli/freezer.state
|
echo THAWED > /sys/fs/cgroup/freezer/virli/freezer.state
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ l'installer sur notre machine) :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker container run --name mytsdb -d -p 8086:8086 influxdb
|
docker container run --name mytsdb -d -p 8086:8086 influxdb
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -148,10 +148,10 @@ métriques. Voici comment on s'était débrouillé dans un précédent TP :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
docker container exec -i mytsdb <<EOF
|
docker container exec -i mytsdb <<EOF
|
||||||
CREATE DATABASE metrics;
|
CREATE DATABASE metrics;
|
||||||
SHOW DATABASES;
|
SHOW DATABASES;
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ Maintenant, envoyons nos données vers la base
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
curl -i -XPOST 'http://localhost:8086/write?db=metrics' --data-binary \
|
curl -i -XPOST 'http://localhost:8086/write?db=metrics' --data-binary \
|
||||||
"$my_cgroup_name memory.usage_in_bytes=$(cat .../my_cgroup_name/memory.usage_in_bytes)"
|
"$my_cgroup_name memory.usage_in_bytes=$(cat .../my_cgroup_name/memory.usage_in_bytes)"
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
@ -194,7 +194,7 @@ requête suivante dans notre client `influx` :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```sql
|
```sql
|
||||||
SELECT * from "$my_cgroup_name";
|
SELECT * from "$my_cgroup_name";
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -226,8 +226,8 @@ particuliers.
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ sudo ./monitor_init my_cgroup_name
|
42sh$ sudo ./monitor_init my_cgroup_name
|
||||||
42sh$ ./monitor my_cgroup_name memhog 500
|
42sh$ ./monitor my_cgroup_name memhog 500
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -243,13 +243,13 @@ correspondant à une valeur limite, comme par exemple
|
|||||||
processus va pouvoir allouer au maximum :
|
processus va pouvoir allouer au maximum :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
42sh$ cat /sys/fs/cgroup/memory/virli/memory.max_usage_in_bytes
|
42sh$ cat /sys/fs/cgroup/memory/virli/memory.max_usage_in_bytes
|
||||||
0
|
0
|
||||||
# 0 = Aucune limite
|
# 0 = Aucune limite
|
||||||
42sh$ echo 4M > /sys/fs/cgroup/memory/virli/memory.max_usage_in_bytes
|
42sh$ echo 4M > /sys/fs/cgroup/memory/virli/memory.max_usage_in_bytes
|
||||||
# Maintenant, la limite est à 4MB, vérifions...
|
# Maintenant, la limite est à 4MB, vérifions...
|
||||||
42sh$ cat /sys/fs/cgroup/memory/virli/memory.max_usage_in_bytes
|
42sh$ cat /sys/fs/cgroup/memory/virli/memory.max_usage_in_bytes
|
||||||
4194304
|
4194304
|
||||||
```
|
```
|
||||||
|
|
||||||
Chaque *cgroup*s défini de nombreux indicateurs et possède de nombreux
|
Chaque *cgroup*s défini de nombreux indicateurs et possède de nombreux
|
||||||
|
@ -16,7 +16,7 @@ commencer par créer le dossier de notre nouvelle racine :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
mkdir newroot
|
mkdir newroot
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -30,8 +30,8 @@ première isolation :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
cp $(which busybox) newroot/
|
cp $(which busybox) newroot/
|
||||||
chroot newroot /busybox ash
|
chroot newroot /busybox ash
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -40,9 +40,9 @@ Jusque là ... ça fonctionne, rien de surprenant ! Mais qu'en est-il pour
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ cp $(which bash) newroot/
|
42sh$ cp $(which bash) newroot/
|
||||||
42sh# chroot newroot /bash
|
42sh# chroot newroot /bash
|
||||||
chroot: failed to run command ‘bash’: No such file or directory
|
chroot: failed to run command ‘bash’: No such file or directory
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ l'utilisateur lors de l'installation) le système de base.
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
debootstrap jessie newroot/ http://httpredir.debian.org/debian/
|
debootstrap jessie newroot/ http://httpredir.debian.org/debian/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -67,13 +67,13 @@ debootstrap jessie newroot/ http://httpredir.debian.org/debian/
|
|||||||
|
|
||||||
### *stage3*
|
### *stage3*
|
||||||
|
|
||||||
Les distributions « à l'ancienne » proposent encore de télécharger leur système
|
Les distributions *à l'ancienne* proposent encore de télécharger leur système
|
||||||
de base sous forme de tarball :
|
de base sous forme de tarball :
|
||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
wget ftp://gentoo.mirrors.ovh.net/gentoo-distfiles/releases/amd64/autobuilds/20160929/stage3-amd64-20160929.tar.bz2
|
wget http://gentoo.mirrors.ovh.net/gentoo-distfiles/releases/amd64/autobuilds/current-stage3-amd64/stage3-amd64-20181021T214502Z.tar.xz
|
||||||
tar xpf stage3-amd64-*.tar.bz2 -C newroot/
|
tar xpf stage3-amd64-*.tar.xz -C newroot/
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -87,9 +87,9 @@ environnement qui tient dans 300 MB.
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
make escape
|
make escape
|
||||||
echo bar > ../foo
|
echo bar > ../foo
|
||||||
chroot .
|
chroot .
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ Dans le nouvel environnement, vous ne devriez pas pouvoir faire :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
cat ../foo
|
cat ../foo
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ Mais une fois votre programme `escape` exécuté, vous devriez pouvoir !
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
./escape
|
./escape
|
||||||
cat /path/to/foo
|
cat /path/to/foo
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
@ -46,7 +46,7 @@ Dans les sources, on affiche la liste des options avec la commande :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
make menuconfig
|
make menuconfig
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -8,8 +8,8 @@ Des particularités de `mount` {#mount}
|
|||||||
Au premier abord, les points de montage dans l'arborescence d'un système de
|
Au premier abord, les points de montage dans l'arborescence d'un système de
|
||||||
fichiers n'ont pas l'air d'être remplis de notions complexes : un répertoire
|
fichiers n'ont pas l'air d'être remplis de notions complexes : un répertoire
|
||||||
peut être le point d'entrée d'un montage vers la partition d'un disque
|
peut être le point d'entrée d'un montage vers la partition d'un disque
|
||||||
physique... ou d'une partition virtuelle, comme nous l'avons vu au TP
|
physique... ou d'une partition virtuelle, comme nous l'avons vu dans la partie
|
||||||
précédent.
|
précédente.
|
||||||
|
|
||||||
Mais avez-vous déjà essayé de monter la même partition d'un disque physique à
|
Mais avez-vous déjà essayé de monter la même partition d'un disque physique à
|
||||||
deux endroits différents de votre arborescence ?
|
deux endroits différents de votre arborescence ?
|
||||||
@ -283,8 +283,8 @@ Par exemple :
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
Il est courant de faire appel à cette option lorsque l'on souhaite changer la
|
Il est courant de faire appel à cette option lorsque l'on souhaite changer la
|
||||||
racine de notre système de fichiers: par exemple pour passer de l'*initramfs* au
|
racine de notre système de fichiers : par exemple pour passer de l'*initramfs*
|
||||||
système démarré, de notre système hôte au système d'un conteneur, ...
|
au système démarré, de notre système hôte au système d'un conteneur, ...
|
||||||
|
|
||||||
|
|
||||||
## Aller plus loin
|
## Aller plus loin
|
@ -67,5 +67,5 @@ Grâce à cette notification, il est possible de figer le processus pour
|
|||||||
l'envoyer sur une autre machine. Et ainsi libérer la mémoire avant que l'OOM
|
l'envoyer sur une autre machine. Et ainsi libérer la mémoire avant que l'OOM
|
||||||
killer ne passe.
|
killer ne passe.
|
||||||
|
|
||||||
Jetez un œil à [cet article parru LVM](https://lwn.net/Articles/590960/) à ce
|
Jetez un œil à [cet article parru sur LVM](https://lwn.net/Articles/590960/) à
|
||||||
sujet.
|
ce sujet.
|
||||||
|
@ -1 +1 @@
|
|||||||
../../subject/project-part1.md
|
../../subject/2/project-part1.md
|
@ -24,11 +24,11 @@ pour chaque exercice) :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
login_x-TP3/escape.c
|
login_x-TP3/escape.c
|
||||||
login_x-TP3/procinfo.sh
|
login_x-TP3/procinfo.sh
|
||||||
login_x-TP3/rev_kdb_leds.sh
|
login_x-TP3/rev_kdb_leds.sh
|
||||||
login_x-TP3/view_caps.c
|
login_x-TP3/view_caps.c
|
||||||
login_x-TP3/monitor.sh
|
login_x-TP3/monitor.sh
|
||||||
login_x-TP3/monitor_init.sh
|
login_x-TP3/monitor_init.sh
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
@ -16,8 +16,8 @@ montage :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
/dev/sda1 on / type ext4 (rw,relatime,data=ordered)
|
/dev/sda1 on / type ext4 (rw,relatime,data=ordered)
|
||||||
/dev/sda3 on /home type ext4 (rw,relatime,data=ordered)
|
/dev/sda3 on /home type ext4 (rw,relatime,data=ordered)
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -62,14 +62,14 @@ exemple, pour modifier les paramètres du noyau, on passe par le fichier
|
|||||||
La consultation d'un élément se fait généralement à l'aide d'un simple `cat` :
|
La consultation d'un élément se fait généralement à l'aide d'un simple `cat` :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
42sh$ cat /sys/power/state
|
42sh$ cat /sys/power/state
|
||||||
freeze mem
|
freeze mem
|
||||||
```
|
```
|
||||||
|
|
||||||
La modification d'un élément se fait avec `echo`, comme ceci :
|
La modification d'un élément se fait avec `echo`, comme ceci :
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
echo mem > /sys/power/state
|
42sh# echo mem > /sys/power/state
|
||||||
```
|
```
|
||||||
|
|
||||||
Vous devriez constater l'effet de cette commande sans plus attendre !
|
Vous devriez constater l'effet de cette commande sans plus attendre !
|
||||||
@ -84,39 +84,54 @@ afficher des informations sur un processus donné :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```
|
```
|
||||||
42sh$ ./procinfo $$
|
42sh$ ./procinfo $$
|
||||||
PID: 4242
|
PID: 4242
|
||||||
Path: /bin/bash
|
Path: /bin/bash
|
||||||
Command line: bash
|
Command line: bash
|
||||||
Working directory: /home/nemunaire/virli/
|
Working directory: /home/nemunaire/virli/
|
||||||
Root: /
|
Root: /
|
||||||
State: S (sleeping)
|
State: S (sleeping)
|
||||||
Threads: 1
|
Threads: 1
|
||||||
|
|
||||||
CGroups
|
CGroups
|
||||||
=======
|
=======
|
||||||
12:pids:/
|
12:pids:/
|
||||||
11:net_prio:/
|
11:net_prio:/
|
||||||
10:perf_event:/
|
10:perf_event:/
|
||||||
9:net_cls:/
|
9:net_cls:/
|
||||||
8:freezer:/
|
8:freezer:/
|
||||||
7:devices:/
|
7:devices:/
|
||||||
6:memory:/
|
6:memory:/
|
||||||
5:blkio:/
|
5:blkio:/
|
||||||
4:cpuacct:/
|
4:cpuacct:/
|
||||||
3:cpu:/
|
3:cpu:/
|
||||||
2:cpuset:/
|
2:cpuset:/
|
||||||
1:name=openrc:/
|
1:name=openrc:/
|
||||||
|
|
||||||
Namespaces
|
Namespaces
|
||||||
==========
|
==========
|
||||||
cgroup:[4026531835]
|
cgroup:[4026531835]
|
||||||
ipc:[4026531839]
|
ipc:[4026531839]
|
||||||
mnt:[4026531840]
|
mnt:[4026531840]
|
||||||
net:[4026531969]
|
net:[4026531969]
|
||||||
pid:[4026531836]
|
pid:[4026531836]
|
||||||
user:[4026531837]
|
user:[4026531837]
|
||||||
uts:[4026531838]
|
uts:[4026531838]
|
||||||
|
```
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
### `batinfo.sh`
|
||||||
|
|
||||||
|
Explorons le pseudo système de fichiers `/sys` pour écrire un script
|
||||||
|
qui va nous renvoyer des statistiques sur votre batterie.
|
||||||
|
|
||||||
|
|
||||||
|
Voici un exemple d'utilisation :
|
||||||
|
|
||||||
|
<div lang="en-US">
|
||||||
|
```shell
|
||||||
|
42sh$ ./rev_kdb_leds.sh input20
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -142,6 +157,6 @@ Voici un exemple d'utilisation :
|
|||||||
|
|
||||||
<div lang="en-US">
|
<div lang="en-US">
|
||||||
```shell
|
```shell
|
||||||
42sh$ ./rev_kdb_leds.sh input20
|
42sh$ ./rev_kdb_leds.sh input20
|
||||||
```
|
```
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
---
|
---
|
||||||
title: Virtualisation légère -- Linux Internals partie 1
|
title: Virtualisation légère -- TP n^o^ 3
|
||||||
subtitle: Travaux pratiques
|
subtitle: Linux Internals partie 1
|
||||||
author: Pierre-Olivier *Nemunaire* Mercier
|
author: Pierre-Olivier *Nemunaire* Mercier
|
||||||
institute: EPITA
|
institute: EPITA
|
||||||
date: Jeudi 26 octobre 2017
|
date: Mercredi 24 octobre 2018
|
||||||
...
|
...
|
||||||
|
|
||||||
Ce premier TP consacré aux Linux Internals va nous permettre d'appréhender les
|
Ce premier TP consacré aux Linux Internals va nous permettre d'appréhender les
|
||||||
notions de pseudos systèmes de fichiers, de cgroups ainsi que de capabilities.
|
notions de pseudos systèmes de fichiers, de cgroups ainsi que de capabilities.
|
||||||
|
|
||||||
Certains éléments de ce TP sont à rendre à <virli@nemunai.re> au plus tard le
|
Certains éléments de ce TP sont à rendre à <virli@nemunai.re> au plus tard le
|
||||||
jeudi 2 novembre 2017 à 8 h 42. Consultez la dernière section de chaque partie
|
mercredi 7 novembre 2018 à 12 h 42. Consultez la dernière section de chaque partie
|
||||||
pour plus d'information sur les éléments à rendre.
|
pour plus d'information sur les éléments à rendre.
|
||||||
|
|
||||||
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
|
En tant que personnes sensibilisées à la sécurité des échanges électroniques,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
SOURCES_TUTO = tutorial.md setup.md cmpns.md docker-exec.md mountns.md rendu.md
|
SOURCES_TUTO = tutorial.md setup.md cmpns.md docker-exec.md mountns.md rendu.md
|
||||||
SOURCES_LESSON = lesson.md mount.md namespaces.md networkns.md pidns.md userns.md
|
SOURCES_LESSON = lesson.md namespaces.md networkns.md pidns.md userns.md
|
||||||
|
|
||||||
PANDOCOPTS = --latex-engine=xelatex \
|
PANDOCOPTS = --latex-engine=xelatex \
|
||||||
--standalone \
|
--standalone \
|
||||||
|
Loading…
Reference in New Issue
Block a user