Pull to refresh

Comments 19

А в чем проблема была ограничится переключением на уровне grub? Насколько мне известно можно взять серверный свисток и просто работать с апи свистка для запуска/ребута и тд внутри локальной сети (если материнка серверная то там уже все есть, свисток не нужен) и подключить как удобно к хомасистент. (если есть такая огромная необходимость к удаленному запуску ПК с выбором операционки)

Да и переключение чисто по питанию такое себе решение. Как минимум при скачке напряжения (когда "могнет" реле) диск может превратится в тыкву.

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

Чтобы выбрать систему из груба комп уже должен быть включен и нужен доступ к консоли.

Реле управляет питанием дисков только в течение 90 сек после запуска. А так они включены всегда и что бы не случилось с реле или его питанием на дисках это не скажется.

Пока все работает. Да, я тоже не очень знаю спецификацию sata, даже назначение напряжение плохо описано в популярных источниках.
Собственно, как я написал, риски может и есть, но я считаю их допустимыми.

У вас уже используется Wake-on-LAN для включения ПК.

Вам нужно было лишь в запускаемой по-умолчанию ОС добавить скрипт, который при загрузке запрашивает у Home Assistant по http REST API какую ОС необходимо загрузить и если она не совпадает с текущей, то выполняет grub-reboot [номер ОС].

Такое программное решение выглядит проще и надежнее.

Для удобства скрипту можно добавить предложение нажать ESC в течение 5 секунд, чтобы отменить перегрузку локально. Так можно будет включать ПК локально не задумываясь что там выбрано в Home Assistant.

Класс! А как это сделать? Фиксированный IP? DHCP? У меня в компе, который имеет несколько систем, специально настроены разные mac адреса чтобы ip системы зависил от ОС: так проще домашний firewall насторить.

Я когда-то думал для этого использовать DHCP запрос: в ответе сервера указать, какую ОС загрузить в доп. хедерах. Но как это сделать в grub os так и не понял.

На ПК должна быть зафиксирована ОС, загружающаяся по-умолчанию всегда, при помощи grub-set-default. Желательно Linux, т.к. в нем это можно сделать в несколько строк на Bash. После загрузки запускается скрипт, делающий исходящий запрос к Home Assistant API по HTTP, получает ответ какая ОС должна быть загружена и запускает с правами root grub-reboot <номер> && reboot с нужным номером загрузочной записи.

Всё. Не важно какой IP и MAC у ПК, важен лишь доступ с него к Home Assistant.

Точно! Жаль ,что это будет значить двойной ребут, что местами просто не красиво, но в моём случае это отличное решение. И, в отличие от метода, описанного в статье, всегда есть доступ до всех ЖД.

А чем не подошел вариант грузить только proxmox, а в нем виртуалку с нужной ос? (Отдельно вопрос, зачем убунта, если уже есть proxmox, основаньій на дебиане...)

не хочу терять в производительности и возиться с пробросом видеокарты.

Потому что в убунте есть десктоп) Ну и вообще не стоит нагружать гипервизор непрофильными задачами

была статья (вроде тут на хабре но это не точно) - сделали некий девайс на stm32 который решал задачу выбора загрузочного диска в grub

Поиск дает такое https://github.com/stecman/hw-boot-selection https://github.com/rw-hsma-fpga/grub-switch наверное что то еще есть

Суть не в том что это аппаратное устройство а в том что grub может управляться "извне"

Интересная какая разработка. Но как я понял смысл тут именно в программно-аппаратном комплексе. Программа нужна чтобы не надо было эмулировать клавиатуру и подать не ненадежную комбинацию кнопок вверх/вниз а что то вроде аппаратного api поддержать, а прямого управления по сети она не поддерживает. Может я конечно неправильно понял, по диагонали пробежался.

Грубо конечно, но мне нравится

Страх и ужас ;((

А если не будет грузиться, ошибки какие-то выдавать?

У вас же HA крутится на каком-то железе? Я бы добавил туда IP KVM и решил этим проблему. Если аппаратный IP KVM не нравится - возьмите USB свисток с HDMI входом, эмулирующий USB камеру (на Али в пределах 1 т.р.) + эмулятор клавиатуры (реально собрать готовый проект на всяких ESP32). А на релюхи - вывести кнопку включения и reset.

Ну будут и будут. Выключу и попробую еще раз. Если не получится - ну и ладно, есть и другие варианты решения вопросов, например подключусь к какому нибудь рабочему серверу.

Железные ip kvm - это как то совсем небюджетно. Для домашнего решения перебор.
Второй вариант побюджетнее, не знал про hdmi камеры, спасибо.

Но - мне не нравятся такие решения. KVM - это все же про работу и про кровавый энтерпрайс, я же в личной жизни стараюсь автоматизировать до уровня кнопки "сделать красиво". HA в этом плане мне сильно нравится потому что в нем можно почти все сделать. Получившаяся у меня схема отвечает этому критерию.

Могли бы Вы дать линку на конкретный USB свисток? И как с его помощью получить экран удалённо?

Вам не нужно получать экран для выбора grub

Я тут почитал коментарии и понял что для решения задачи хватит одной ардуины на esp32.

Esp32 для связи с умным домом (вайфай) а ардуина собственно для того что бы иметь связь с материнкой по ttl. А уже в самом grub сделать запрос запускаемого диска с ttl порта. Включение и ребут так же спокойно делается с esp так как обычно в материнке у кнопок управление землей

Для grub'а можно использовать serial console (com порт), для ядра linux тоже самое. Но это решает только часть возможных проблем при загрузке и только с linux'ом. Поэтому возможность зайти в BIOS мне кажется очень и очень полезной.

Последнее время их появилось очень много. Я купил два на пробу и оба хорошо работают, задержка минимальна (подключил вместо монитора одного компа, на экран другого компа вывел "usb камеру" и свободно пользовался первым компом):

  1. Просто свисток (1900 рублей) https://aliexpress.ru/item/1005004754486040.html

  2. Свисток с дублированием потока (1000 рублей) - есть HDMI In, HDMI Out, перехватывает видео по USB: https://aliexpress.ru/item/1005003576399052.html

Также есть куча свистков за 200-400 рублей, но про них ничего сказать не могу, по отзывам - они не могут держать полноценно Full HD 30/60 FPS, но для задачи "IP KVM на случай проблем с загрузкой" они должны без проблем справиться.

свисток то это не проблема, только вот "за скобками" остался целый программно-аппаратный комплекс который надо собрать на коленке по не особо готовым рецептам.

тут была недавно статья - человек даже готовое решение PiKVM на малинке не осилил

Есть ещё пара более простых методов.
Grub можно грузить по pxe (и, соответственно, дать ему любые настройки для загрузки нужного).

Или можно отдавать по pxe только переменную для выбора ОС при загрузке, а весь остальной загрузчик и конфиг держать в самом компе. Тогда при отсутствии pxe сервера - компьютер всё равно можно будет загрузить в любую ОС через меню grub.

Ну а отредактировать файл через автоматизацию - это уже просто.

Sign up to leave a comment.

Articles