web-dev-qa-db-ja.com

proxmoxの仮想コンテナにcudaドライバーをインストールします

ホストマシンに2.6.32-17-pveをインストールしました。

    02:00.0 VGA compatible controller: NVIDIA Corporation Device 11c6 (rev a1) (prog-if 00 [VGA controller])
    Subsystem: Giga-byte Technology Device 3557
    Flags: fast devsel, IRQ 16
    Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
    Memory at c0000000 (64-bit, prefetchable) [size=256M]
    Memory at d0000000 (64-bit, prefetchable) [size=32M]
    I/O ports at e000 [size=128]
    Expansion ROM at fb000000 [disabled] [size=512K]
    Capabilities: [60] Power Management version 3
    Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
    Capabilities: [78] Express Endpoint, MSI 00
    Capabilities: [b4] Vendor Specific Information: Len=14 <?>
    Capabilities: [100] Virtual Channel
    Capabilities: [128] Power Budgeting <?>
    Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
    Capabilities: [900] #19

Ubuntu 12.04の仮想コンテナーを作成した後、次のようにcuda-driverをインストールしようとしました。

  1. ホストではvzctl set 100 --pci_add 02:00.0、vz印刷ではlspci -v

    02:00.0 VGA compatible controller: NVIDIA Corporation Device 11c6 (rev a1) (prog-if 00 [VGA controller])
    Subsystem: Giga-byte Technology Device 3557
    Flags: fast devsel, IRQ 16
    Memory at fa000000 (32-bit, non-prefetchable) [size=16M]
    Memory at c0000000 (64-bit, prefetchable) [size=256M]
    Memory at d0000000 (64-bit, prefetchable) [size=32M]
    I/O ports at e000 [size=128]
    Expansion ROM at fb000000 [disabled] [size=512K]
    Capabilities: <access denied>
    Kernel modules: nouveau, nvidiafb
    
  2. Cudaのインストールに推奨されるパッケージをインストールし、gccバージョンを4.4に変更します

  3. Pveのカーネルヘッダーをインストールするには、pveのsources.listを追加します:deb http://download.proxmox.com/debian squeeze pveそしてSudo apt-get install pve-headers-2.6.32-17-pveを実行します
  4. 今、私はドライバーをインストールしようとしていますが、:

    ERROR: Unable to load the kernel module 'nvidia.ko'.  This happens most
    frequently when this kernel module was built against the wrong or
    improperly configured kernel sources, with a version of gcc that
    differs from the one used to build the target kernel, or if a driver
    such as rivafb, nvidiafb, or nouveau is present and prevents the
    NVIDIA kernel module from obtaining ownership of the NVIDIA graphics
    device(s), or NVIDIA GPU installed in this system is not supported
    by this NVIDIA Linux graphics driver release.
    

その理由は、vzがグラフィックデバイスの所有権を取得していないためかもしれませんが、それを修正する方法がわかりません。誰かが私にいくつかの提案をすることができますか?

ありがとう

3
wush978

OpenVZコンテナ内からのカーネルモジュールのロードは禁止されています。カーネルはホストとすべてのコンテナの間で共有されるため、これはセキュリティ対策です。

内容might動作:必要なカーネルドライバーをホストにロードし、-devnodesを使用して関連するデバイスへのアクセスを追加し、万が一の場合に備えて--capabilityを使用してすべての機能を有効にします

1
Alec Istomin