Linux makinemi, biri Windows VM, diğeri de Linux kapsayıcısı olmak üzere birden fazla konuk işletim sistemi çalıştıracak şekilde ayarlamaya çalışıyorum. Buradaki amaç, ana işletim sistemini çalıştırmak ve ana bilgisayar donanımı ile oynamakta özgürken, ana bilgisayar sistemini bozmamı engellemektir. Sonunda, masaüstümü konteynerde çalıştırmanın üstünde, grafik hızlandırmalı simülasyonlar vb. Çalıştırmayı umuyorum. Docker, yerleşik konteynerlerin bu kadar güzel git benzeri versiyonuna sahip olduğundan, kullanmak iyi bir fikir gibi görünüyordu. Belki libvirt LXC ile aynı şeyi yapar, ancak docker'in ayrıcalıklı modu, aygıtları kapsayıcıya yapılandırmak zorunda kalmanızı kolaylaştırır.
Biraz araştırma yaptım ve birkaç cevap buldum, ama hepsini bir araya getirmekte zorlanıyorum.
LXC'de arka plan
X'i LXC'den çalıştırmak , bir kapsayıcıyı nasıl yapılandırabileceğimi görmemde bana yardımcı oldu (ie):
lxc.cgroup.devices.allow = c 226:0 rwm
ve kullanarak
mknod -m 666 dri/card0 c 226 0
ana cihaza bağlanmak için kabın içinde.
Liman işçisi
Gönderen cuda - Bir liman işçisi kabından GPU'nun kullanılması , ben LXC arka ucuyla Docker çalışma aynı kurulumu alabilirsiniz gördük.
Bir docker konteyneri ayrıcalıklı modda çalıştırılırsa, bu ekstra yapılandırma olmadan normalde GPU'ya erişebileceği anlaşıldı. Bu nedenle, bir temel sistemi çalıştırdım, grafik sürücüleri, xorg-sunucusu, xorg-xinit ve bir pencere yöneticisi test ettim.
İlk deneme
# startx
Cannot run from a console (or some message like that)
Tamam, tty2'de olduğumu sanıyordum.
# tty
/dev/console
Beklediğim bu değil.
# chvt 2
# tty
/dev/tty2
Sanki işe yaramış gibi görünüyor. # startx
Tekrar deneyelim . İmleç ortada olarak pencere yöneticisini başlattı. Fare yanıtı yok. Klavye yanıtı yok. Şimdi tty ile değiştirmeye çalışalım Ctrl-Alt+F3
. Cevap yok. Görünüşe göre soğuğu yeniden başlatmam gerekecek.
İkinci deneme
# tty
/dev/console
# chvt 2
# tty
/dev/console
Ne? Şimdi değiştiremiyorum?
Devam etti
Başka bir zaman denedikten sonra, tty değiştirmek için aldım ve startx bilgisayarı tekrar dondu.
Şimdi ne var?
Şimdi bir pusuladayım. Gerçekten bir konteyner kullanmak istiyorum - Docker tercih, libvirt ile LXC de kabul edilebilir - yalın bir ana işletim sistemi tutarken günlük işletim sistemim olarak çalıştırmak için kabul edilebilir.
Docker'ı burada ayrıcalıklı modda kullanmak veya açık LXC arka ucunu kullanmak ve yukarıda listelenen seçenekleri denemek en iyisidir?
Zaten Windows vm yönetmek için libvirt (muhtemelen vagrant-libvirt altında) kullanmayı planlıyorum, bu yüzden bu durumda libvirt veya vagrant-LXC kullanmak benim için aynı olurdu?
Düzenleme: LXC vs Docker okuma , Docker ve Docker kapsayıcılar tek uygulama ortamları için tasarlandığından, belki de günlük işletim sistemim olarak çalıştırmak için Docker yerine LXC kullanmak en iyi olacağını hissediyorum. Düşünceler?
Düzenleme: Docker gibi, bana cgroups ve mknod adımları atlamak için izin veren bir lxc cihaz komutu olduğunu keşfettim. X'i sistemimi başlatmaya ve dondurmaya başlayabilmemden önce, şimdi hata veriyor. Belki sonunda çözebilirim, çünkü orada kimse yok gibi görünüyor.
Güncelleme: Farem çalışıyor. Konukta xf86-giriş-fare ve xf86-giriş-klavye kurdum. Ana bilgisayarda, aşağıdakileri çalıştırdım:
# 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
İşler!
startx
ile exec twm
ama her şey benim açımdan donduruldu. Klavye veya fareye yanıt yok.