108 lines
3.0 KiB
Markdown
108 lines
3.0 KiB
Markdown
|
\newpage
|
||
|
|
||
|
Prérequis
|
||
|
=========
|
||
|
|
||
|
## Noyau Linux
|
||
|
|
||
|
Ce TP requiert un noyau Linux, dans sa version 3.8 au minimum. Il doit de plus
|
||
|
être compilé avec les options suivantes (lorsqu'elles sont disponibles pour
|
||
|
votre version) :
|
||
|
|
||
|
```
|
||
|
General setup --->
|
||
|
[*] Control Group support --->
|
||
|
[*] Freezer cgroup subsystem
|
||
|
[*] PIDs cgroup subsystem
|
||
|
[*] Device controller for cgroups
|
||
|
[*] Cpuset support
|
||
|
[*] Simple CPU accounting cgroup subsystem
|
||
|
[*] Memory Resource Controller for Control Groups
|
||
|
[*] Group CPU scheduler --->
|
||
|
[*] Group scheduling for SCHED_OTHER
|
||
|
[*] Group scheduling for SCHED_RR/FIFO
|
||
|
<*> Block IO controller
|
||
|
-*- Namespaces support
|
||
|
[*] UTS namespace
|
||
|
[*] IPC namespace
|
||
|
[*] User namespace
|
||
|
[*] PID Namespaces
|
||
|
[*] Network namespace
|
||
|
[*] Networking support --->
|
||
|
Networking options --->
|
||
|
<M> 802.1d Ethernet Bridging
|
||
|
[*] Network priority cgroup
|
||
|
[*] Network classid cgroup
|
||
|
Device Drivers --->
|
||
|
[*] Network device support --->
|
||
|
<M> MAC-VLAN support
|
||
|
<M> Virtual ethernet pair device
|
||
|
```
|
||
|
|
||
|
|
||
|
### Vérification via `menuconfig`
|
||
|
|
||
|
L'arbre ci-dessous correspond aux options qui seront *built-in* (signalée par
|
||
|
une `*`) ou installées en tant que module (signalée par un `M`). En effet,
|
||
|
chaque noyau Linux peut être entièrement personnalisé en fonction des options
|
||
|
et des pilotes que l'on voudra utiliser.
|
||
|
|
||
|
Pour parcourir l'arbre des options du noyau, il est nécessaire d'avoir les
|
||
|
sources de celui-ci. Les dernières versions stables et encore maintenues sont
|
||
|
disponible sur la page d'accueil de <https://kernel.org>.
|
||
|
|
||
|
Dans les sources, on affiche la liste des options avec la commande :
|
||
|
|
||
|
```shell
|
||
|
make menuconfig
|
||
|
```
|
||
|
|
||
|
|
||
|
### Vérification via `/boot/config-xxx`
|
||
|
|
||
|
Les distributions basées sur Debian ont pour habitude de placer le fichier de
|
||
|
configuration ayant servi à compiler le noyau et ses modules dans le dossier
|
||
|
`/boot`, aux côtés de l'image du noyau `vmlinuz-xxx`, de l'éventuel système de
|
||
|
fichiers initial (`initramfs-xxx`) et des symboles de débogage
|
||
|
`System.map-xxx`.
|
||
|
|
||
|
Ce fichier répertorie toutes les options qui ont été activées. Par rapport à
|
||
|
l'arbre présenté ci-dessus, vous devriez trouver :
|
||
|
|
||
|
```
|
||
|
CONFIG_CGROUPS=y
|
||
|
CONFIG_CGROUP_FREEZER=y
|
||
|
CONFIG_CGROUP_PIDS=y
|
||
|
CONFIG_CGROUP_DEVICE=y
|
||
|
CONFIG_CPUSETS=y
|
||
|
CONFIG_CGROUP_CPUACCT=y
|
||
|
CONFIG_CGROUP_MEMCG=y
|
||
|
CONFIG_CGROUP_SCHED=y
|
||
|
CONFIG_BLK_CGROUP=y
|
||
|
|
||
|
CONFIG_NAMESPACES=y
|
||
|
CONFIG_UTS_NS=y
|
||
|
CONFIG_IPC_NS=y
|
||
|
CONFIG_USER_NS=y
|
||
|
CONFIG_PID_NS=y
|
||
|
CONFIG_NET_NS=y
|
||
|
|
||
|
CONFIG_NET=y
|
||
|
CONFIG_BRIDGE=m
|
||
|
CONFIG_CGROUP_NET_PRIO=y
|
||
|
CONFIG_CGROUP_NET_CLASSID=y
|
||
|
|
||
|
CONFIG_NETDEVICES=y
|
||
|
CONFIG_MACVLAN=m
|
||
|
CONFIG_VETH=m
|
||
|
```
|
||
|
|
||
|
|
||
|
### Vérification via `/proc/config.gz`
|
||
|
|
||
|
Dans la plupart des autres distributions, la configuration est accessible à
|
||
|
travers le fichier `/proc/config.gz`. Comme vous ne pouvez pas écrire dans
|
||
|
`/proc` pour décompresser le fichier, utilisez les outils `zcat`, `zgrep`, ...
|
||
|
|
||
|
Vous devez retrouves les mêmes options que celles de la section précédente.
|