КОМПАС-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.