На Хабре вряд ли стоит рассказывать о программах удаленного доступа к ПК, вроде TeamViewer. Но все это работает лишь в среде операционной системы. А вот доступа к BIOS, возможности установки, переустановки и прочих операций с операционной системой нет. Для всего этого есть иные решения. Одно из самых доступных — KVM Over IP.
Конечно, если покупать брендовую систему, то получится дорого. Но есть иное решение — создание собственной системы на основе «малинки». Это решение предложил разработчик Максим Деваев (Maxim Devaev). Он собирается начать продавать эту систему по $130. Но собрать все это можно и самостоятельно — главное запастись собственными компонентами. Под катом — описание того, как это сделать.
Прототип Pi-KVM без корпуса
Необходимые компоненты
- Raspberry Pi 4 или Raspberry Pi Zero
- Карточка памяти microSD с объемом памяти 16 ГБ.
- Переходник HDMI-to-CSI.
- Сплиттер USB female to dual male Type-A.
- Кабель
- USB C to Type-A
- Источник питания 5В, 3А с портом USB Type-A.
Настройка SD-карты для Raspberry Pi KVM Over IP
Все, что нужно для настройки можно загрузить из сети в виде образа диска и записать потом этот образ на карточку. Сделать это можно при помощи Raspberry Pi или balenaEtcher (есть и другие варианты).
- Загрузить образ диска Pi-KVM. Вот ссылка. На исходном ресурсе есть несколько версий образов — для разных версий Pi. Кроме того, выбирать нужно исходя из того, что вы используете — HDMI-to-CSI или HDMI-to-USB.
- Распаковываем образ.
- Запускаем Raspberry Pi Imager.
- Теперь нужно выбрать опцию “Choose OS” > “Use Custom” и, соответственно, использовать образ. Еще требуется определить SD карту при помощи не самой сложной опции “Choose SD Card”.
- Write — прошиваем.
Собираем и настраиваем Raspberry Pi for KVM Over IP
Теперь можно приступить к сборке «железа». Здесь тоже все просто.
- Соединяем CSI шлейф нашего HDMI-to-CSI-2 бриджа с портом камеры «малинки». Чтобы убедиться, что все правильно подключено, лучше посмотреть на фото. Если вы используете HDMI-to-USB, то просто подключите коннектор к разъему USB. Ну или в случае Pi Zero — подключаем microUSB к USB Type-A.
- Нужно заизолировать 5В пин на коннекторе USB Type-A сплиттера. Проще всего сделать это при помощи тонкого изолирующего материала. Можно просто убрать и контакты, которые ведут к этим пинам, но все же безопаснее и проще — просто заизолировать коннектор. Если этого не сделать, то USB порт компьютера может быть поврежден.
- Подключаем кабель USB C-to-A к Type-A
- Подключаем кабель USB-C к порту USB-C «малинки».
- Подключаем коннектор Type-A к питанию.
- Подключаем USB Type-A коннектор и HDMI ПК, которым нужно управлять.
- Наконец, вставляем карту памяти и включаем «малинку».
Настройка ПО Pi-KVM
Теперь мы можем начать работу с Pi-KVM. Первая загрузка будет довольно продолжительной, так что придется подождать. Но в итоге все запустится, после чего можно начать настройку.
1. Определяем IP «малинки». Собственно, вряд ли на Хабре нужно рассказывать, как это сделать, но на всякий случай — сделать это можно при помощи роутера, в панели которого отображаются IP всех подключенных девайсов.
Кроме того, можно запустить командную строку Windows и выполнить команду “arp -a”. После этого вы увидите все адреса устройств, подключенных к локальной сети. Любой девайс, адрес которого начинается с b8:27:eb: или dc:a6:32: и является Raspberry Pi.
2. Вводим IP в браузере клиентского ПК, после чего открывается страничка входа.
3. Дефолтные значения входа — admin и admin.
4. Кликаем по иконке KVM.
Теперь должен загрузится экран, как показано на скриншоте ниже. Он предоставляет доступ к удаленному ПК при помощи меню. Можно получить и больше меню, чем указано на картинке, вот ссылка, где рассказывается, как это сделать.
Чем больше объем вашей SD-карты, тем больше образов ISO можно загрузить и использовать в дальнейшем, расширяя функциональность системы.
Если все правильно подключено и настроено, инструменты управления уже должны быть доступны.
Для расширения функциональности системы, например, использования дополнительных дисплеев, можно использовать подключение HDMI 4.
А вот прототип нашей системы без корпуса и 4-х портовый KVM switch.
Обновление Pi-KVM до последней версии
Pi-KVM часто получает обновления, поэтому постарайтесь держать актуальную версию. Для обновления нужно:
- Выбираем иконку консоли в главном меню Pi-KVM, после чего запускается консоль.
- Вводим «su» и получаем суперпользователя. Пароль — root
- Вводим “rw” и открываем систему для записи.
- Обновляемся при последовательном вводе команд “pacman -Syu” и “Y”.
Удаленное управление
Лучше всего использовать такой инструмент, как Tailscale. Он удобен, бесплатен для обычных пользователей, плюс с его помощью можно без труда развернуть небольшую VPN-сеть.
- Заводим учетку в Tailscale, выбирая бесплатный тариф Solo Plan для частного использования.
- Нажимаем на иконку консоли в главном меню Pi-KVM
- Становимся супер-пользователем при помощи «su» и пароля «root»
- Открываем систему для записи.
- Вводим команду “pacman -S tailscale-pikvm” для запуска VPN-сервиса на нашей системе.
- Вводим «reboot» для перезагрузки.
- После этого нужно снова получить доступ к системе, повторяем шаги 1-4.
- Вводим “systemctl enable --now tailscaled” для активации сервиса.
- Инициализируем начало работы, вводя “tailscale up”.
- Авторизуем все.
- Если все прошло хорошо, то вы увидите сообщение «Success» в консоли.
- Заходим вот по этой ссылке для того, чтобы увидеть IP, назначенный нашему VPN.
Сторона клиента
Теперь настроим tailscale на клиенте. Tailscale поддерживает большинство операционных систем, включая windows, mac и linux.
- Загружаем версию для своей ОС по этой ссылке.
- Переходим по этой ссылке для отображения IP VPN.
- Вводим IP в строку браузера, что позволяет подключиться к PI-KVM.
В целом, это и все. Благодаря этой инструкции получаем недорогой, быстрый и простой в использовании KVM over IP сервис. Если нужны дополнительные подробности, то они доступны по этой ссылке.
ebragim
1) зачем сложности с Y-кабелем питания, если у малинки и так есть свободные порты юсб?
2) не понятно, питанием управляться будет через юсб? Или всё-таки надо подключаться к выводам кнопок резета и питания материнки?
3) немного не понял, как к одной малинке подключать 4 монитора — что за "hdmi switch"? Адаптер поддерживает только 1 hdmi, насколько я вижу. Куда сувать остальные hdmi и юсб?
Aelliari
2) Опционально предлагается врезаться в материнскую плату к кнопкам power/reset и светодиодам storage/power через 4 мосфет ключа и резисторы. Сомневаюсь что существует универсальное решение по управлению питанием через usb при любых обстоятельствах и на произвольной ос
ebragim
Э… Статья позиционирует решение как ip-kvm же, при чём тут ОС вообще? Возможность аппаратно управлять ребутом/питанием как раз таки одна из ключевых для такой системы.
Просто всё так красиво показано, воткни 2 кабеля и радуйся жизни, но на самом деле у нас выходит вагон допиливания и куча вопросов. В итоге получится по цене и трудозатратам как взрослая kvm, но при этом без надёжности серьёзных решений...
Tanner
У меня есть антресольный безголовый сервер, на котором я ресет могу и сам нажать, без мосфетов, а вот в биосе поковыряться или безопасно перезагрузить в случае отвала сети ? уже нет. Для меня такая схема была бы самое оно. И расходов меньше чем на 3000р.
Вот в дата-центр за тыщи км я бы такой девайс не повёз устанавливать, не спорю. Но это ещё не значит, что он совсем бесполезный.
inkvizitor68sl
Вы немножко путаете ip-kvm и IPMI =)
Готовые IP-KVM тоже не управляют питанием, они втыкаются только в video и usb (старые модели — в PS/2), совместно с ними используются умные розетки с управлением по сети, или ещё какие-то приблуды.
Tufed
Вообще то готовые IP-KVM прекрасно управляют питанием сервера. У меня под контролем сейчас 3 разных, и все они могут послать сигнал на вкл./выкл. питания. Один правда сам тухнет при выключении питания сервера, хз, может его неправильно подключили. Но вот два других вполне тушат сервера полностью и остаются в сети, и корректно подают команду на включение. Это не доступ к серверной встроенной IPMI, это отдельная железка.
inkvizitor68sl
А как он его посылает-то?
IP-KVM обычно используют для того, чтобы его быстро перекидывали инженеры в ДЦ между машинами — ни о каком подключении к пинам материнки идти речи не может. С одним сервером проще ipmi воткнуть — дешевле выйдет с текущим рынком.
iveahugeship
А подскажите, пожалуйста, модели IP-KVM, которые позволяют аппаратно управлять питанием? Интересно, как это реализовано.
Пока что я встречал IP-KVM, управляющие питанием программно. Да и то, только отключением сервера (и перезагрузкой). Если же сервер отключен, то через IP-KVM его никак не включать (я все еще говорю о тех, что использовал). Фактически, они отправляют ctrl-alt-del на сервер. Сами при этом они не выключаются, так как у одной такой железки 3 USB: один — на ввод, два — на питание. Подключив питание к двум разным устройствам решаем вопрос с отвалом IP-KVM во время перезагрузки сервера.
Aelliari
Tanner
1) надо эмулировать HID, а это можно делать только через OTG-порт, который на малинке совмещён со входом питания,
3) в оригинальной статье есть ссылки на Амазон (переходники HDMI>CSI и HDMI>USB).
Knkplua
3) Нужен отдельный прибор — hdmi switch, предлагается вот такой. В оригинале статьи есть картинка. На странице проекта есть описание подключения и использования.
HeavyTank
1) Чтобы мат.плата не стала источником для пая, ток может превысить допустимый отдельными портами. Питание действительно можно завести например в GPIO пая. Можно и в HOST порты пая, но это уже шиворот на выворот.
2) Параллельно подключается через опто твердотельные реле к кнопкам power/reset и светодиодам мат.платы.
3) В переводе упустили суть, в оригинале статьи речь про управление обычным KVM switch через его usb порт по его протоколу, что позволяет использовать 1 Pi-KVM для 4 машин.
gromaster Автор
В оригинальной статье речь идет об управлении отдельным компьютером, но для расширения возможностей действительно можно использовать дополнительный 4-х портовый HDMI-коммутатор.