LINUX.ORG.RU

Pi-KVM - проект открытого IP-KVM на Raspberry Pi

 , , , ,


24

5

Состоялся первый публичный релиз проекта Pi-KVM: набора софта и инструкций, которые позволяют превратить Raspberry Pi в полностью функциональный IP-KVM. Это устройство подключается к HDMI/VGA и USB-порту сервера, чтобы управлять им удаленно, независимо от операционной системы. Можно включить, выключить или перезагрузить сервер, настроить BIOS и даже полностью переустановить ОС с загруженного образа: Pi-KVM умеет эмулировать виртуальный CD-ROM и флеш-накопитель.

Количество необходимых деталей, помимо самого Raspberry Pi, минимально, что позволяет собрать его буквально за полчаса, а общая стоимость окажется в районе $100 даже в самой дорогой конфигурации (в то время как многие проприетарные IP-KVM при меньшей функциональности будут стоить от $500 и выше).

Основные возможности:

  • Доступ к серверу через веб-интерфейс обычного браузера или VNC-клиент (никаких Java-апплетов или флеш-плагинов);
  • Низкая задержка видео (порядке 100 миллисекунд) и высокий FPS;
  • Полная эмуляция клавиатуры и мыши (включая светодиоды и прокрутку колесиком/тачпадом);
  • Эмуляция CD-ROM и флешки (можно загрузить несколько образов и подключать их по мере необходимости);
  • Управление питанием сервера с помощью ATX-пинов на материнской плате или через Wake-on-LAN; поддерживается IPMI BMC для интеграции в существующую сетевую инфраструктуру;
  • Расширяемые механизмы авторизации: начиная от обычной по паролю и заканчивая возможностью использования единого сервера авторизации и PAM.
  • Широкая поддержка железа: Raspberry Pi 2, 3, 4 или ZeroW; различные устройства видеозахвата;
  • Простой и дружественный тулчейн, который позволяет собрать и установить ОС на карту памяти Raspbery Pi всего парой команд.
  • И многое другое.

Также готовится к релизу специальная плата расширения для Raspberry Pi 4, которая реализует все описанные функции, плюс множество других возможностей (подробности на GitHub). Открытие предзаказов ожидается в четвертом квартале 2020 года. Стоимость ожидается в районе $100 или меньше. Подписаться на новость о предзаказе можно тут.

>>> Подробности на GitHub

★★

Проверено: Zhbert ()

Ну, прошу любить и жаловать - мой маленький петпроджект. Пилил его в стол несколько последних лет и допилился до продакшн-реди. У проекта есть немаленькое коммьюнити (в основном англоговорящее), и кто-то даже использует его в своих датацентрах.

Чтобы сделать Pi-KVM юзабельным, мне пришлось разработать с нуля целую кучу софта. Например, все существующие решения стриминга видео с хардварных устройств (ffmpeg, vlc, mjpg-streamer) работали крайне медленно, поэтому я написал собственный MJPEG-сервер на сях: uStreamer, который обеспечивает задержку всего 100ms, умеет сжимать картинку в несколько потоков и на GPU пая. Интерфейс написан на чистом JS без фреймворков, поэтому получился легким (несколько сотен КБ включая картинки в SVG) и быстрым. А для сборки и установки оси на карту памяти придумал интересный способ, который обеспечивает повторяемость и высокую скорость ребилда: образ собирается в докере с arm-binfmt, а потом разворачивается, превращаясь в чистую файловую систему для флешки. В итоге, если все правильно собрать, моя поделка просто заработает без сношения мозгов. Быстро, удобно, надежно.

Сейчас Pi-KVM плавно перетекает в мою основную работу, так что если вы сочтете мои труды полезными, то можете подкинуть немного деревянных на корм для моей кошки: https://www.patreon.com/pikvm (ежемесячный саппорт на небольшую сумму) или https://www.paypal.me/mdevaev (однократно).

Ну и пишите в мыло mdevaev@gmail.com, если что.

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

Это устройство подключается к HDMI/VGA

А малина как-то умеет принимать видео по HDMI/VGA? Или делается схема какого-то преобразователя (и если да, то во что)?

P.S. При более внимательном прочтении увидел упоминание про «различные устройства видеозахвата». Стало чуть понятнее.

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

Не умеет. Нужно купить плату видеозахвата (в доке есть ссылки). Стоит где-то 1-2к рублей. Та, что подороже, имеет больше фичей (типа контроля сжатия и прочего, тоже описано).

liksys ★★ ()

Выглядит интересно, схоронил. Как раз недавно интересовался, как из говна и палок слепить ip-kvm.

bsdfun ★★★★★ ()

Круто, а стенку в магазине он может убрать а можно к нему 4G модем подключить и рулить серваком в обход корпоративной сетки? На сколько большой по размеру получится модуль на Pi Zero?

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

Мне кажется такие балалайки именно для этого и сделаны - рулить в обход сетки в том числе, легально (не хакерство)

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от cocucka

Там внутри обычный Линукс, так что можно настроить что угодно.

На зеро как два спичечных коробка.

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

Благодарю, крайне интересно и полезно.

Jameson ★★★ ()

множество других возможностей (подробности на GitHub

Многа букав написал. Можно было обойтись только «подробности на GitHub».

anonymous ()

Очень круто. Схоронил.

Я правильно понимаю, что кодирование видео аппаратное? Если да, то силами платы видеозахвата или VPU малинки?

И, кстати, как реализован USB-слейв? Мне казалось, или быть слейвом умеет только Zero?

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

с оранж паем такое будет?

burato ★★★ ()

Здорово, спасибо. Я осилил только USB HID через Ардуинку, захват видео с LKV373A и полкило скриптов. Теперь это можно будет выкинуть как только придет USB-HDMI.

rakulr ()

В современном мире это всё очень и очень актуально. Спасибо.

future_anonymous ()
Ответ на: комментарий от intelfx

Смотря какой захват использовать. Если мост HDMI-CSI, то он просто переупаковывает растр из одного кабеля в другой, и сжимать видео приходится на пае. Это даёт много преимуществ: можно регулировать уровень сжатия, задержка минимальна, можно определить разрешение источника.

Другая опция - китайский usb-свисток, который даёт большую задержку, у него нет контроля сжатия и разрешение надо настраивать руками, но он жмёт сам, как обычная вебка.

Я поддерживаю всё, но по очевидным причинам рекомендую использовать первое.

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

Четвертый тоже умеет. А для 2 и 3 надо прицепить к уарту ардуину, которая будет эмулировать хид. Диска при этом конечно не будет, но тем не менее.

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

Можно немного запатчить и поставить софт руками, кроме gpio там ничего не прибито. Из коробки образа оси у меня нет.

liksys ★★ ()

Очень годно, букмаркнул.

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

Он же совсем слоу. Ты будешь страдать. Там не только IO хреновый, но даже процессор тормозной.

Но, вообще говоря, можно поставить. Ближайшая по архитектуре конфигурация - v2-hdmi-zerow. Собрать ось для нее, а потом поправить конфиги и правила udev. Но дополнительно еще придется найти ардуину и другие детали для хида, как в платформе v0. См. ридми для полного списка.

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

Ага, теперь понятно. Не знал, что RPi4 тоже так умеет, это очень кстати.

intelfx ★★★★★ ()

Нужно.

Также готовится к релизу специальная плата расширения для Raspberry Pi 4, которая реализует все описанные функции, плюс множество других возможностей.

Вот и открытая альтернатива IP-KVM есть!

anonymous ()
Ответ на: комментарий от intelfx

Да я и сам удивился. Когда его анонсировали - пошел искать инфу и не нашел. Потом кто-то где-то описал, что якобы на usb-c выведены ноги от отдельного контроллера. Купил, потестил - и правда. Ну вот и поразвлекся.

А пока не было четверы, у меня была (ну и есть, в принципе) еще одна забавная реализация реализация эрзац-масстораджа: бралась флешка, и с помощью релешки ее дата-лайны перекидывались то к порту пая, то к порту сервера. Когда она на пае - можно залить образ, переключаем - грузим сервер с флешки. По причине сложности обвеса это никто не собирал, но для истории осталось.

liksys ★★ ()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

сделаны - рулить в обход сетки

Даже в средней кон орке в обход сетки не рулят.

Сделано для двух целей:

  1. Продажа выделенных серверов.

  2. Для удаленной установки в филиалах, если на месте нет людей, но есть чел способный воткнуть IP-KVM.

anonymous ()

Хорошо, годно.

anonymous ()
Ответ на: комментарий от hobbit

Странно вообще, что она так называется. Наверное, ее делал не совсем китаец)

Так-то это копия Auvidea B101, которая состоит из двух чипиков и стоит каких-то сумасшедших денег.

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

Это реально круто.

Только я уже давно серверов без IPMI, умеющего веб-интерфейс, не видел.

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

На рабочей станции IPMI скорее исключение, чем правило, да и на домашнем сервере тоже. Плюс, есть большая сфера треш-дц, где оборудование собирают из стоковых комплектующих, и те, кто ездят с квм на поддержку.

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

mjpeg заппарачен на малине через openmax или через что-то своё?

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

Там есть просто JPEG-компрессор. Да, через OpenMAX. Правда, пришлось вокруг него городить всякие обвязки в виде мультитрединга, чтобы полностью утилизировать его, так что там не совсем каноничный пример использования. Можно сказать, микро-ноухау. Ну и потом все это паковать в MJPEG.

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

На рабочей станции IPMI скорее исключение, чем правило, да и на домашнем сервере тоже.

Ну, такое. Зависит от комплектующих. У меня на старом домашнем компе был IPMI, на новом вот нету, но я им и так не пользовался.

Но всё равно дико круто. Я даже куплю вашу железку, когда она будет готова.

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

Спасибо! Подпишись в форме, пожалуйста. Мы отпишем письмо, когда она будет готова.

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

Ага, спасибо!

liksys ★★ (27.07.20 11:04:04) крутышка rpi-kvm

Подписался на ежемесячные чаевые.

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

Спасибо :) Кошак станет немного потолще, а твое имя попадет в благодарственный список)

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

Можно сказать, микро-ноухау

годно, будем посмотреть

rukez ()

Как насчёт поддержки Orange Pi RK3399? В этой платке есть HDMI In в коробке.

Или вот есть готовое устройство Geniatech APC3399 на том же RK3399 и тоже с HDMI In.

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

Готовой оси нет, но в софте гвоздями прибит только GPIO. Для него добавить поддержку оранжа будет легко, но в остальном софт придется ставить на систему руками, так как все сборочные скрипты у нас рассчитаны на пай. Задача вполне посильная, если у вас есть эта плата. Я в факе писал, что даже готов посодействовать.

Что до самого захвата - если для него есть V4L2-драйвер, то заведется с полпинка. Если нет - нужно будет звать кернел-хакеров.

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

Что до самого захвата - если для него есть V4L2-драйвер, то заведется с полпинка. Если нет - нужно будет звать кернел-хакеров.

Понял. Логично.

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

Не пробовали на Huawei KaiCode податься (ещё не поздно до 1 августа)? Мне кажется проект имеет все шансы попасть в тройку и получить денег на развитие.

snizovtsev ★★★★ ()

А планируется ли завоз zero-latency h264 или какого-либо другого более православного video-based кодека? С MJPEG жить довольно грустновато, как ни крути.

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

Позже - планируется, но пока нужно допиливать то, что есть.

Вообще, с MJPEG нормально живется, и это довольно неплохой выбор именно для IP-KVM. Его нативно понимают и браузеры, и VNC-клиенты (которые h264 в своей массе не умеют и не будут, видимо, потому что открытых серверов таких нет). А с MJPEG система работает без перекодирования: берем видеопоток, инкапсулируем жопеги напрямую в RFB и вещаем VNC-клиенту.

Плюс, я сделал пачку оптимизаций, которых нет у обычных MJPEG-стримеров. Скажем, картинка передается только тогда, когда на экране что-то меняется. Такое эрзац-дифференциальное кодирование. И задержка, которая у нас есть, по большей части возникает из-за передачи по сети, а не из-за кодека. Кодек справляется примерно за 30-40ms - это вообще незаметная глазу фигня.

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

О, спасибо за наводку. Думаю, стоит попробовать.

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

Скажем, картинка передается только тогда, когда на экране что-то меняется.

А что нибудь для мигающей корртеки придумано? Типа не одно изображение фиксировать, а два и вместо пересылки изображения только из-за мерцания кратки пересылать только мета инфу которая бы говорила клиенету показывать прежний или предшествующий ему кадр, типа K-1, K-2, K-1, K-2 и т.д.

anonymous ()
Ответ на: комментарий от izzholtik

Я не пробовал, но вероятнее всего нет. Там же нужна поддержка шифрования.

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

корртеки … кратки

каретка aka курсор в тексте.

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

MJPEG не умеет в мета-инфу. Это просто поток отдельных картинок по HTTP, разделенных баундари. Смена картинки, как я сделал - и так уже хак, который балансирует на грани. RFC нет, ничего нет, каждый браузер работает с ним как хочет. Мне пришлось изобретать дополнительные хаки для хрома и сафари, чтобы они с этим работали корректно. Работает отлично, но большего из протокола не выжать.

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