Что такое wine для mac
Перейти к содержимому

Что такое wine для mac

  • автор:

What is Wine?

Wine (originally an acronym for «Wine Is Not an Emulator») is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, macOS, & BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.

Latest Releases

Development:

Как легко установить Wine на Mac

фото автора

Всемогущий эксперт по написанию текстов, который хорошо разбирается в проблемах Mac и предоставляет эффективные решения.

Итак, как установить вино на мак? Несмотря на то, что Mac является лучшей программной платформой, на самом деле все еще есть функция, которой почему-то не хватает: вы не можете запускать какие-либо важные программы Windows, и вы также не можете установить Wine, чтобы действительно сделать его жизнеспособным.

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

Часть 1. Wine на Mac: обзор

Вино кажется фантастическим. Конечно, не совсем то, что вы пьете; мы имеем в виду тот, который позволяет вам запускать программы Windows без установки рабочих систем Windows. Потому что, как только вы подумали об этом, это почти дзен. Что ж, это было простое, законное программное обеспечение с открытым исходным кодом.

Вино было уникальным. Всякий раз, когда программа запускается, она запрашивает у операционной системы ресурсы, такие как объем памяти. Единственное, что нужно сделать Wine, — это убедиться, что те же самые запросы выполняются так, чтобы приложение могло выполняться должным образом.

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

Часть 2. Необходимые условия для установки Wine на Mac

Было много других предварительных условий, которые можно выполнить только до того, как вы узнаете, как установить Wine на Mac. Когда вы устанавливаете Wine на Mac, вы должны иметь Мак Йосемити а иначе выше. Вам всегда потребуется доступ к корневому пользователю, включая имя пользователя и пароль, а также защищенное подключение к Интернету.

Если вы не хотите знать, какой Mac вы используете, просто нажмите на значок Apple там, на левом плече такой панели инструментов, а также выберите «Об этом компьютере«. Проверьте прошивку вашего модема под большим Mac. На самом деле нет причин для беспокойства, если она больше 10.10.

Проверьте версию системы Mac перед установкой Wine

Поскольку только системные администраторы могут устанавливать программу, вам потребуется учетная запись администратора вашего Mac. Очень важно, чтобы вы вошли в свою учетную запись администратора даже во время активации. Всякий раз, когда на вашем компьютере есть только одна учетная запись, это почти наверняка административный профиль. Для учетной записи требуется пароль. Если вы хотите установить, а также обновить свой пароль, перейдите в раздел «Учетные записи» приложения «Настройки».

Часть 3. Как установить Wine на Mac

Эта статья покажет вам, как установить программу Wine на Mac. Одно из таких приложений позволяет Эмберд (программа для Windows) для работы на устройстве Apple Mac. Перед фактической установкой Wine необходимо установить одну программу XQuartz.

Как установить Wine на Mac

Имейте в виду, что команда Embird не создает и не поддерживает приложения Apple Mac. Xquartz а также Вино. Кроме того, учитывая, что Embird всегда был подлинным программным обеспечением для Windows, нельзя гарантировать, что почти все аспекты программного обеспечения будут правильно работать под Wine на таком Mac.

  1. Затем вы должны открыть веб-страницу Wine, после чего вам просто нужно скачать Wine на свой Mac.
  2. Далее необходимо выбрать «Mac” для установочных пакетов, которые вы загружаете.
  3. После этого вы должны знать, нажмите на ссылку с .pkg файл указан.
  4. Затем вы также должны получить Винный стабильный.
  5. После этого вы должны теперь управлять им.
  6. Просмотрите введение, после чего выберите вариант «Продолжить».
  7. Теперь вы должны включить поддержку (64 бит), при этом выберите опцию «Продолжить».
  8. После этого вы просто нажимаете «Установить», чтобы начать установку.
  9. Чтобы продолжить установку, вы должны сейчас ввести свой пароль.
  10. Затем вы должны дождаться полного завершения установки Wine.
  11. Наконец, чтобы выйти из окна установки, просто нажмите кнопку «Закрыть». Тогда оттуда, вы были сделаны.

Включите поддержку 64-битной версии при установке Wine на Mac

Заключение

И было рассмотрено в этой статье, теперь вы можете узнать, как установить вино на Mac. В дополнение к основному пункту этой статьи мы также добавили информацию о Wine и о том, какие требования необходимы для установки этой программы в операционную систему Mac.

Если вам больше не нужно Wine на вашем Mac, вы можете использовать PowerMyMac чтобы удалить его быстро. Это поможет вам легко удалить ненужные приложения со всеми связанными с ними файлами полностью. Он также работает как мощный очиститель Mac для очистки ненужных файлов и ускорения вашего Mac. Мы надеемся, что это будет очень полезно для вас. Хорошего и позитивного дня впереди.

Рейтинг: 4.4 / 5 (на основе 101 рейтинги)

Как работает Wine

Wine — это свободное программное обеспечение для запуска Windows-приложений на нескольких POSIX-совместимых операционных системах, включая Linux, macOS и BSD.

Если вы любите Linux, то наверняка когда-то запускали Wine. Возможно, для какой-то «важной» программы Windows, у которой нет аналога под Линуксом, или поиграться. Забавный факт: даже Steam Deck от Valve запускает игры через оболочку на основе Wine (она называется Proton).

За последний год я намучился с отладчиком, который позволяет одновременно дебажить и Wine, и Windows-приложение в нём. Разобраться во кишочках Wine оказалось очень интересно! Я-то раньше много им пользовался, но никогда не понимал механику целиком. Можно взять файл Windows — и просто запустить его в Linux без каких-либо изменений. Если вы хотите знать, как это сделано, добро пожаловать под кат.

Дисклеймер. В статье реальность сильно упрощается, а многие детали игнорируются. Текст даёт общее представление, как работает Wine.

© «Время приключений» (1 сезон, 18 серия) — прим. пер.

Wine — не эмулятор!

Прежде чем разбираться в работе Wine, нужно сказать, чем он НЕ является. Вообще, W.I.N.E. — это рекурсивный акроним, который расшифровывается как «Wine Is Not an Emulator». Почему? Потому что есть куча отличных эмуляторов и для старых архитектур, и для современных консолей, а Wine принципиально реализован по-другому. Давайте вкратце рассмотрим, как вообще работают эмуляторы.

Представьте простую игровую приставку, которая понимает две инструкции:

  • push — пушит заданное значение в стек
  • setpxl — достаёт три значения из стека и рисует пиксель с цветом arg1 в точке (arg2, arg3)
> dump-instructions game.rom . # рисуем красную точку по координатам (10,10) push 10 push 10 push 0xFF0000 setpxl # рисуем зелёную точку по координатам (15,15) push 15 push 15 push 0x00FF00 setpxl

Бинарный файл игры (или картридж ROM) представляет собой последовательность таких инструкций, которые аппаратное обеспечение может загрузить в память и выполнить. Нативное железо выполняет их в натуральном режиме, но как запустить старый картридж на современном ноуте? Для этого делаем эмулятор — программу, которая загружает ROM из картриджа в оперативную память и выполняет его инструкции. Это интерпретатор или виртуальная машина, если хотите. Реализация эмулятора для нашей приставки с двумя инструкциями будет довольно простой:

enum Opcode < Push(i32), SetPixel, >; let program: Vec = read_program("game.rom"); let mut window = create_new_window(160, 144); // Виртуальный дисплей 160x144 пикселей let mut stack = Vec::new(); // Стек для передачи аргументов for opcode in program < match opcode < Opcode::Push(value) => < stack.push(value); >Opcode::SetPixel => < let color = stack.pop(); let x = stack.pop(); let y = stack.pop(); window.set_pixel(x, y, color); >> >

Настоящие эмуляторы намного сложнее, но основная идея та же: поддерживать некоторый контекст (память, регистры и т.д.), обрабатывать ввод (клавиатура/мышь) и вывод (например, рисование в каком-то окне), разбирать входные данные (ROM) и выполнять инструкции одну за другой.

Разработчики Wine могли пойти по этому пути. Но есть две причины, почему они так не поступили. Во-первых, эмуляторы и виртуальные машины тормозные по своей сути — там огромный оверхед на программное выполнение каждой инструкции. Это нормально для старого железа, но не для современных программ (тем более видеоигр, которые требовательны к производительности). Во-вторых, в этом нет необходимости! Linux/macOS вполне способны запускать двоичные файлы Windows нативно, их нужно только немного подтолкнуть…

Давайте скомпилируем простую программу для Linux и Windows и сравним результат:

int foo(int x) < return x * x; >int main(int argc)

Слева — Linux, справа — Windows

Результаты заметно отличаются, но набор инструкций фактически один и тот же: push , pop , mov , add , sub , imul , ret .

Если бы у нас был «эмулятор», который понимает эти инструкции, то смог бы выполнить обе программы. И такой «эмулятор» существует — это наш CPU.

Как Linux запускает бинарники

Прежде чем запускать чужеродный двоичный файл, давайте разберёмся, как запускается под Linux родной бинарник.

❯ cat app.cc #include int main() < printf("Hello!\n"); return 0; >❯ clang app.cc -o app ❯ ./app Hello! # работает!

Довольно просто, но давайте копнём глубже. Если сделать .app ?

❯ ldd app linux-vdso.so.1 (0x00007ffddc586000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f743fcdc000) /lib64/ld-linux-x86-64.so.2 (0x00007f743fed3000) ❯ readelf -l app Elf file type is DYN (Position-Independent Executable file) Entry point 0x1050 There are 13 program headers, starting at offset 64 Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align PHDR 0x0000000000000040 0x0000000000000040 0x0000000000000040 0x00000000000002d8 0x00000000000002d8 R 0x8 INTERP 0x0000000000000318 0x0000000000000318 0x0000000000000318 0x000000000000001c 0x000000000000001c R 0x1 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] . 

Самое главное, что .app — это динамически исполняемый файл. Он зависит от некоторых динамических библиотек и требует их присутствия в рантайме. Иначе не запустится. Другой интересный момент — запрос интерпретатора ( requesting program interpreter в последней строке листинга). Какой ещё интерпретатор? Я думал, что C++ — компилируемый язык, в отличие от Python…

В данном контексте интерпретатор — это «динамический загрузчик». Специальный инструмент, которая запускает исходную программу: разрешает и загружает её зависимости, а затем передаёт ей управление.

❯ ./app Hello! # Работает! ❯ /lib64/ld-linux-x86-64.so.2 ./app Hello! # Тоже работает! # Домашнее задание: запустите это и попробуйте понять смысл выдачи. ❯ LD_DEBUG=all /lib64/ld-linux-x86-64.so.2 ./app

При запуске исполняемого файла ядро Linux определяет, что файл динамический и требует загрузчика. Затем оно запускает загрузчик, который выполняет всю работу. Это можно проверить, если запустить программу под отладчиком:

❯ lldb ./app (lldb) target create "./app" Current executable set to '/home/werat/src/cpp/app' (x86_64). (lldb) process launch --stop-at-entry Process 351228 stopped * thread #1, name = 'app', stop reason = signal SIGSTOP frame #0: 0x00007ffff7fcd050 ld-2.33.so`_start ld-2.33.so`_start: 0x7ffff7fcd050 : movq %rsp, %rdi 0x7ffff7fcd053 : callq 0x7ffff7fcdd70 ; _dl_start at rtld.c:503:1 ld-2.33.so`_dl_start_user: 0x7ffff7fcd058 : movq %rax, %r12 0x7ffff7fcd05b : movl 0x2ec57(%rip), %eax ; _dl_skip_args Process 351228 launched: '/home/werat/src/cpp/app' (x86_64)

Мы видим, что первая выполненная инструкция находится в библиотеке ld-2.33.so , а не в бинарнике .app .

Подводя итог, запуска динамически связанного исполняемого файла в Linux выглядит примерно так:

  1. Ядро загружает образ (≈ двоичный файл) и видит, что это динамический исполняемый файл
  2. Ядро загружает динамический загрузчик ( ld.so ) и передаёт ему управление
  3. Динамический загрузчик разрешает зависимости и загружает их
  4. Динамический загрузчик возвращает управление исходному двоичному файлу
  5. Оригинальный двоичный файл начинает выполнение в _start() и в конечном итоге доходит до main()
❯ ./HalfLife4.exe -bash: HalfLife4.exe: cannot execute binary file: Exec format error

Однако если пропустить шаги с первого по четвёртый и каким-то образом перескочить на пятый, то теоретически должно сработать, верно? Ведь с точки зрения операционной системы что значит «запустить» бинарный файл?

В каждом исполняемом файле есть раздел .text со списком сериализованных инструкций CPU:

❯ objdump -drS app app: file format elf64-x86-64 . Disassembly of section .text: 0000000000001050 : 1050: 31 ed xor %ebp,%ebp 1052: 49 89 d1 mov %rdx,%r9 1055: 5e pop %rsi 1056: 48 89 e2 mov %rsp,%rdx 1059: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp 105d: 50 push %rax 105e: 54 push %rsp 105f: 4c 8d 05 6a 01 00 00 lea 0x16a(%rip),%r8 # 11d0 1066: 48 8d 0d 03 01 00 00 lea 0x103(%rip),%rcx # 1170 106d: 48 8d 3d cc 00 00 00 lea 0xcc(%rip),%rdi # 1140 1074: ff 15 4e 2f 00 00 call *0x2f4e(%rip) # 3fc8 107a: f4 hlt 107b: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) . 

Чтобы «запустить» бинарный файл, ОС загружает его в память (в частности, раздел .text ), устанавливает указатель текущей инструкции на адрес, где находится код, и всё — исполняемый файл типа «запущен». Как сделать это для исполняемых файлов Windows?

Легко! Просто возьмём код из исполняемого файла Windows, загрузим в память, направим %rip в нужное место — и CPU с радостью выполнит этот код! Если архитектура процессора одинаковая, то процессору вообще без разницы, откуда выполнять ассемблерные инструкции.

Hello, Wine!

По сути, Wine — это «динамический загрузчик» для исполняемых файлов Windows. Это родной двоичный файл Linux, поэтому может нормально запускаться, и он знает, как работать с EXE и DLL. То есть своего рода эквивалент ld-linux-x86-64.so.2 :

# запуск бинарника ELF ❯ /lib64/ld-linux-x86-64.so.2 ./app # запуск бинарника PE ❯ wine64 HalfLife4.exe

Здесь wine64 загружает исполняемый файл Windows в память, анализирует его, выясняет зависимости, определяет, где находится исполняемый код (т. е. раздел .text ), и переходит в этот код.

Примечание. В действительности он переходит к чему-то вроде ntdll.dll!RtlUserThreadStart() , это точка входа в «пространство пользователя» в мире Windows. Потом в mainCRTStartup() (эквивалент _start ), и в сам main() .

На данный момент наша Linux-система выполняет код, изначально скомпилированный для Windows, и всё вроде бы работает. За исключением системных вызовов.

Системные вызовы

Системные вызовы (syscall) — вот где основные сложности. Это вызовы к функциям, которая реализованы не в бинарнике или динамических библиотеках, а в родной ОС. Набор системных вызовов представляет системный API операционной системы. В нашем случае это Windows API.

Примеры системных вызовов в Linux: read , write , open , brk , getpid

Примеры в Windows: NtReadFile , NtCreateProcess , NtCreateMutant ��

Системные вызовы не являются обычными вызовами функций в коде. Открытие файла, например, должно выполняться самим ядром, поскольку именно оно следит за файловыми дескрипторами. Поэтому приложению нужен способ как бы «прервать своё выполнение» и передать управление ядру (эта операция обычно называется переключением контекста).

Набор системных функций и способы их вызова в каждой ОС разные. Например, в Linux для вызова функции read() наш бинарник записывает в регистр %rdi дескриптор файла, в регистр %rsi — указатель буфера, а в %rdx — количество байт для чтения. Однако в ядре Windows нет функции read() ! Ни один из аргументов не имеет там смысла. Бинарник Windows использует свой способ выполнения системных вызовов, который не сработает в Linux. Не будем здесь углубляться детали системных вызовов, например, вот отличная статья о реализации в Linux.

Скомпилируем ещё одну небольшую программу и сравним сгенерированный код в Linux и Windows:

#include int main()

Слева — Linux, справа — Windows

На этот раз мы вызываем функцию из стандартной библиотеки, которая в конечном итоге выполняет системный вызов. На скриншоте выше версия Linux вызывает puts , а версия Windows — printf . Эти функции из стандартных библиотек ( libc.so в Linux, ucrtbase.dll в Windows) для упрощения взаимодействия с ядром. Под Linux сейчас частенько собирают статически связанные бинарники, не зависимые от динамических библиотек. В этом случае реализация puts встроена в двоичный файл, так что libc.so не задействуется в рантайме.

Под Windows до недавнего времени «системные вызовы bcgjkmpjdfkb только вредоносные программы» [нет источника] (вероятно, это шутка автора — прим. пер.). Обычные приложения всегда зависят от kernel32.dll/kernelbase.dll/ntdll.dll , где скрывается низкоуровневая магия тайного общения с ядром. Приложение просто вызывает функцию, а библиотеки заботятся об остальном:

источник

В этом месте вы наверное поняли, что будет дальше. ��

Трансляция системных вызовов в рантайме

А что, если «перехватывать» системные вызовы во время выполнения программы? Например, когда приложение вызывает NtWriteFile() , мы берём управление на себя, вызываем write() , а потом возвращаем результат в ожидаемом формате — и возвращаем управление. Должно сработать. Быстрое решение в лоб для примера выше:

// HelloWorld.exe lea rcx, OFFSET FLAT:`string' call printf ↓↓ // «Фальшивый» ucrtbase.dll mov edi, rcx // Преобразование аргументов в Linux ABI call puts@PLT // Вызов реальной реализации Linux ↓↓ // Real libc.so mov rdi, // запись в STDOUT mov rsi, edi // указатель на "Hello" mov rdx, 5 // сколько символов писать syscall

По идее, можно сделать собственную версию ucrtbase.dll со специальной реализацией printf . Вместо обращения к ядру Windows она будет следовать формату интерфейсов Linux ABI и вызывать функцию write из библиотеки libc.so . Однако на практике мы не можем изменять код этой библиотеки по ряду причин — это муторно и сложно, нарушает DRM, приложение может статически ссылаться на ucrtbase.dll и т. д.

Поэтому вместо редактирования бинарника мы внедримся в промежуток между исполняемым файлом и ядром, а именно в ntdll.dll . Это «ворота» в ядро, и Wine действительно предоставляет собственную реализацию. В последних версиях Wine решение состоит из двух частей: ntdll.dll (библиотека PE) и ntdll.so (библиотека ELF). Первая часть — это тоненькая прокладка, которая просто перенаправляет вызовы в ELF-аналог. А уже он содержит специальную функцию __wine_syscall_dispatcher , которая выполняет магию преобразования текущего стека из Windows в Linux и обратно.

Поэтому в Wine системный вызов выглядит следующим образом:

Диспетчер системных вызовов — это мост между мирами Windows и Linux. Он заботится о соглашениях и стандартах для системных вызовов: выделяет пространство стека, перемещает регистры и т. д. Когда выполнение переходит к библиотеке Linux ( ntdll.so ), мы можем свободно использовать любые нормальные интерфейсы Linux (например, libc или syscall ), реально читать/записывать файлы, занимать/отпускать мьютексы и так далее.

И это всё?

Звучит почти слишком просто. Но так и есть. Во-первых, под Windows много разных API. Они плохо документированы и имеют известные (и неизвестные, ха-ха) ошибки, которые следует воспроизвести в точности. (Вспомните, как при разработке Windows 95 туда скопировали утечку памяти из SimCity, чтобы популярная игра не крашилась в новой ОС. Возможно, такие специфические вещи приходится воспроизводить под Linux для корректной работы конкретных программ — прим. пер.). Большая часть исходного кода Wine — это реализация различных Windows DLL.

Во-вторых, системные вызовы можно выполнять по-разному. Технически ничто не мешает Windows-приложению выполнить прямой системный вызов через syscall , и в идеале это тоже должно работать (как мы уже говорили, Windows-игры делают всякие безумные вещи). В ядре Linux специальный механизм для обработки таких ситуаций, который, конечно, добавляет сложности.

В-третьих, весь этот бардак 32 vs 64 бит. Есть много старых 32-битных игр, которые никогда не перепишут на 64 бита. В Wine есть поддержка обеих платформ. И это тоже плюс к общей сложности.

В-четвертых, мы даже не упомянули wine-server — отдельный процесс Wine, который поддерживает «состояние» ядра (открытые дескрипторы файлов, мьютексы и т. д.).

И последнее… о, так вы хотите запустить игру? А не просто hello world? Ну так это совсем другое дело! Тогда нужно разобраться с DirectX, со звуком (привет, PulseAudio, старый друг), устройствами ввода (геймпады, джойстики) и т. д. Куча работы!

Wine разрабатывался в течение многих лет и прошёл долгий путь. Сегодня вы без проблем запускаете под Linux самые последние игры, такие как Cyberpunk 2077 или Elden Ring. Чёрт возьми, иногда производительность Wine даже выше, чем у Windows! В какое замечательное время мы живём…

P. S. На всякий случай повторим дисклеймер: статья даёт только базовое представление о работе Wine. Многие детали упрощены или опущены. Так что не судите очень строго, пожалуйста.

  • Linux
  • Wine
  • эмулятор
  • интерпретатор
  • виртуальная машина
  • динамический загрузчик
  • ядро Linux
  • ELF
  • PE
  • формат исполняемого файла
  • системные вызовы
  • Windows API
  • переключение контекста
  • системная библиотека
  • libc.so
  • ucrtbase.dl
  • Linux ABI
  • ntdll.dll
  • Windows DLL
  • Блог компании Дата-центр «Миран»
  • Системное программирование
  • Разработка игр
  • Разработка под Linux
  • Софт

Как запустить любое Windows-приложение прямо в macOS

Favorite

В закладки

Как запустить любое Windows-приложение прямо в macOS

Для операционной системы Windows существует большое количество специализированного и профильного ПО, аналогов которому нет на macOS.

Не все знают, что есть еще один способ запускать Windows-приложения прямо на Mac без дополнительных операционных систем и виртуальных машин. Работает это благодаря технологии Wine, которая не первый год выручает пользователей.

Что такое Wine

Wine — это свободно распространяемое ПО, которое предназначено для запуска 16-, 32- и 64- битных приложений, которые создавались для Microsoft Windows, в UNIX-подобных операционных системах.

Существуют сборки программы для Linux, macOS и даже Windows (чтобы запускать устаревшие программы и игры для “винды”). Wine основан на альтернативной реализации Windows API и не является эмулятором или виртуальной машиной.

Первые стабильные версии Wine появились в середине 2008 года. С того времени среда активно развивалась, части кода Wine использовались в разных программных продуктах и сборках операционных систем.

На данный момент при помощи Wine можно запустить практически любое приложение или игру из операционной системы Windows на Mac.

Преимущества и недостатки Wine

Прежде чем начать работу со средой Wine, следует изучить ее основные преимущества и недостатки. Возможно, в вашем случае уместнее использовать другой способ запуска Windows-программ.

✅ Windows приложения запаковываются в специальную “обертку” и работают как программы для macOS.

✅ Не требуется место, как для виртуальной машины, Boot Camp или дистрибутива Windows.

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

✅ Среда имеет большое количество настроек графики и производительности, что позволяет добиться комфортной работы в большинстве случаев.

❌ Wine практически не взаимодействует с подключенными к компьютеру устройствами. Использовать Windows ПО, например, для работы с подключенным iPhone не получится.

❌ Каждое запакованное приложение будет занимать не менее пары ГБ, ведь будет включать в себя все необходимые API. Если нужно запускать таким способом более 5-6 программ, проще установить виртуальную машину.

❌ Некоторые программы и игры банально не запускаются в Wine, но при этом работают в виртуальной машине или Boot Camp.

Как отключить SIP

Для начала потребуется временно отключить защиту SIP (System Integrity Protection). Это необходимо для изменения системных файлов во время установки Wine и его компонентов.

1. Перезагрузите Mac.

2. Во время включения компьютера зажмите сочетание клавиш Command + R для загрузки в режиме восстановления.

Для этого нужно использовать оригинальную беспроводную клавиатуру Apple или любую проводную. Беспроводные клавиатуры других производителей могу подключаться к Mac уже после начала запуска ОС и не позволят загрузиться в любом служебном режиме.

3. После загрузки в режиме восстановления в строке меню выбираем Утилиты – Терминал.

4. Водим следующе команду и нажимаем Ввод:

5. Перезагружаем Mac в обычном режиме. Сделать это можно из строки меню или при помощи команды “reboot”.

После завершения установки Wine и загрузки необходимых приложений можно заново включить защиту SIP. Для этого проделываем аналогичные действия, только для включения используем команду “csrutil enable”.

Как установить Wine

1. Скачайте последнюю неофициальную версию Wine с GitHub. Этот апдейт поддерживает работу с последними релизами macOS, которые еще за бортом официальных версий.

2. Извлеките приложение из архива и запустите его.

3. Нажмите “+” для добавления нового движка и найдите в списке WS11WineCX64Bit19.01.

Это самая актуальная версия с поддержкой 32-битных приложений.

4. Нажмите Download and Install и дождитесь окончания процесса установки.

5. Нажмите кнопку Update и дождитесь окончания обновления модуля.

Все. Среда Wine готова для установки приложений. Скачайте подходящие установочные пакеты для операционной системы Windows.

Как установить приложение или игру через Wine

Описанные в предыдущем пункте манипуляции проводятся один раз. После этого для добавления новой программы или игры нужно сделать следующее:

1. Нажмите кнопку Create New Blank Wrapper.

2. Укажите название будущего приложения, нажмите Ok и дождитесь окончания процесса.

3. В последнем диалоговом окне нажмите View wrapper in Finder.

4. Запустите созданную заготовку будущего приложения.

5. Нажмите кнопку Install software.

6. Выберите пункт Choose Setup Executable.

7. Укажите установочный покет для ОС Windows и произведите привычную установку программы.

8. После установки укажите правильный *.exe файл для запуска программы и нажмите Ok. Приложение может подхватить не сам исполняемый файл, а, например, файл для деинсталляции программы.

9. Нажмите кнопку Advanced в меню Wineskin.

10. В настройках на вкладке Configuration можете изменить иконку приложения. На вкладке Options отключите все установленные флаги.

11. Перейдите на вкладку Tools и нажмите Config Utility (winecfg).

12. На вкладке Графика включите самую верхнюю опцию, нажмите Применить и закройте окно.

Готово! Теперь можете запускать созданное приложение. Оно будет доступно в папке /Applications/Wineskin или в Launchpad.

Вот так можно запросто запускать на Mac большинство Windows приложений. Кстати, можете установить 32-битные Windows-игры, аналоги которых для macOS не обновили под 64-битную архитектуру.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *