LINUX.ORG.RU

Запуск qemu виртуалки в отдельной tty консоли

 


3

2

На ноуте установлен Debian 9 и virt-manager. Интересует следующий вопрос: возможно ли работать с виртуалкой в отдельной X-сессии ? Собственно для чего нужно: на хост системе у меня только виртуалки, для работы и учебы отдельные системы, не совсем удобно между ними переключаться, особенно при работе в полноэкранном режиме. Хочу сделать так чтобы на хосте залочил экран, нажал ctrl+alt+f4 и попал в гостевую систему.

Тут http://dmzik.blogspot.com/2013/05/virtualbox-tty.html автор проделал то что мне нужно с virtualbox-ом , как такое реализовать в qemu/virt-manager ?

Ну попробуй через xinit, как там и написано. Только замени на свою строку qemu, а потом отписывай ошибки. У меня, например, сходу запустилось с моей стандартной, но отвалилась пульса на основной сессии. Загрузилось, но не работает клавиатура и не ввести пароль.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

Арч. Играл музончик, переключился на tty2. На первом запущена сессия плазмы с пульс аудио. Запустил так:

xinit /usr/bin/qemu-system-x86_64 ... -soundhw ac97 -- /usr/bin/Xorg :1
Виртуалка запустилась на tty3. Клавиатура на нажатия кнопок не реагирует. Звук в основной сессии отвалился. На tty2:
pulseaudio: pa_contect_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: could not init 'pa' audio driver
/etc/var/log/Xorg.log, состоит преимущественно из такого:
[  1825.220] (II) event1  - Power Button: is tagged by udev as: Keyboard
[  1825.220] (II) event1  - Power Button: device is a keyboard
[  1825.221] (II) event2  - Sleep Button: is tagged by udev as: Keyboard
[  1825.221] (II) event2  - Sleep Button: device is a keyboard
[  1825.221] (II) event15 - Integrated_Webcam_HD: Integrate: is tagged by udev as: Keyboard
[  1825.221] (II) event15 - Integrated_Webcam_HD: Integrate: device is a keyboard
[  1825.222] (II) event5  - COMPANY USB Device: is tagged by udev as: Keyboard
[  1825.222] (II) event5  - COMPANY USB Device: device is a keyboard
[  1825.223] (II) event6  - COMPANY USB Device: is tagged by udev as: Mouse
[  1825.223] (II) event6  - COMPANY USB Device: device is a pointer
[  1825.224] (II) event9  - COMPANY USB Device Consumer Control: is tagged by udev as: Keyboard
[  1825.224] (II) event9  - COMPANY USB Device Consumer Control: device is a keyboard
[  1825.225] (II) event7  - COMPANY USB Device Keyboard: is tagged by udev as: Keyboard
[  1825.225] (II) event7  - COMPANY USB Device Keyboard: device is a keyboard
[  1825.225] (II) event8  - COMPANY USB Device System Control: is tagged by udev as: Keyboard
[  1825.225] (II) event8  - COMPANY USB Device System Control: device is a keyboard
[  1825.226] (II) event16 - DLL0798:00 06CB:7E92 Touchpad: is tagged by udev as: Touchpad
[  1825.227] (II) event16 - DLL0798:00 06CB:7E92 Touchpad: device is a touchpad
[  1825.227] (II) event11 - Intel HID events: is tagged by udev as: Keyboard
[  1825.227] (II) event11 - Intel HID events: device is a keyboard
[  1825.228] (II) event12 - Intel HID 5 button array: is tagged by udev as: Keyboard
[  1825.228] (II) event12 - Intel HID 5 button array: device is a keyboard
[  1825.228] (II) event14 - Dell WMI hotkeys: is tagged by udev as: Keyboard
[  1825.228] (II) event14 - Dell WMI hotkeys: device is a keyboard
[  1825.229] (II) event4  - AT Translated Set 2 keyboard: is tagged by udev as: Keyboard
[  1825.229] (II) event4  - AT Translated Set 2 keyboard: device is a keyboard
[  1825.230] (II) event21 - PS/2 Synaptics TouchPad: is tagged by udev as: Mouse
[  1825.230] (II) event21 - PS/2 Synaptics TouchPad: device is a pointer
[  1825.227] (II) event11 - Intel HID events: device is a keyboard
[  1825.228] (II) event12 - Intel HID 5 button array: is tagged by udev as: Keyboard
[  1825.228] (II) event12 - Intel HID 5 button array: device is a keyboard
[  1825.228] (II) event14 - Dell WMI hotkeys: is tagged by udev as: Keyboard
[  1825.228] (II) event14 - Dell WMI hotkeys: device is a keyboard
[  1825.229] (II) event4  - AT Translated Set 2 keyboard: is tagged by udev as: Keyboard
[  1825.229] (II) event4  - AT Translated Set 2 keyboard: device is a keyboard
[  1825.230] (II) event21 - PS/2 Synaptics TouchPad: is tagged by udev as: Mouse
[  1825.230] (II) event21 - PS/2 Synaptics TouchPad: device is a pointer
[  1832.353] (II) event3  - Power Button: device removed
[  1832.393] (II) event18 - Video Bus: device removed
[  1832.414] (II) event19 - Video Bus: device removed
[  1832.460] (II) event1  - Power Button: device removed
[  1832.485] (II) event2  - Sleep Button: device removed

udev перебирает все девайсы, помечатает клавиатурой, а потом отключает.

fehhner ★★★★★ ()
Ответ на: комментарий от fehhner

Чёт я затупил. Прописал строку запуска виртуалки в ~/.xinitrc, теперь всё работает. Переключаюсь на tty2, пишу startx -- :1, звук и клава везде есть. Почему я раньше так не сделал? Очень удобно и не отвлекаешься лишний раз.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)

Тс, можешь по арчевики добавить себе даже несколько на выбор по аналогии: https://wiki.archlinux.org/index.php/Xinitrc_(Русский)#Создание_выбора_DE/WM_... , только запускать нужную виртуалку напрямую, а не DE.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от mord0d

В System V был /etc/inittab, но systemd его закопало. Теперь городи это на systemd.service.

Но зачем усложнять и делать для этого сервис? Стандартными средствами xinitrc запускается любое количество виртуалок/стимов/чтотамещё в отдельной сессии на отдельном tty.

fehhner ★★★★★ ()
Ответ на: комментарий от mord0d

Можно ещё по аналогии из /usr/share/xsessions создать там файл для отдельной сессии того же стима. Если хочешь сразу его без ДЕ, или под отдельным пользователем запускаешь как основную из Дисплей менеджера. sddm сразу подхватывает,другие dm тоже должны.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от fehhner

Но зачем усложнять и делать для этого сервис?

Чтобы работало вне зависимости от конфигурации Xorg.

Стандартными средствами xinitrc запускается любое количество виртуалок/стимов/чтотамещё в отдельной сессии на отдельном tty.

Но не автоматизированно. Нужно или писать скрипт-обёртку над xinit, либо заводить отдельного пользователя. И не работает с некоторыми DM.

Можно ещё по аналогии из /usr/share/xsessions создать там файл для отдельной сессии

Можно, но опять же не автоматизированно и требует совместимого DM.

Напомню, что некоторые DM используют xinitrc и/или sessions, некоторые используют desktop-файлы.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Нужно или писать скрипт-обёртку над xinit

По линку, выбор прямо в xinit и прописывается.
У меня вот другая проблема. В /etc/default/grub выставил 1920х1080 расширение в виртуалке, с -vga std -full-screen запускается во весь экран. Но стд на моей тачке тормозит... Запускаю через virtio, оно в маленьком окошке на четверть экрана и там сжато до 1920х1080. Никак не могу разобраться, как его во весь экран штатными средствами запустить, без оконного менеджера. Ну или настройку в twm хоть задать какую-то, через него во весь экран пускать.

fehhner ★★★★★ ()
Ответ на: комментарий от fehhner

По линку, выбор прямо в xinit и прописывается.

Я ниже для кого расписал, что не все DM хотят в xinitrc?

grub

без оконного менеджера

Эм… а каким боком late userspace относится ко второй стадии загрузки компьютера?

Завести большинство разрешений в GRUB не всегда возможно. Чаще всего нативное разрешение поддерживается фирмварью только для интегрированной графики, и то не всегда.

стд на моей тачке тормозит

Так early boot не использует никаких аппаратных фич (просто не умеет), потому и тормозит. 8K попробуй отрисовать без драйвера.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Поставил openbox как миниимальный оконный менеджер. Добавил помимо строчки запуска qemu, вконце ещё exec openbox-session. Хотелось без него конечно, но теперь в фуллскрине запускается сразу. Благо он занимает чуть больше 1Мб, при Гигабайтах на виртуалку роли не сыграло.
Теперь умвр в общем. Для выбора, какую виртуалку/стим запустить, досточно добавить выбор через case 3 строчки. Если хочется, чтобы от любого пользователя работало, достаточно /etc/X11/xinit/xinitrc поправить и в локальной директории копию не создавать.
системд сервисы понадобятся, видимо, при отказе от X11 и переезде на Wayland.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 1)
Ответ на: комментарий от mord0d

Эм… а каким боком late userspace относится ко второй стадии загрузки компьютера?
Завести большинство разрешений в GRUB не всегда возможно. Чаще всего нативное разрешение поддерживается фирмварью только для интегрированной графики, и то не всегда.

Мне хотелось, чтобы всё сразу запускалось в фуллскрин и красиво, с нормальным разрешением. По моему опыту, граб завёлся в фуллскрин на 1366*768 и открытом радеон интеграшке, завёлся на бамблби (интеграшка интел+проприетарная нвидиа) в 1080р, но я его потом выпилил за ненужностью и оставил уефи. И завёлся с виртуальным адаптером virtio в 1080p.

Относится таким боком, что без оконного менеджера с любыми разрешениями, виртуалка сохраняла размер окна на четверть экрана. Я добавил в граб разрешение, чтобы не ждать загрузки и видеть всё на раннем этапе.

fehhner ★★★★★ ()

И в чем проблема? Запустить еще одни Х-ы? Запустить в этих Х-ах обычную Х-овую программу?

futurama ★★★★★ ()
Ответ на: комментарий от fehhner

Хотелось без него конечно, но теперь в фуллскрине запускается сразу.

wmctrl же есть.

на бамблби (интеграшка интел+проприетарная нвидиа) в 1080р

У тебя primary — Intel HD, и бамблби тут совершенно не причём (ибо это late userspace), до него ещё дело не дошло.

уефи

А вот тут тебе уже кроме VESA никто не поможет.

Относится таким боком, что без оконного менеджера с любыми разрешениями, виртуалка сохраняла размер окна на четверть экрана.

То ты про GRUB, то про Xorg. Я это писал в контексте GRUB.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

То ты про GRUB, то про Xorg. Я это писал в контексте GRUB.

Ты не совсем понял. Проблема была, виртуалка в новой сессии иксов из tty запускалась только на часть экрана. При этом, я мог менять внутри виртуалки разрешение, но она оставалась сжатой на часть экрана при любом разрешении. Вот я в виртуалке и поменял разрешение граба, чтобы видеть результат уже на ранней стадии и не ждать загрузку, будет ли развёрното на весь экран. Т.е., разрешение в грабе в виртуалке было 1080р и сжато до размера окна (четверти экрана), при использовании видео virtio. Только после установки оконного менеджера, иксы стали запускать на весь экран виртуалку с разрешением 1080р, не растягивая или сжимая.

опенкоробку уже на wmctrl менять уже не буду, мне лень. Можно запустить любое количество виртуалок, меняя параметр для startx на любых tty.

fehhner ★★★★★ ()
Последнее исправление: fehhner (всего исправлений: 3)
Ответ на: комментарий от fehhner

GRUB внутри виртуалки? Тьфу, я-то думал, ты про хардварные проблемы, а не про эмуляцию. Тогда VESA, но чтобы изображение не блюрилось, размер окна qemu нужно менять ДО инициализации графического драйвера, а лучше до инициализации BIOS.

Ты также не уточнил, пробрасываешь ли видеокарту, или эмулируешь её.

mord0d ★★★★★ ()
Ответ на: комментарий от mord0d

Я итак запускал -full-screen, но без вм не разворачивалось. Уже работает всё давно. Виртуальная видеокарта virtio оптимальна на моём интеловском железе.

fehhner ★★★★★ ()
Ответ на: комментарий от fehhner

Я итак запускал -full-screen, но без вм не разворачивалось.

Я не помню, что написано в мане, но -full-screen это хинт для EWMH, потому без EWMH-compatible WM естественно не будет работать.

mord0d ★★★★★ ()
Ответ на: комментарий от fehhner

Нет, это просто опция qemu, чтобы во весь экран шёл.

Тогда ответь, почему оно не работает без WM? ☺

mord0d ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.