технологія
Завдяки поширеності ОС Windows на сьогоднішньому ринку дуже численні додатки, розроблені для цієї платформи 1. Однак залежність комерційного додатки від певної платформи (ОС) може бути не завжди зручною або вигідною. На цей випадок існують засоби, що дозволяють програмам, розробленим для ОС Windows, працювати в іншій операційній системі. Одним з найбільш розвинених серед подібних засобів є WINE.
WINE (W ine I s N ot E mulator) не є емулятором операційної системи: тобто він не створює ізольованою середовища для виконання і не забезпечує доступ до низькорівневих системних ресурсів, таким як безпосередній доступ до обладнання. Функція WINE полягає в тому, щоб, з одного боку, надати win-додатком Win API - стандартний системний інтерфейс операційних систем Windows, а з іншого боку, транслювати запити win-додатки до відповідних системні виклики (Unix API). WINE працює на різних Unix-системах, в тому числі на Linux. Таким чином, WINE - це своєрідна «прошарок» сумісності між win-додатками і host-системою 2.
Хотілося б відзначити, що процес WINE завжди виконується в непривілейованому режимі і не вимагає ніякої модифікації ядра операційної системи (в тому числі динамічно завантажуваних модулів). Звідси випливає простий висновок щодо безпеки: будь-які проблеми, які можуть бути викликані запуском win-додатків, будуть обмежені правами доступу того користувача, який запустив WINE. В результаті win-додатки будуть підкорятися політиці доступу UNIX-системи і не зможуть її порушувати.
У даного обмеження є й інша практична сторона: в WINE немає підтримки низькорівневого звернення до обладнання (драйверів обладнання, прямої роботи з USB-пристроями). Все периферійне устаткування слід підключати і налаштовувати в host-системі: для win-додатків ці пристрої можуть бути доступні стандартним способом через файлову систему або інші стандартні інтерфейси (наприклад, TWAIN для сканерів, який реалізований в WINE як обгортка над бібліотекою SANE).
Найбільш поширений спосіб застосування WINE - запуск довічних win-додатків в Unix-середовищі. Зручність полягає в тому, що при цьому не потрібно ніяк змінювати додаток - один і той же варіант годиться і для Windows, і для WINE.
Інше, на сьогоднішній день користується незаслужено меншою популярністю застосування - за допомогою WINE розробники ПЗ можуть компілювати свої win-додатки з вихідних текстів безпосередньо в двійкові виконувані файли для Unix. Знову-таки, це ті ж самі вихідні тексти, з яких компілюються виконавчі файли для Windows.
Третій спосіб використання - WINE дозволяє скомпілювати win-додаток з вихідних текстів в виконуваний exe-файл, який буде працювати на будь-який Windows-системі.
Розробка
Реалізація
Успішність і коректність роботи win-додатків в WINE природно визначається тим, наскільки середовище WINE відрізнити від Windows з точки зору win-додатки. Інакше кажучи, питання в тому, наскільки повно Win API і інші стандартні компоненти і процедури Windows реалізовані в WINE. Поточна оцінка повноти реалізації конкретних функцій публікується на сайті розробників WINE. У WINE реалізовані функції практично всіх динамічних бібліотек (DLL), що входять в Windows: починаючи від 16-розрядних і закінчуючи з'являється підтримкою 64-бітного режиму. На хорошому рівні знаходиться підтримка OLE, MSI та DirectX.
Якщо говорити про загальну оцінку повноти реалізації, то на сьогоднішній день розробники називають цифру 90%. Проте ставитися до цієї цифри потрібно не зовсім так, як до звичайного процентним співвідношенням. Справа в тому, що з точки зору успішної розробки WINE Win API має бути таким, яким його хочуть бачити програми. Повних і безпомилкових специфікацій Win API в публічному доступі немає (і ніколи не було), і це багато в чому визначило характер розробки на платформі Win. Більшість розробників win-додатків використовують тільки незначну частину стандартних функцій API, а решту необхідних функції реалізують самостійно і поставляють разом з програмою. В останні роки підмножина широко використовуваних функцій API в широкому загалу win-додатків вже стабілізувався і практично не змінюється. Для WINE це означає, що цифра 90% означає стабільну роботу більшості win-додатків в WINE навіть більше, ніж в 90% випадків.
З цієї ж причини не така суттєва небезпека відставання від змін, що вносяться до Win API в рамках операційної системи Windows. Єдина особливість - розвивається підтримка 64bit, при розробці архітектури WINE приймалася до уваги можливість розширення в цьому напрямку. Тому як тільки функції Win64 API отримають більш широке поширення, додавання їх підтримки в WINE не змусить себе довго чекати.
Налаштування локального win-оточення
Перш ніж починати працювати з WINE, кожному користувачеві. від імені якого будуть запускатися win-додатки, необхідно налаштувати локальне win-оточення. Налаштування оточення виконується автоматично при першому запуску WINE (досить ввести команду wine в командному рядку і дочекатися завершення її роботи).
При першому запуску WINE створює необхідну інфраструктуру в домашньому каталозі даного користувача, для чого виконує наступні дії:- створює початкову версію реєстру;
- вибудовує відповідності каталогів host-системи і логічних дисків WINE;
- створює каталог з програмами, який буде служити основним диском (C:) для win-додатків, для зручності цей каталог доступний як wine_c в домашньому каталозі користувача.
За замовчуванням логічні диски WINE будуть розташовані таким чином:
Приклад 1. Розміщення логічних дисків WINE за замовчуванням
Якщо якогось із необхідних рейтингів не виявиться, то відповідні посилання просто не будуть створені. Як мінімум один диск - C: буде створено в будь-якому випадку. Решта диски необов'язкові, навіть одного C: буде достатньо для роботи в WINE. Правила створення посилань за замовчуванням описані у файлі /etc/wine/map_devices.sh. при необхідності їх можна змінити. Зміни в цьому файлі торкнуться всіх користувачів, які будуть потім виконувати перший запуск WINE.
Кожен користувач може вручну змінити відповідності логічних дисків WINE каталогам host-системи або створити будь-яку кількість додаткові дисків. Всі логічні диски для WINE представлені звичайними символьними посиланнями на каталоги в каталозі $ HOME / .wine / dosdevices:
Приклад 2. Логічні диски і пристрої WINE
Щоб створити новий логічний диск або змінити наявний, досить створити нову символьне посилання з потрібним ім'ям.
Приклад 3. Створення логічного диска wine
Створюючи логічні диски WINE, потрібно взяти до уваги, що права доступу win-додатків до файлів на цих дисках будуть визначатися правами доступу даного користувача до реальних файлах host-системи.
Запуск win-додатків
Загальне правило для запуску всіх win-додатків в WINE - запускаються файли повинні знаходитися в області видимості WINE, тобто на одному з логічних дисків WINE або в його підкаталогах. Якщо програма постачається на компакт-диску, то не забудьте належним чином змонтувати диск 3. перш ніж звертатися до нього з WINE. Зверніть увагу, що в цьому випадку у вас повинен бути дозволений запуск додатків з компакт-диска. Якщо додаток поширюється не на диску - не забудьте спочатку скопіювати його в область видимості WINE.
Для запуску win-додатків найпростіше скористатися файловим браузером winefile. його можна запустити з командного рядка. Тут досить перейти в необхідний каталог і запустити програму подвійним клацанням миші.
Можна запускати win-додатки як звичайні виконувані файли host-системи (наприклад, з Midnight Commander або з командного рядка), для цього повинна бути запущена системна служба (service) wine.
Установка і видалення win-додатків
Як і в Windows, перед використанням більшу частину додатків спочатку потрібно встановити. Установка проводиться звичайним для Windows способом - за допомогою поставляється разом з win-додатком програми установки. Різниця в тому, що в разі WINE програма буде встановлена в локальному win-оточенні користувача.
Для установки win-додатки слід будь-яким зручним способом запустити програму установки (найчастіше setup.exe). Далі можна діяти за інструкцією, що пропонується постачальником win-додатки.
Багато win-додатки запитують перезавантаження для завершення установки. Природно, перезавантажувати host-систему при цьому не слід. У локальному win-оточенні процедурі завантаження Windows відповідає команда wineboot - її можна викликати з будь-командного рядка. Якщо в цей момент в WINE виконуються інші додатки, то рекомендується їх завершувати до перезавантаження.
Для видалення win-додатки, встановленого в win-оточенні, слід скористатися утилітою uninstaller. Ця утиліта виводить список встановлених в win-оточенні додатків (якщо вони зареєстровані в реєстрі). Щоб видалити додаток, виберіть його зі списку і натисніть кнопку «Uninstall». Якщо програми, яку ви хочете видалити, немає в списку, то досить просто видалити каталог з додатком (можна скористатися для цього програмою winefile. А можна - стандартними засобами host-системи).
Безпека
Поради щодо дотримання належного рівня безпеки в WINE можуть бути зведені до двох простих міркувань:- жертвою помилки в програмі або зловмисних дій з боку win-додатки (вірусу) може стати тільки та частина файлової системи, яка входить в зону видимості WINE;
- права доступу до даних визначаються правами користувача, що запустив WINE.
- Ніколи не запускайте WINE від імені користувача root. Запущене від імені root win-додаток отримає привілеї цього користувача. Для роботи вони йому ніколи не будуть потрібні, а на шкоду можуть бути вжиті запросто.
- Не слід давати доступ win-додатків до важливих системних каталогів, і особливо до кореневого каталогу файлової системи ( "/"). Навіть цілком включати домашній каталог користувача в зону видимості WINE майже напевно не потрібно.
Системі WINE доступні ті ж шрифти, що і іншим додаткам в host-системі 4. Відповідно, до цих шрифтів отримують доступ і win-додатки.
Зробити певні шрифти доступними win-додатком можна декількома способами:- Для всіх користувачів - помістити шрифти в host-системі штатним для системи способом;
- Для конкретного користувача - помістити ці шрифти в каталог шрифтів користувача (
додаткова інформація
Найбільш детальну документацію про WINE для користувачів і розробників можна знайти на сайті розробників WINE. На жаль, на сьогоднішній день ця документація доступна лише англійською мовою.
На офіційному сайті проекту WINE доступна найсвіжіша інформація по WINE, відомості про розробку, включаючи дальнейшніе плани, списки розсилки, вихідні тексти WINE, списки працюючих win-додатків, підтримуваних фукнции WinAPI і безліч іншої інформації. З російськомовних ресурсів можна звернутися до проекту «Русский WINE». який позиціонується як ресурс, який об'єднує російськомовних користувачів WINE. Тут велика увага приділяється проблемам локалізації WINE і запуску специфічних додатків, актуальних для російськомовних користувачів. Багато користувачів можуть знайти для себе корисним російськомовний форум. присвячений WINE.
1 Тут і далі ми будемо називати такі додатки win-додатками.
2 ОС Unix / Linux, в якій встановлений і виконується WINE.
3 Потрібно робити це вручну, або монтування виконується автоматично - залежить від вашого дистрибутива і стилю роботи.
4 Для отримання списку доступних шрифтів WINE використовує пакет fontconfig, а для відтворення символів - бібліотеку freetype2.