Próbuję skonfigurować mój komputer z systemem Linux do uruchamiania wielu systemów-gości, jeden z nich to VM maszyny Windows, a drugi kontener Linux. Chodzi mi o to, żeby nie zepsuć systemu hosta, mając jednocześnie swobodę obsługi podstawowego systemu operacyjnego i zabawy ze sprzętem hosta. W końcu, poza uruchomieniem pulpitu w kontenerze, mam nadzieję uruchomić symulacje przyspieszone grafiką itp. Ponieważ Docker ma tak ładną wbudowaną wersję kontenerów jak w git, wydaje się, że warto z niego korzystać. Być może libvirt przydałby się równie dobrze z LXC, ale tryb uprzywilejowany dokera ułatwia konfigurację urządzeń w kontenerze.
Przeprowadziłem już kilka badań i znalazłem już kilka odpowiedzi, ale mam problem z ich złożeniem.
Tło w LXC
Uruchomienie X z LXC pomogło mi zobaczyć, jak mogę skonfigurować kontener z (tj.):
lxc.cgroup.devices.allow = c 226:0 rwm
i za pomocą
mknod -m 666 dri/card0 c 226 0
wewnątrz kontenera, aby połączyć się z urządzeniem hosta.
Doker
Od cuda - Używając GPU z kontenera dokującego , zobaczyłem, że mogę uzyskać taką samą konfigurację do pracy w Dockerze z backendem LXC.
Wydawało mi się, że jeśli kontener dokera jest uruchomiony w trybie uprzywilejowanym, może normalnie uzyskać dostęp do GPU bez tej dodatkowej konfiguracji. Uruchomiłem więc system podstawowy, zainstalowałem sterowniki graficzne, xorg-server, xorg-xinit i menedżera okien, aby to przetestować.
Pierwsza próba
# startx
Cannot run from a console (or some message like that)
Okej, myślałem, że jestem na tty2.
# tty
/dev/console
Nie tego się spodziewałem.
# chvt 2
# tty
/dev/tty2
Wygląda na to, że zadziałało. Spróbujmy # startx
jeszcze raz. Uruchomił menedżera okien, z kursorem pośrodku. Brak odpowiedzi myszy. Brak reakcji klawiatury. Spróbujmy zmienić tty za pomocą Ctrl-Alt+F3
. Brak odpowiedzi. Wygląda na to, że będę musiał zrestartować komputer na zimno.
Druga próba
# tty
/dev/console
# chvt 2
# tty
/dev/console
Co? Nie mogę tego teraz zmienić?
Nieprzerwany
Po kolejnej próbie udało mi się zmienić tty i startx ponownie zamroził komputer.
Co teraz?
Jestem teraz w impasie. Naprawdę chcę mieć możliwość korzystania z kontenera - preferowany Docker, dopuszczalne jest także używanie LXC z libvirt - jako mojego codziennego systemu operacyjnego, z zachowaniem systemu operacyjnego hosta lean.
Czy najlepiej tutaj używać Dockera z trybem uprzywilejowanym, czy też użyć jawnego zaplecza LXC i wypróbować opcje wymienione powyżej?
Planuję już używać libvirt (prawdopodobnie pod vagrant-libvirt) do zarządzania moją maszyną wirtualną z systemem Windows, więc czy w takim przypadku korzystanie z libvirt lub vagrant-LXC byłoby podobne?
Edycja: czytając LXC vs. Docker , mam wrażenie, że ponieważ Docker i kontenery Docker są przeznaczone do środowisk z jedną aplikacją, być może lepiej byłoby użyć LXC zamiast Docker do uruchamiania jako mojego codziennego systemu operacyjnego. Myśli?
Edycja: Odkryłem, że podobnie jak doker, istnieje polecenie lxc-device, które pozwala mi ominąć grupy cgroups i kroki mknod. Podczas gdy zanim byłem w stanie uzyskać x, aby uruchomić i zamrozić mój system, teraz po prostu błędy. Być może w końcu uda mi się to rozgryźć, ponieważ wydaje się, że nikogo tam nie ma.
Aktualizacja: Mam działającą mysz. Na gościu zainstalowałem xf86-input-mouse i xf86-input-keyboard. Na hoście uruchomiłem następujące:
# 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
Pracuje!
startx
się exec twm
, ale cała sprawa została zamrożona z mojego punktu widzenia. Brak reakcji na klawiaturę lub mysz.