Aux fins de cette réponse, supposons que votre conteneur soit nommé "foo".
PARTIE A
De l'hôte, enregistrez une copie de /var/lib/lxc/foo/config
, au cas où mes instructions casseraient quelque chose.
Vous devrez configurer votre conteneur pour conserver la SYS_MODULE
capacité.
N'oubliez pas qu'une telle configuration donne à ce conteneur la possibilité de prendre en charge le noyau et donc l'hôte .
Pour ce faire, vous souhaiterez modifier la ligne de configuration "lxc.cap.drop"
ou "lxc.cap.keep"
.
Si vous exécutez un invité Ubuntu 19.04 créé avec "lxc-create --name foo --template download -- ..."
:
/var/lib/lxc/foo/config
contiendra une ligne
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
contiendra une ligne
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
contiendra une ligne comme celle-ci
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
Vous devez copier cette dernière ligne à la fin de /var/lib/lxc/foo/config
(ou n'importe quel endroit après le "include /usr/share/lxc/ubuntu.common.conf"
), puis supprimer "sys_module"
de cette liste.
Partie B
Vous avez besoin d'une copie de vos modules du noyau dans le conteneur.
Si votre hôte exécute un noyau Ubuntu, vous pourrez peut-être faire quelque chose comme à "sudo apt install kernel-image-$(uname -r)"
partir de l'invité.
Sinon depuis l'hôte, vous devrez peut-être faire quelque chose comme ceci (en supposant que votre conteneur est nommé "foo"):
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
Après cela, arrêtez le foo invité s'il est en cours d'exécution, puis redémarrez-le avec quelque chose comme "lxc-start --name foo"
.
Le conteneur LXC devrait maintenant pouvoir charger et décharger les modules du noyau.