Câu hỏi LXC USB Device Passthrough


Tôi đang cố gắng để tạo ra một container LXC chạy mythtv (máy chủ) .. mà cần truy cập vào bộ điều chỉnh USB

Dường như có một chút thông tin về cách chuyển thiết bị USB qua một container LXC

Bài viết này thảo luận về sự cần thiết phải thiết lập cgroups một cách thích hợp https://unix.stackexchange.com/questions/137931/usb-passthrough-for-lxc-containers

Máy chủ là Ubuntu 14.04 (Trusty) đang chạy thành công các container LXC không có đặc quyền khác được truy cập thông qua X2Go và trực tiếp đến X11 (1 của mỗi loại chạy "vĩnh viễn" và hoạt động tốt). Cấu hình cơ sở có (chỉ) đã được thay đổi để đặt vùng lưu trữ vùng chứa ở vị trí tùy chỉnh (phân vùng LVM chuyên dụng).

Thùng chứa được đề cập là (a) đặc quyền (b) chạy Ubuntu Trusty AMD64 (c) có nhóm cgroup được đặt trong tệp cấu hình "lxc.cgroup.devices.allow = c 189: * rwm" có vẻ thích hợp cho rằng chính / nhỏ id của các thiết bị USB được đề cập được tìm thấy bằng cách sử dụng "ls -la / dev / bus / usb / 003 /"

Apparmor dường như không phải là vấn đề chính (mặc dù tôi có thể sai) Tôi đã thử thiết lập "lxc.aa_profile = unconfined", mà dường như không giúp được gì. Tôi cũng tạo ra một hồ sơ Apparmor tùy chỉnh mà chỉ dẫn đến một loạt các lỗi cgroup. Tôi stumped và thậm chí không biết bắt đầu từ đâu - Google tìm kiếm bật lên các cuộc thảo luận của Libvirt dựa trên USB passthrough và một bản vá cho LXC USB passthrough, nhưng không có hướng dẫn cho các tình huống không Libvirt

Ai đó có thể vui lòng tư vấn cho bạn cách thực hiện việc này.

Cảm ơn


4
2017-11-03 23:39


gốc




Các câu trả lời:


Về cơ bản câu trả lời là -

  1. Bạn cần phải gắn kết các thiết bị chủ mà bạn muốn truy cập ví dụ.

    mount --bind /dev/dvb /path_to_your_container/rootfs/dev/dvb 

....     hãy nhớ tạo thư mục đích trước

  1. Đảm bảo bạn đang sử dụng vùng chứa đặc quyền hoặc bạn đã cấp cho máy chủ lưu trữ owner truy cập vùng chứa không có đặc quyền đối với (các) thiết bị mà bạn đã gắn phía trên
  2. Thêm mục cgroup có liên quan vào tệp cấu hình vùng chứa của bạn (hoặc /etc/lxc/lx.conf cho tất cả các container đặc quyền). lxc.cgroup.devices.allow = c xxx:* rwm Ở đâu xxx = "chính" một phần của chính: id nhỏ được tìm thấy bằng cách sử dụng ls -la /dev/dvb Nói ..... 212 cho DVB hoặc 189 cho USB (trên hệ thống của tôi), do đó đối với trường hợp của tôi, dvb truy cập được cấp qua lxc.cgroup.devices.allow = c 212:* rwm

Thay đổi Apparmor là không cần thiết .. bind gắn kết và nhóm cgroup là đủ để cho phép truy cập container tới các thiết bị DVB (mà xảy ra là thiết bị USB NHƯNG nó không cần thiết để cho phép truy cập vào các thiết bị "USB" ... chỉ là các thiết bị DVB trong / dev / dvb)


3
2017-11-05 01:59