Линукс не идеален и временами может серьезно проигрывать другим системам по своим функциональным возможностям, в точности как в случае с системой Plan 9 и удаленным доступом к аппаратным ресурсам компьютера. В то же время, когда возникает потребность решить конкретную задачу, шансы найти подходящий набор инструментов для этого практически стопроцентные.
Еще по теме: Как расшарить диски на Linux
Как расшарить видеокарту на Linux
Собираясь расшарить видеокарту, уместно задать себе вопрос: зачем это нужно? Ведь недостатка готовых решений от проприетарщиков нет. Тут тебе и TeamViewer, совсем недавно порадовавший линуксовым клиентом, и облачные решения, встраиваемые в браузер. Однако не всегда все так гладко.
Видеоподсистемы современных ноутбуков повсеместно стали делать гибридными, когда на борту присутствуют две видеокарты: первая — мощная, но безголовая — дискретная, которая используется для трудоемких задач и включается по мере надобности для трансляции потоков через вторую — скромную интегрированную, работающую постоянно.
Масштабировав ситуацию до сетевых размеров и представив себе, что мощная видеокарта находится на удаленном компьютере, а в непосредственном доступе пользователя лишь старенький нетбук, для которого уже и запуск современного браузера порой непозволительная роскошь, приходишь к решению, взятому на вооружение все в той же гибридной графике. Да еще и инструментарий тот же — VirtualGL.
INFO
На самом деле все наоборот, и VirtualGL изначально задумывался для сетевых решений, а хинт с гибридами созрел потом.
Пакет VirtualGL присутствует в большинстве популярных дистрибутивов, поэтому все, что нужно сделать, — это установить его штатным менеджером пакетов на обеих машинах и, в зависимости от того, в какой каталог установлен пакет, запустить на сервере конфигуратор. В Arch Linux и его производных это делается командой
1 |
$ sudo vglserver_config -config +s +f -t |
Если в твоей системе пакет установлен в /opt, нужно прописать полный путь:
1 |
$ /opt/VirtualGL/bin/vglserver_config -config +s +f -t |
1 |
$ ssh -X логин@сервер НАЗВАНИЕ_ПРОГРАММЫ |
Далее перезапускай дисплейный менеджер, и сервер можно оставлять в покое.
На клиентской машине после установки VirtualGL в нем самом ничего конфигурировать не надо. Здесь нам понадобятся только vglconnect и vglclient. Зато нужно установить и настроить SSH. Открываем файл настроек /etc/ssh/sshd_config и добавляем в него такую строку:
1 |
X11Forwarding yes |
Перезапускаем сервис sshd. В системах, основанных на systemd, это можно сделать так:
1 |
$ systemctl start sshd |
Получить изображение запущенной на сервере программы и тем самым проверить работоспособность связки позволит команда
Теперь можно с помощью vglconnect подключиться к серверу, попутно зашифровав трафик X11 и изображение VGL:
1 |
$ vglconnect -s логин@сервер |
и попробовать запустить какое-нибудь приложение:
1 |
$ vglrun -q 40 -fps 25 НАЗВАНИЕ_ПРОГРАММЫ |
Значения -q (степень сжатия JPEG) и -fps (частоту обновления кадров) можно варьировать, подбирая максимально возможные на используемом канале (не резиновом). Сжатие через JPEG при удаленном доступе используется по умолчанию.
При желании вернуть систему в исходное состояние поможет команда
1 |
$ sudo vglserver_config -unconfig |
Как расшарить звуковую карту на Linux
До появления звука в кино оно оставалось немым без малого тридцать лет. У нас времени чуть меньше, поэтому вслед за видео приступим к проброске аудио. Здесь все еще проще, если воспользоваться возможностями вездесущего PulseAudio.
На клиенте и сервере открываем конфигурационный файл ~/.config/pulse/default.pa или /etc/pulse/default.pa и раскомментируем строку load-module module-native-protocol-tcp. На сервере также добавляем одну из следующих строк:
1 2 3 |
auth-ip-acl=127.0.0.1 # Для доступа клиента с конкретным IP auth-anonymous=true # Для доступа с любого IP |
Также на клиенте открываем конфиг ~/.config/pulse/client.conf или /etc/pulse/client.conf (в зависимости от того, нужно ли установить эти настройки для одного пользователя или для всех) и добавляем:
1 |
default-server = адрес_сервера |
Вместо редактирования client.conf для вывода на удаленный сервер можно использовать утилиту pax11publish:
1 |
$ pax11publish -e -S адрес_сервера |
Отключение вывода на удаленную машину:
1 |
$ pax11publish -e -r |
Чтобы изменения вступили в силу для конкретной программы, использующей PulseAudio, требуется ее перезапустить.
Другой способ расшарить звуковую карту
В дебрях интернета в слегка запущенном виде можно найти проект аудиотрансляции по сети — TRX, основанный на ALSA, кодеке Opus и библиотеке oRTP. Программа проста в использовании, как автомат Калашникова, но уступает ему в безотказности — исходники не обновлялись с 2014 года. Есть подозрения, что это касается лишь публично доступных материалов, поскольку основанный на нем онлайн-сервис аудиообмена от того же автора Cleanfeed выглядит достаточно свежо.