Đối với mục đích của câu trả lời này, giả sử container của bạn được đặt tên là "" foo ".
PHẦN A
Từ máy chủ lưu trữ, lưu một bản sao /var/lib/lxc/foo/config
, trong trường hợp hướng dẫn của tôi phá vỡ một cái gì đó.
Bạn sẽ cần phải cấu hình container của bạn để giữ SYS_MODULE
khả năng.
Xin lưu ý rằng cấu hình như vậy cung cấp cho vùng chứa đó khả năng chiếm hạt nhân và do đó máy chủ lưu trữ .
Để làm điều này, bạn sẽ muốn thay đổi dòng "lxc.cap.drop"
hoặc "lxc.cap.keep"
cấu hình.
Nếu bạn đang chạy một khách Ubuntu 19.04 đã được tạo "lxc-create --name foo --template download -- ..."
sau đó:
/var/lib/lxc/foo/config
sẽ chứa một dòng
lxc.include = /usr/share/lxc/ubuntu.common.conf
/usr/share/lxc/ubuntu.common.conf
sẽ chứa một dòng
lxc.include = /usr/share/lxc/config/common.conf
/usr/share/lxc/config/common.conf
sẽ chứa một dòng như thế này
lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
Bạn nên sao chép dòng cuối cùng vào cuối /var/lib/lxc/foo/config
(hoặc bất kỳ vị trí nào sau "include /usr/share/lxc/ubuntu.common.conf"
) và sau đó xóa "sys_module"
khỏi danh sách đó.
Phần B
Bạn cần một bản sao của các mô-đun hạt nhân của bạn trong thùng chứa.
Nếu máy chủ của bạn đang chạy kernel Ubuntu, thì bạn có thể làm điều gì đó giống như "sudo apt install kernel-image-$(uname -r)"
từ khách.
Mặt khác từ máy chủ lưu trữ, có thể cần phải làm một cái gì đó như thế này (giả sử container của bạn được đặt tên là "foo"):
mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/
Sau đó, tắt foo khách nếu nó đang chạy, và sau đó khởi động lại nó với một cái gì đó như "lxc-start --name foo"
.
Bộ chứa LXC bây giờ có thể tải và dỡ bỏ các mô-đun hạt nhân.