LINUX.ORG.RU
ФорумTalks

Перемещать ПО между ПК не закрывая его

 ,


0

3

Пусть у меня есть скажем 2 ПК и какое-то ПО(браузер/IDE/etc) запущенное на одном из них.

Хочется иметь возможность «перенести ПО» на другой ПК не закрывая его.

К примеру у меня открыт браузер с 5 вкладками на ПК1, я запускаю скрипт, что-то происходит и мой браузер с теми-же вкладками уже работает на ПК2.

При этом:

  • не было перезапуска самого браузера
  • ПК1 не нужен для продолжения работы браузера (т.е. не какая-то обёртка для проброса окна приложения на другой ПК)

Мысли, почему это должно быть возможно и как этому поспособствовать:

  • В lxd заявлена возможность «усыплять»(crio) и переносить контейнеры между узлами
  • Упаковать браузер в контейнер и пробросить ему Xorg и virtualGl сокеты и части ФС хоста считаю более чем возможным, но громоздким, скорее всего можно проще

Вопросы:

  • Кто-то пробовал сделать что-то подобное?
  • Беглый поиск по «сохранить процесс на диск с возможностью дальнейшего восстановления» ведёт в какие-то дебри 2010 годов, оно вообще живое, существует в виде живых утилит?
  • Как вообще себя может повести ПО при попытке восстановления на ПК2, если между ПК [сильно] различаются системы и железо

ЗЫ. Поставить ПК3 и с него «пробрасывать» всё на ПК1 и ПК2 не рассматриваю.

Да, в случае браузера можно закрыть его, перенести профиль на другой ПК и там запустить. Или использовать какую-то стороннюю синхронизацию вкладок/паролей. Хочется именно наогородить чего-то для переноса без закрытия ПО и послушать критику на какие грабли я наступлю в процессе.

★★
Ответ на: комментарий от rupert

Да, поэтому и думаю что удобно будет упаковать это всё в своего рода контейнер.

За одно и о возможной разнице библиотек между системами меньше думать придётся.

Flotsky ★★
() автор топика
  1. Виртуалка с саспендом и её переносом.
  2. описанный вами вариант с ПК3 - на практике самый удобный.
GPFault ★★
()
Ответ на: комментарий от GPFault

П.1 Дорого для CPU/RAM и hardware acceleration. Хотя и частично решается силами virtualGl

П.2 не выполним, ПК не всегда будут в одной сети или в сети вообще.

Flotsky ★★
() автор топика

Задача теоретически (в отрыве от печальной реальности) несложная. Но на практике современные популярные ОС на такое совершенно не рассчитаны.

Упаковать браузер в контейнер и пробросить ему Xorg и virtualGl сокеты и части ФС хоста считаю более чем возможным, но громоздким, скорее всего можно проще

Это в любом случае придётся делать, и это не самая проблема. Самая проблема в том, что на ПК2 придётся не просто всё это пробрасывать, а как-то объяснить системным драйверам, с какого места надо продолжить соединение. Потому что браузер реконнектиться конечно не будет, он считает что соединение уже было и он в него что-то слал.

Как вообще себя может повести ПО при попытке восстановления на ПК2, если между ПК [сильно] различаются системы и железо

Если ПО уже увидело новую версию opengl а ты его переносишь туда, где версия старая - надо ещё как-то пропатчить ПО (в памяти) чтобы оно забыло про новую версию. А у него на неё может быть текущее рантайм состояние сильно завязано - патчить придётся очень много.

В текущих реалиях более-менее гладко это можно реализовать только виртуалками (там уже готова эта самая изоляция реального хостового состояния от того что видит приложение, осталось только чуть-чуть доделать а может где-то и уже готово всё).

firkax ★★★★★
()

Более правильно будет переносить не браузер целиком а данные его вкладок, и делать это логикой самого браузера. Абстракция DOM/JS от хоста у него тоже уже готова, проблем с переносом быть почти не должно. Более того, по крайней мере фф это немножко даже умеет - «восстановление сессии» после краша местами восстанавливает старую страницу во вкладке а не грузит её заново с инета. Но тут проблема другая: чтобы это довести до ума, нужно лезть в код браузера, а там жуткая помойка, в которой разбираться очень долго.

firkax ★★★★★
()

У яббла нечто похожее – переносятся сами документы, и можно продолжать редактировать текст, синхронизировать открытые табы и тд – называется Handoff (через AirDrop), открытых аналогов не встречал.

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

насчёт hardware accelaration - все известные рабочие варианты - что виртуалка, что удалённый доступ - подразумевают что общим унифицированным API является передача картинки, устройств ввода и файловой системы. Это как раз таки штуки почти без неочевидного внутреннего состояния.

Рассчитывать на стабильно работающий перенос между машинами каких-то более высокоуровнеых API типа GL - мне кажется не стоит.

P.S. почти весь 2020й год работал по RDP Remmina->windows на 1440p мониторе поверх 4G с пингом 30-50мс и лимитом скорости 10МБит, в том числе иногда браузер открывал так. Ну НЕТ в этом никакого кошмара с точки зрения влияния на производительность работы человека с информацией, хоть убей.

Да, задержки прекрасно видно, но после адаптации просто не замечаешь их. Это как сменить ПО на программу с другими горячими клавишами и другим движком рендера шрифтов - период привыкания, а потом пофиг.

Единственное исключение - просмотр видео. Это неюзабельно.

GPFault ★★
()

Я думаю что то интересное можно почерпнуть из Qubes OS, там каждое приложение в своей виртуалке работает изначально. И ещё, я никак не могу вспомнить ОС какого то российского товарища, не на линукс базе, полностью своя разработка, которая вроде как активно развивается даже, там тоже процессы гибернируются и восстанавливаются с сохранением состояния. Ну и ЕМНИП в Plan9 процесс может между компьютерами по сети гулять.

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

Точно! Именно её никак не мог вспомнить. Персистентная память, да.

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

Ну и ЕМНИП в Plan9 процесс может между компьютерами по сети гулять.

Как я уже упоминал (Автомагическая синхронизация данных (комментарий)):

but what we had in Plan 9 was completely effortless, and my dream is to return to that kind of environment. I want to be working on my home desktop, realize what time it is, run out the door to catch my train, open my laptop on the train, continue right where I left off, close the laptop, hop off the train, sit down at work, and have all my state sitting there on the monitor on my desk, all without even thinking about it.

https://usesthis.com/interviews/russ.cox/

gag ★★★★★
()

Я одно время в детстве игрался с SSI кластерами, где такое в том числе практиковалось. Но там были специальные патчи на ядро, позволявшие перекидывать открытые ресурсы между нодами. Обычный лялекс такого не умеет, к сожалению.

В общем-то, тут проблема в том, что очень большая часть «состояния» твоей программы находится за пределами её рабочего процесса: открытые файлы, картинки в видеопамяти и так далее. Т.е. тебе нужна поддержка со стороны ядра, графического фреймворка и прочих системных компонентов, чтобы всё это нормально работало. А этого в лялехе нет и не планируется.

hateyoufeel ★★★★★
()

Будет проблема с OpenGL. Приложение на ПК1 имеет жирное состояние - буферы видеопамяти, шейдеры, текстуры. Это всё надо перенести, потому что браузер без перезапуска не будет перенастраивать OpenGL. При этом есть риск, что видеокарты на ПК1 и ПК2 поддерживают разные версии OpenGL и разные фичи OpenGL (например, форматы текстур).

С cli приложениями задача реальнее, так как часто можно просто скопировать память и воссоздать потоки. Это уже решено. Соединения можно мигрировать (но надо чтобы другой стороне было ок, что сменился IP, либо чтобы оба компьютера были за одним NAT), либо даже порвать. Многие программы умеют реконнект.

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

Хочется иметь возможность «перенести ПО» на другой ПК не закрывая его

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

не было перезапуска самого браузера

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

Как вообще себя может повести ПО при попытке восстановления на ПК2, если между ПК [сильно] различаются системы и железо

Вопрос к ПО ) С него и нужно начинать решать подобные задачи, а не писать ОС для переноса любого возможного ширпотребовского хлама.

vaddd ★☆
()

Лет 10 назад у Firefox были очень продвинутые менеджеры сессий в виде расширений. Может можно было реализовать сохранение сессии в виде файла. Или интересует сохранение кроме адресов и истории переходов по страницам еще содержание самих страниц?

ex-kiev
()

При этом:
не было перезапуска самого браузера

этого не умеют даже сами браузеропейсатели, хочет он видите ли

superuser ★★★★☆
()
Ответ на: комментарий от ex-kiev

Или интересует сохранение кроме адресов и истории переходов по страницам еще содержание самих страниц?

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

firkax ★★★★★
()

https://9p.io/magic/man2html/6/snap - можно посмотреть как это сделано тут. Для начала и понимания всех сложностей.

И тут - https://books.google.ru/books?id=gX80EAAAQBAJ&pg=PA273&lpg=PA273&dq=plan9+process+dump&source=bl&ots=bvZSoHO38H&sig=ACfU3U02x6c1MdBgXn7ZPW1oZZtpDQauEQ&hl=ru&sa=X&ved=2ahUKEwiztczQ15j4AhUCyosKHYmqBlYQ6AF6BAglEAM#v=onepage&q=plan9%20process%20dump&f=false

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

Виртуалки в vmware так или почти так можно возить между хостами, у меня даже телефония поквакать не успевала как следует. Как они добились именно последнего - для меня загадка, но оно работает.

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