Tôi đang cố gắng thiết lập máy Linux của mình để chạy nhiều HĐH khách, một trong số đó là Windows VM và một máy chứa Linux khác. Mục tiêu ở đây là để ngăn tôi làm rối hệ thống máy chủ, trong khi được tự do vận hành hệ điều hành cơ sở và chơi với phần cứng máy chủ. Cuối cùng, trên cơ sở chạy máy tính để bàn của tôi trong container, tôi hy vọng sẽ chạy các mô phỏng tăng tốc đồ họa, v.v. Có lẽ libvirt sẽ hoạt động tốt như với LXC, nhưng chế độ đặc quyền của docker giúp dễ dàng hơn khi không phải định cấu hình thiết bị cho bộ chứa.
Tôi đã thực hiện một nghiên cứu nhỏ và đưa ra một vài câu trả lời, nhưng tôi gặp khó khăn khi kết hợp tất cả lại.
Bối cảnh ở LXC
Chạy X từ LXC đã giúp tôi xem cách tôi có thể định cấu hình bộ chứa với (ví dụ):
lxc.cgroup.devices.allow = c 226:0 rwm
và sử dụng
mknod -m 666 dri/card0 c 226 0
bên trong container để kết nối với thiết bị chủ.
Docker
Từ cuda - Sử dụng GPU từ bộ chứa docker , tôi thấy rằng tôi có thể có cùng thiết lập để hoạt động trong Docker với phụ trợ LXC.
Tôi nhận ra rằng nếu một container docker được chạy ở chế độ đặc quyền, thì nó có thể truy cập GPU bình thường mà không cần cấu hình bổ sung này. Vì vậy, tôi đã kích hoạt một hệ thống cơ sở, cài đặt trình điều khiển đồ họa, xorg-server, xorg-xinit và trình quản lý cửa sổ để kiểm tra.
Lần thử đầu tiên
# startx
Cannot run from a console (or some message like that)
Được rồi, tôi nghĩ rằng tôi đã ở trên tty2.
# tty
/dev/console
Đó không phải là điều tôi mong đợi.
# chvt 2
# tty
/dev/tty2
Vâng, nó xuất hiện như thể làm việc. Hãy thử # startx
lại. Nó khởi động trình quản lý cửa sổ, với con trỏ ở giữa. Không có phản ứng chuột. Không có phản ứng bàn phím. Hãy thử thay đổi tty với Ctrl-Alt+F3
. Không phản hồi. Chà, có vẻ như tôi sẽ phải khởi động lại lạnh.
Thử lần thứ hai
# tty
/dev/console
# chvt 2
# tty
/dev/console
Gì? Tôi không thể thay đổi nó bây giờ?
Tiếp tục
Sau khi thử một lần khác, tôi đã nhận được nó để thay đổi tty và startx đóng băng máy tính một lần nữa.
Gì bây giờ?
Vì vậy, bây giờ tôi đang ở một xung đột. Tôi thực sự muốn có thể sử dụng một container - Docker ưa thích, LXC với libvirt cũng được chấp nhận - để chạy như hệ điều hành hàng ngày của tôi trong khi vẫn giữ một hệ điều hành máy chủ nạc.
Là tốt nhất để sử dụng Docker với chế độ đặc quyền ở đây, hoặc sử dụng phụ trợ LXC rõ ràng và thử các tùy chọn được liệt kê ở trên?
Tôi đã lên kế hoạch sử dụng libvirt (có thể theo vagrant-libvirt) để quản lý Windows vm của mình, vậy tôi có thể sử dụng libvirt hoặc vagrant-LXC trong trường hợp này không?
Chỉnh sửa: đọc LXC so với Docker , tôi có cảm giác rằng các container Docker và Docker có nghĩa là cho các môi trường ứng dụng đơn, có lẽ tốt nhất là sử dụng LXC thay vì Docker để chạy như hệ điều hành hàng ngày của tôi. Suy nghĩ?
Chỉnh sửa: Tôi đã phát hiện ra rằng, giống như docker, có một lệnh lxc-device cho phép tôi bỏ qua các nhóm và các bước mknod. Trong khi trước khi tôi có thể có x để khởi động và đóng băng hệ thống của mình, thì bây giờ nó chỉ là lỗi. Có lẽ tôi có thể tìm ra điều này cuối cùng, vì dường như không có ai ở ngoài đó.
Cập nhật: Tôi có chuột làm việc. Trên máy khách, tôi đã cài đặt xf86-input-mouse và xf86-input-keyboard. Trên máy chủ, tôi chạy như sau:
# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2
Làm!
startx
với exec twm
, nhưng toàn bộ điều đã bị đóng băng từ quan điểm của tôi. Không có phản ứng với bàn phím hoặc chuột.