Na potrzeby tej odpowiedzi załóżmy, że Twój kontener ma nazwę „foo”.
CZĘŚĆ A
Od hosta zapisz kopię /var/lib/lxc/foo/config
, na wypadek, gdyby moje instrukcje coś popsuły.
Musisz skonfigurować swój kontener, aby zachować jego SYS_MODULE
możliwości.
Należy pamiętać, że taka konfiguracja umożliwia temu kontenerowi przejęcie jądra, a tym samym hosta .
Aby to zrobić, będziesz chciał zmienić linię "lxc.cap.drop"
lub "lxc.cap.keep"
.
Jeśli korzystasz z gościa Ubuntu 19.04, który został utworzony z "lxc-create --name foo --template download -- ..."
:
/var/lib/lxc/foo/config
będzie zawierać linię
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
będzie zawierać linię
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
będzie zawierać taką linię
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
Powinieneś skopiować ten ostatni wiersz na koniec /var/lib/lxc/foo/config
(lub dowolne miejsce po "include /usr/share/lxc/ubuntu.common.conf"
), a następnie usunąć "sys_module"
z tej listy.
Część B
Potrzebujesz kopii swoich modułów jądra w kontenerze.
Jeśli na twoim hoście działa jądro Ubuntu, możesz być w stanie zrobić coś takiego jak "sudo apt install kernel-image-$(uname -r)"
gość.
W przeciwnym razie od hosta może być konieczne wykonanie czegoś takiego (zakładając, że kontener ma nazwę „foo”):
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
Następnie zamknij gościa foo, jeśli jest uruchomiony, a następnie uruchom go ponownie za pomocą czegoś podobnego "lxc-start --name foo"
.
Kontener LXC powinien teraz móc ładować i zwalniać moduły jądra.