LXC konuk makinesine bir çekirdek modülünü nasıl kurabilirim?


13

Bir LXC konuk makinesine OpenStack DevStack kurmaya çalışıyorum. DevStack'ın paketlerinden biri yeni bir çekirdek modülü gerektirir, ancak LXC misafirinde modprobe çalıştırmaya çalıştığımda bir hata alıyorum:

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 konuk makinem için bu modülü nasıl kurabilirim?

Yanıtlar:


13

Kısa cevap, yapamazsınız. LXC kapları çekirdeklerini ana bilgisayarla paylaşır ve varsayılan olarak modül yüklemesine izin verilmez (bu oldukça tehlikeli olacaktır).

Standart öneri, kabı başlatmadan önce herhangi bir modülün ana bilgisayara yüklenmesidir. Bunu iyi bir eski başlangıç ​​komut dosyasıyla veya bir lxc kancası kullanarak yapabilirsiniz (ayrıntılar için buradaki son yazıma bakın: https://www.stgraber.org/2013/12/23/lxc-1-0-some- daha gelişmiş kapsayıcı kullanımı / )


1

Bu cevabın amaçları için, kapsayıcınızın "foo" olarak adlandırıldığını varsayalım.

BÖLÜM A

  1. Ana bilgisayardan, /var/lib/lxc/foo/configyönergelerimin bir şey kırması durumunda bir kopyasını kaydedin .

  2. Kabiliyeti korumak için SYS_MODULE kabınızı yapılandırmanız gerekir .

    Böyle bir konfigürasyonun bu kaba, çekirdeği ve dolayısıyla konağı devralma kabiliyeti verdiğini unutmayın .

    Bunu yapmak için, "lxc.cap.drop"veya "lxc.cap.keep"yapılandırma satırını değiştirmek isteyeceksiniz .

    Şununla oluşturulmuş bir Ubuntu 19.04 konuk çalıştırıyorsanız "lxc-create --name foo --template download -- ...":

    • /var/lib/lxc/foo/config bir satır içerecek

      lxc.include = /usr/share/lxc/ubuntu.common.conf
      
    • /usr/share/lxc/ubuntu.common.conf bir satır içerecek

      lxc.include = /usr/share/lxc/config/common.conf
      
    • /usr/share/lxc/config/common.conf böyle bir çizgi içerecek

      lxc.cap.drop = mac_admin mac_override sys_time sys_module sys_rawio
      

Bu son satırı sonuna kadar /var/lib/lxc/foo/config(veya sonrasındaki herhangi bir yere "include /usr/share/lxc/ubuntu.common.conf") kopyalamalı ve sonra "sys_module"bu listeden silmelisiniz .

Bölüm B

Kapta çekirdek modüllerinizin bir kopyasına ihtiyacınız var.

Ana makineniz bir Ubuntu çekirdeği çalıştırıyorsa, konuktan benzer bir şey yapabilirsiniz "sudo apt install kernel-image-$(uname -r)".

Aksi takdirde, ana bilgisayardan böyle bir şey yapmanız gerekebilir (kapsayıcınızın "foo" olduğu varsayılarak):

mkdir -p /var/lib/lxc/foo/rootfs/lib/modules
cp -apr /lib/modules/$(uname -r) /var/lib/lxc/foo/rootfs/lib/modules/

Bundan sonra, konuk foo çalışıyorsa kapatın ve sonra böyle bir şeyle yeniden başlatın "lxc-start --name foo".

LXC konteyneri artık çekirdek modüllerini yükleyebilmeli ve boşaltabilmelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.