Nehmen wir für die Beantwortung dieser Frage an, Ihr Container heißt "foo".
TEIL A
Speichern Sie vom Host eine Kopie von /var/lib/lxc/foo/config
, falls meine Anweisungen etwas beschädigen.
Sie müssen Ihren Container konfigurieren, um die SYS_MODULE
Funktionalität beizubehalten.
Beachten Sie, dass eine solche Konfiguration diesem Container die Möglichkeit gibt, den Kernel und damit den Host zu übernehmen .
Dazu müssen Sie die Konfigurationszeile "lxc.cap.drop"
oder ändern "lxc.cap.keep"
.
Wenn Sie einen Ubuntu 19.04-Gast ausführen, der mit erstellt wurde "lxc-create --name foo --template download -- ..."
:
/var/lib/lxc/foo/config
wird eine Zeile enthalten
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
wird eine Zeile enthalten
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
wird eine Zeile wie diese enthalten
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
Sie sollten diese letzte Zeile an das Ende von /var/lib/lxc/foo/config
(oder an eine beliebige Stelle nach "include /usr/share/lxc/ubuntu.common.conf"
) kopieren und dann "sys_module"
aus dieser Liste löschen .
Teil B
Sie benötigen eine Kopie Ihrer Kernelmodule im Container.
Wenn Ihr Host einen Ubuntu-Kernel ausführt, können Sie möglicherweise so etwas wie "sudo apt install kernel-image-$(uname -r)"
vom Gast ausführen.
Andernfalls muss der Host möglicherweise Folgendes ausführen (vorausgesetzt, Ihr Container heißt "foo"):
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
Fahren Sie danach das Guest Foo herunter, wenn es ausgeführt wird, und starten Sie es dann mit so etwas wie neu "lxc-start --name foo"
.
Der LXC-Container sollte nun in der Lage sein, Kernelmodule zu laden und zu entladen.