Я намагаюся налаштувати свою машину Linux для запуску декількох гостьових ОС, однією з них є VM Windows, а інша - контейнер Linux. Мета полягає в тому, щоб запобігти мені зіпсувати хост-систему, будучи вільним керувати базовою операційною системою та грати з обладнанням хоста. Врешті-решт, поверх роботи мого робочого столу в контейнері, я сподіваюся запустити графічні прискорені імітації тощо. Оскільки у Докера є така приємна версія git-подібної версії контейнерів, здавалося б, було б гарною ідеєю її використовувати. Можливо, libvirt буде так само добре з LXC, але привілейований режим докера полегшує не налаштовувати пристрої на контейнер.
Я провів невелике дослідження і вже придумав декілька відповідей, але у мене виникають проблеми зібрати все це разом.
Фон в LXC
Запуск X від LXC допоміг мені зрозуміти, як я можу налаштувати контейнер з (тобто):
lxc.cgroup.devices.allow = c 226:0 rwm
і використання
mknod -m 666 dri/card0 c 226 0
всередині контейнера для підключення до хост-пристрою.
Докер
Від cuda - Використовуючи GPU з докерного контейнера , я побачив, що я можу отримати таку ж установку, щоб працювати в Docker із сервісом LXC.
Мені здалося, що якщо контейнер докера запускається в привілейованому режимі, він може отримати доступ до GPU нормально без додаткової конфігурації. Отже, я запустив базову систему, встановив графічні драйвери, xorg-сервер, xorg-xinit та менеджер вікон, щоб перевірити це.
Спочатку спробуйте
# startx
Cannot run from a console (or some message like that)
Гаразд, я думав, що я на tty2.
# tty
/dev/console
Це не те, чого я очікував.
# chvt 2
# tty
/dev/tty2
Ну, схоже, що це спрацювало. Спробуємо ще # startx
раз. Він запустив менеджер вікон із курсором у центрі. Немає відповіді миші. Немає відповіді клавіатури Спробуємо змінити tty на Ctrl-Alt+F3
. Немає відповіді. Ну, схоже, мені доведеться перезавантажувати холод.
Друга спроба
# tty
/dev/console
# chvt 2
# tty
/dev/console
Що? Я не можу це змінити зараз?
Продовження
Спробувавши інший раз, я змусив її змінити tty, і startx знову заморозив комп'ютер.
Що тепер?
Отже, я зараз нападаю. Я дуже хочу, щоб я міг використовувати контейнер - вважав за краще Докер, LXC з libvirt також прийнятний - запускати як мою щоденну операційну систему, зберігаючи пісну хост ОС.
Тут найкраще використовувати Docker з привілейованим режимом або використовувати явний вихідний сервер LXC та спробувати перелічені вище варіанти?
Я вже планую використовувати libvirt (можливо, за допомогою vagrant-libvirt) для управління моїм Windows vm, тож було б приблизно таким же чином для мене використовувати libvirt або vagrant-LXC?
Редагувати: читаючи LXC проти Docker , я відчуваю, що оскільки контейнери Docker і Docker призначені для середовищ із одним додатком, можливо, було б найкраще використовувати LXC замість Docker для роботи як моєї щоденної операційної системи. Думки?
Редагувати: Я виявив, що, як і докер, є команда lxc-пристрою, яка дозволяє мені обходити групи та кроки mknod. Якщо раніше мені вдалося змусити x запустити та заморозити свою систему, це просто помилки. Можливо, я можу це врешті-решт зрозуміти, оскільки, здається, нікого там немає.
Оновлення: у мене працює миша. В гостях я встановив xf86-input-mouse та xf86-input-клавіатуру. В хості я побіг наступне:
# 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
Працює!
startx
з exec twm
, але все це було заморожено з моєї точки зору. Немає відповіді на клавіатурі чи миші.