КОМПАС-3D под FreeBSD в среде Wine на видеокарте nVidia

Данный пост можно рассматривать как дополнение к «КОМПАС-3D и Linux → Часть 1»

Небольшое отступление.

К фрюхе я неравнодушен давно, года с 1996-го, но использовал её ранее только как серверную ОС. О том, что бы установить FreeBSD на рабочий ноутбук, как -то даже и мысли не возникало. Но времена меняются. С месяц назад я просто почувствовал, что пора… пора расстаться с этим недоразумением под названием Windows и накатил FreeBSD 13.0 на свой рабочий ASUS VX7. Почему не Linux? Потому, что фрюха — это наше все! О том, как проходил процесс пуско-наладки FreeBSD на отдельно взятом ноутбуке можно написать не один пост, но сейчас вопрос не об этом.

Дело в том, что мне по долгу службы часто приходится иметь дело с 3D моделями, для этой цели пару лет назад была приобретена сетевая лицензия на КОМПАС-3D, а так же оформлена подписка на Fusion 360. После перехода на фрю, оба этих инструмента мне стали недоступны и я вынужден был использовать FreeCAD. К сожалению, приходится констатировать факт — FreeCAD урод от рождения, пользоваться им можно, но крайне тяжело. Это вынудило меня потратить некоторое время на поиски альтернативного решения, а именно — как заставить Fusion 360 или КОМПАС-3D работать под FreeBSD в среде Wine.

Несколько бессонных ночей ушло на то, что бы выяснить, что Wine под FreeBSD, по идеологическим соображениям, не может исполнять приложения PE32 (смесь 32 и 64 битного кода), а Fusion оказался именно таким и другим уже не будет (т.е. чисто 32-х битной версии Fusion-а нет). К слову сказать, Fusion 360 под Linux-ом прекрасно работает в среде Wine. Разочарованный таким положением дел я принялся изучать эту же тему с КОМПАСом и, не без удивления, обнаружил статью на Хабре с подробной инструкцией как запустить КОМПАС-3D под Linux-ом. Проделав незатейливые манипуляции, выяснил, что КОМПАС таки работает под FreeBSD! Но есть один нюанс — видео карта nVidia GeForce GTX 560M в моём ноутбуке с которой Wine, по-умолчанию, не дружит. Выглядит это так: виндовое приложение (КОМПАС) запускается и даже делает вид что работает, но вместо 3D графики мы видим черное (серое) поле, т.е. 3D графика просто не рендерится. Отключение использования аппаратного ускорителя в настройках КОМПАСа не дало никакого эффекта. Сам факт того, что КОМПАС запускается меня воодушевил на дальнейшие поиски и это привело меня на форум разработчиков FreeBSD где обсуждается необходимость патчить Wine добавлением 32-битных драйверов от проприетарного драйвера nVidia. Более того, монтейнеры порта emulators/i386-wine и emulators/i386-wine-devel добавили в него скрипт files/nvidia.sh который самостотельно находит проприетарный видео-драйвер и накатывает патч, после чего wine можно собирать и устанавливать и все будет как в сказке.

И так, инструкция по запуску КОМПАС-3D V20 под FreeBSD 13.0 в среде Wine32.

Прежде стоит отметить, что запускать будем только 32-х битную версию КОМПАС-3D, так как 64-х битная это все тот же PE32 и работать она не будет до тех пор, пока в порт Wine не вернут поддержку PE32. А значит, запускать будем под wine32 версии 6.12 (пакет emulators/i386-wine-devel).

1. Установить проприетарный видео драйвер от nVidia. В моем случае это порт x11/nvidia-driver-390:

# cd /usr/ports/x11/nvidia-driver-390
# make && make install

2. Добавить загрузку ядерных модулей драйвера, для чего в файл /boo/loader.conf добавить:

nvidia_load="YES"
nvidia-modset_load="YES"

3. Дать Xorg-у указание использовать проприетарный драйвер, для этого в /etc/X11/xorg.conf в секции Device указать »nvidia» как показано ниже:

EndSectionSection "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BusID    "PCI:1:0:0"
EndSection

4. Убедиться в том, что драйвер загружен, а команда glxinfo -В выдает подобное:

$ glxinfo -B

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
Memory info (GL_NVX_gpu_memory_info):
    Dedicated video memory: 3072 MB
    Total available memory: 3072 MB
    Currently available dedicated video memory: 2854 MB
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 560M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 390.144
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

OpenGL version string: 4.5.0 NVIDIA 390.144
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)

OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 390.144
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

5. Пропатчить и установить Wine 32-х битный:

# cd /usr/ports/emulators/i386-wine-devel/
# sh files/nvidia.sh 
===> Patching i386-wine to work with x11/nvidia-driver:
=> Detected i386-wine: 6.12,1
=> Detected nvidia-driver: 390.144
=> Extracting NVIDIA-FreeBSD-x86-390.144.tar.gz to /usr/local/lib32...
x libnvidia-glcore.so.1
x libnvidia-tls.so.1
x libGL.so.1
=> Cleaning up...
===> i386-wine-6.12,1 successfully patched for nvidia-driver-390.144

# make && make install

6. На сайте АСКОНа — разрабочика пакета КОМПАС-3D, по какой-то причине 32-х битная версия пакета не доступна, но указано, что любой желающий может получить её отправив запрос по электронной почте на need_32@ascon.ru. Я написал запрос, отправил и ссылка пришла в ту же секунду — ответил робот.

7. Скачиваем инсталляшку размером 1.7 ГБ.

8. Пока инстлляшка КОМПАСа скачивается, займемся подготовкой среды Wine. Нам потребуется установить следующие пакеты: dotnet472, d3dcompiler_47, vcrun2015 и corefonts c помощью утилиты winetricks:

Установим саму утилиту winetricks:

$ sudo pkg install winetricks

Устанавливаем пакеты:

$ winetricks --force -q dotnet472 d3dcompiler_47 vcrun2015 corefonts

Замечание: все скачаные утилитой winetricks пакеты будут установлены к пользователю в домашний каталог в подкаталог ~/.wine

9. Запускаем конфигуратор winecfg и указываем тип операционной системы по-умолчанию: Windows 7. В этой же утилите, по желанию, можно подкрутить размер системного шрифта для win32 приложений и прочие настройки.

10. Распаковываем скачанную инсталляшку. Cодержимое скачанного архива не содержит подкаталога, а значит команда unzip распакует вам десяток файлов в текущий каталог, что несколько «не айс». По этому имеет смысл создать временный каталог, скажем compas_install_dir, и распаковать инсталляшку в него.

11. Запускаем инсталлятор КОМПАС-а:

$ cd compas_install_dir
$ wine ./Setup.exe

и следуем его инструкциям.

После завершения инсталлятора, на рабочем столе (Desktop-е) появится иконка для запуска приложения. Если же по какой-то причине она не появилась, то КОМПАС можно запустить «от руки»:

$ wine ~/.wine/drive_c/"Program Files/ASCON/KOMPAS-3D v20/Bin/KOMPAS.Exe"

Маловероятно, что найдутся желаюшие запускать КОМПАС-3D под FreeBSD, но все же я надеюсь, что данная инструкция будет кому-то полезной для запуска других виндовых приложений в среде Wine под FreeBSD на машинах с карточками nVidia.

image-loader.svg

© Habrahabr.ru