Как установить модуль ядра на гостевой компьютер LXC?

Я пытаюсь установить OpenStack DevStack на гостевой компьютер LXC. Для одного из пакетов DevStack требуется новый модуль ядра, но когда я пытаюсь запустить modprobe на гостевой машине LXC, я получаю сообщение об ошибке:

ubuntu@lxc$ sudo modprobe scsi_transport_iscsi
FATAL: Could not load /lib/modules/3.2.0-48-generic/modules.dep: No such file or directory

Как я могу установить этот модуль на мою гостевую машину LXC?

12
задан 1 July 2013 в 04:07

2 ответа

Короткий ответ: нельзя. Контейнеры LXC делят свое ядро ​​с хостом и по умолчанию не могут загружать модули (поскольку это было бы довольно опасно).

Стандартная рекомендация - загружать любой модуль на хост до запуска контейнера. Вы можете сделать это с помощью старого доброго сценария инициализации или с помощью хука lxc (подробности см. В моем недавнем посте здесь: https://www.stgraber.org/2013/12/23/lxc-1-0 -Некоторое-более продвинутое-контейнер использование / )

0
ответ дан 1 July 2013 в 04:07

В целях этого ответа я позволяю нам предположить, что Ваш контейнер называют "нечто".

  1. От хоста, сохраните копию/var/lib/lxc/foo/config, в случае, если мои инструкции повреждают что-то.

  2. необходимо будет настроить контейнер для хранения возможности SYS_MODULE. Знайте, что такая конфигурация дает тому контейнеру способность принять ядро и таким образом хост. Чтобы сделать это, Вы хотите изменить "lxc.cap.drop" или "lxc.cap.keep" строку конфигурации. Если Вы выполняете гостя Ubuntu 19.04, который был создан с, "lxc-создают - нечто имени - шаблонная загрузка-..." затем...

файл/var/lib/lxc/foo/config будет содержать строку "lxc.include =/usr/share/lxc/ubuntu.common.conf", файл/usr/share/lxc/ubuntu.common.conf будет содержать строку "lxc.include =/usr/share/lxc/config/common.conf", и файл/usr/share/lxc/config/common.conf будет содержать строку как это:

lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio

необходимо скопировать ту последнюю строку в конец/var/lib/lxc/foo/config (или любое место после того, как "включают/usr/share/lxc/ubuntu.common.conf"), и затем удалите "sys_module" из того списка.

  1. Вам нужна копия Ваших модулей ядра в контейнере. Если Ваш хост выполняет ядро Ubuntu, то Вы можете делать что-то как "sudo способное изображение ядра установки - $ (uname-r)" от гостя. Иначе от хоста, возможно, должен сделать что-то вроде этого (предположение, что Ваш контейнер называют "нечто"):

mkdir-p/var/lib/lxc/foo/rootfs/lib/modules CP - апрель/lib/modules/$ (uname-r)/var/lib/lxc/foo/rootfs/lib/modules /

  1. После этого, закрывает гостевое нечто, если это работает, и затем перезапустите его с чем-то как, "lxc-запускаются - нечто имени".

контейнер LXC должен теперь смочь загрузить и разгрузить модули ядра.

1
ответ дан 11 October 2019 в 11:56

Другие вопросы по тегам:

Похожие вопросы: