Удаленное переключение c Windows на Linux
Недавно мне пришла в голову идея сделать из своего ПК стриминговый сервис для своего сетапа мечты.
И с этой задачей я довольно просто справился, использовав связку сервер sunshine и moonlight. А сам сервер через белый ip
и домен был выставлен наружу, для удаленного подключения.
НО ЭТО ЖЕ НЕ БЕЗОПАСНО! Скажите вы мне и будете отчасти правы. Sunshine
внутри себя использует белый список устройств и работает только когда компьютер включен. А он включен не 24/7. Такая безопасность для меня кажется вполне оправданной. Важно, также отметить, что порты открыты только для подключения по sunshine
, а все остальные скрыты
Второй вопрос, который возник у меня в голове.
Хорошо, допустим это все работает, но как удалено запустить компьютер?
Тут я понял, что существует два довольно популярных решения. Это Wake-on-Lan
, который был отклонён, потому что в случае зависания или ещё чего-либо я теряю доступ к машине. И если быть уж совсем честным, то я с этим никогда не работал и мне было влом разбираться в том, как это сделать. Поэтому был выбран ещё один вариант умная розетка и Wake-on-Power
. Да, колхоз, но работает как часы.
После чего я радовался, ведь изначальная задумка работала. И я мог с удовольствием играть в игры на компе при помощи телефона и подключенного к нему геймпада. Но в моем сетапе я использую Samsung z fold 3 и к нему был докуплен LapDex. LapDex - портативный монитор, похожий на ноутбук, но вместо своего железа использующий Samsung Dex.
И у меня возникла идея.
Я хочу также и работать подключаясь к своему компу
Я использую Linux в качестве рабочей операционной системы. И для меня это железобетонно. Поэтому возник вопрос
А как мне из компа, который по умолчанию использует Windows 11 переключиться на Linux?
Долго ли, коротко ли, я искал варианты как это сделать, но в конечном итоге наткнулся на довольно простую программу с github. Она называется WinToLinux и представляет собой небольшую иконку в трее. Нажав на которую открывается небольшое меню. В котором можно выбрать на какую операционную систему вы хотите переключиться. По сути на этом этапе можно было бы и закончить статью. Но я бы ещё хотел поделиться с некоторыми подводными камнями, о которых я почему-то не подумал.
Неудачи при расшифровке диска
Все было круто я удалено подключался к Windows машине, если нужно было я мог нажать и перезагрузиться на Linux. Я уже стал чувствовать аромат победы, но тут я столкнулся со следующей преградой. Диск на котором стоял Linux был зашифрован. И пароль в него нужно было ввести до того, как включался сервер стриминга, ну и в принципе до того, как на машине стартовал Linux. Другими словами, я терял доступ к машине, каждый раз, когда нажимал на переключение операционной системы на Linux.
Немного погрустив, я пошел спать, думая, что разберусь с этой проблемой чуть позже. На следующий день, после рабочего дня, я снова вернулся к неработающему функционалу, о котором, так желал. Я подумал, а зачем мне на этом диске вообще шифрование. Этот компьютер стоит у меня дома, а перед продажей диска я в любом случае его затру. Хорошо, значит моя задача состоит в том, что нужно расшифровать диск. Не судите меня строго, но процесс расшифрования диска до этого я делал лишь в Windows. И там это был легкий процесс в одно действие.
Но тут, я знал, что придется немного погуглить. После небольшого поиска информации, я понял, как это делать. Я использую fedora с gnome. И у gnome есть довольно приятная утилита, по работе с дисками, в которой можно было это сделать. Супер! Подумал я и, отправив важные файлы в облачный бэкап, приступил к намеченному.
Моя радость довольно быстро закончилась, когда мне выдало ошибку, о том, что это сделать нельзя. Странно, подумал я не особо вдаваясь в подробности текста ошибки. Я решил, что это какая-то проблема с правами и приложением. И немного ещё погуглив, я понял, что можно это сделать через терминал. Когда через терминал, у меня не получилось выполнить задуманное, я все таки прочитал текст ошибки. Он гласил, что нельзя расшифровать диск, который используется в данный момент. Тут произошел небольшой ступор мозговины. А как его расшифровать? Ведь в компе всего два диска, один под Windows, а другой под Linux. Если все хорошо, они не должны вообще знать о существовании друг друга.
Но, к счастью, кровь снова прилила в мозг, и я понял, что могу скачать live образ на флешку и с него расшифровать диск. Я проделал стандартные действия, потратив ещё довольно прилично времени, скачивая образ на комп.
Все флешка была у меня в руках. Я вставил её в компьютер. Запустился, вошел в терминал и... И я был очень зол, ведь сообщение в терминале писало, что в live образе так сделать не получится, так как у него нет полноценных прав на это действие в диске другой системы. Понимая, что уже довольно поздно, а завтра рано вставать. Я решил, ладно все важные файлы я вынес в облако. Сегодня я не хочу ложиться уже второй день подряд с мыслью, что что-то не получилось.
Да, я решил переустановить систему. Да, я слаб. Да, нужно было решить эту проблему. Но в свою защиту, хочу сказать, что моя версия fedora устарела и нужно было ставить новую. Да, я знаю что можно обновить из системы. Но я тоже человек и иногда мне проще сохранить нервы, чем добиться идеального результата.
Но уже ложась спать, я понимал, что хоть полноценно удаленно переключить систему не получится. Все таки она переключается локально. И эта мысль грела мою душу.
Проблема с автозапуском sunshine
На следующий день, после работы вечером, я снова продолжил. Теперь нужно было вернуть в системе все как было и также поставить sunshine из начала статьи, но уже в линукс. И тут вроде ничего сложного, думал я
Навести порядок в системе оказалось действительно тривиальной задачей. Но вот поставить автозапуск sunshine... В общем, я больше склоняюсь, что мне просто не повезло с версией релиза. В sunshine есть отличная дока, в ней описано, что делать. Я все сделал по инструкции.
Первый прогон, я радостный удаленно захожу в винду, нажимаю перезагрузить на fedora. Комп перезагружается, появляется окно с паролем. Но в moonlight пусто, подключение к Linux не работает. Странно, думаю я. Логинюсь. Включаю sunshine руками локально. Все начинает работать. Ага, думаю я, значит проблема в автозапуске сервера.
Второй прогон, захожу в лог system ctl. Понимаю, что попытки, поднять систему есть, но они падают. Потом было очень много прогонов, разные комбинации включения выключения. В этой статье, я напишу, только чем по итогу закончилось.
Я сделал автологин в систему. Она всё ещё требует пароля при любом первом sudo действии. И добавил авто запуск приложения на уровне приложений gnome. Другими словами в директории ~/.config/autostart/
создал файл sunshine.desktop
[Desktop Entry]
Name=Sunshine
Icon=whatever
Type=Application
Exec=sunshine
Terminal=false
И после этих операций все заработало. Happy end! Теперь конечная схема работает следующим образом. Через умный дом, включаю розетку => включается комп на Windows => Подключаюсь к нему через moonlight на телефоне, если поиграть в игрушечки, то остаюсь, иначе => Нажимаю WinToLinux, выбираю fedora, нажимаю reboot => Комп перезагружается в этот момент я отключаюсь от него в moonlight, жду, пока в сети появится клиент с fedora => Подключаюсь к нему