пʼятницю, 14 січня 2011 р.

KOMPAS 11 vs. WINE 1.2 - установка в Linux

По поводу этого вопроса много сказано в Интернете. Однако каждый раз — по разному. Давайте, наконец-то посмотрим правде в глаза и раскроим великую тайну всего человечества — можно ли заставить работать КОМПАС под вайном? Вот список всего, что я использовал:

     — Mandriva Linux 2010.2
     — wine 1.2-rc4 (стандартный пакет с дистрибьютива)
     — Пакет win32-библиотек
     — Kompas 3D ver.11

Набор стандартен. Многие для этого рекомендуют использовать пакет wine@etersoft, но и он не идеален — я заметил проблемы с курсором и подтормаживания, да и денежку приходится отдавать. От этой идеи пришлось отказаться и пробовать запустить КОМПАС под обычным wine`ом. И, конечно, многолетний мой опыт плясок с бубнами тут пригодился. Поэтому для упрощения жизни себе и не только я собрал все нужное в одном архиве, написал скриптовый инсталлятор и выложил в Интернете тут. Вот как его установить:
$ wget http://moemesto.ru/kondrat/file/10361410/kompas_wine_libs.tar.gz
$ tar -zxvf kompas_wine_libs.tar.gz && cd kompas_wine_libs
$ sh ./prep_inst_kompas
После установки появится программа настройки winecfg. В ней во вкладке «Libraries» в первую строку вставляем строку «msvcrt» (без кавычек) и жмем «Add» Так мы подменили динамическую библиотеку. Все, теперь можно приступать к установке. Все проходит гладко, но программа установки все-таки ругнется по поводу защиты HASP:
Игнорируем. После установки запустим Компас — запускной .desktop-файл лежит в папке«~/.local/share/applications/wine/Programs/АСКОН/КОМПАС-3D V11», который для удобстваможно скопировать на рабочий стол. Сразу перед взором нашим окно с ошибкой явится — опять про защиту лицензии:


Скорее всего Вы уже с ним знакомы. Я с этим справился, а вам не расскажу как — профессиональный секрет, попробуйте додумайтся сами:


понеділок, 10 січня 2011 р.

Задача: поставить драйвер видеокарты NVIDIA в Mandriva 2010

Проблема 1: не знаю как это сделать.
Проблема 2: не устанавливаются драйвера, скачанные с официального сайта.
Какой выбрать?
Сегодня мы попробуем решить эти две проблемы. Сначала давайте определимся, для каких целей и где мы будем использовать наш компьютер. Во-первых, для карточек Nvidia есть аж три драйвера: стандартный nv (пакет для установки — x11-driver-video-nv), немного более «продвинутый» и открытый nouveau (пакет для установки — x11-driver-video-nouveau) и закрытый пропиретарный nvidia. Первый хорошо использовать в офисе, например, чтобы работники в игры не играли. Он не поддерживает трехмерное ускорение, но можно смотреть фильмы, нормально работать с окнами. Именно за ним я вполне нормально прожил целых пол года на заре своего знакомства с линукс, но это от незнания. Второй драйвер, нуво, также открытый. Вот он уже вполне подходит для дома — умеет акселерацию и все, что из этого следует. К сожалению он имеет еще достаточно скудные возможности, недостаточно стабилен и во многом сильно уступает третьему драйверу — nvidia. Вот он все-таки отличный. По крайней мере намного качественнее других производителей, к примеру тех же ATI. Вот только лицензия не позволяет включать его в большинство дистрибьютивов, от куда и проблемы с установкой. Да, я знаю, что в репах мандривы есть и для третьего драйвер пакеты, но их ставить не так не интересно. Куда интереснее их собирать вручную. Делая это, вы рискуете научится! Вот и попробуем :)
Где взять?
Первые два — nv и nouveau есть в стандартных репозиториях в виде собранных пакетов. Просто ставим нужный пакет и все. Можно просто запустить drakx11, которая сама вытянет с интернета или диска нужные драйвера, установит их и настроит так, чтобы работало. Это самый простой способ, не требующий лишних телодвижений. Если жить под стандартным драйвером nv не хочется (и в игры не поиграешь, и современные красивые интерфейсы не запустишь. Хотя кубиком сейчас никого не удивишь), тогда фирменный nvidia и только. Также есть люди, которые принципиально все компилируют и не признают чужеродную бинарщину. Или если доступа к Всемирной нет? Что же делать в таком случае? Можно поступить следующими способами. Купить Mandriva Linux Powerpack — но это довольно дорого, зато содержит пакеты драйверов и другой коммерческий софт, плюс поддержку имеет. Или бесплатно скачать Mandriva One — в ней уже все установлено. Но мы, суровые красноглазые мужики, простые пути не выбираем и трудностей не боимся. Поэтому давайте разберем оффлайн-установку. Тем более, что в мандриве 2010.* сделать это достаточно проблематично. Для простых пользователей — хорошая головоломка. Для начала я дам немного информации про сам драйвер.
Информация.
Драйвер представляет собой файл размером порядка 20-30 МБ с расширением .run. Это самый обычный shell-скрипт, в конец которого приписали .tar.gz архив. Хотя нет, правильнее будет сказать так — архив, в начало которого дописали сценарий. При запуске сначала проверяется его целостность, потом с помощью программы dd он режется надвое: на текстовую и бинарную часть. Так как двоичные данные — это архив, то он распаковывается во временную папку и от туда выполняется программа установки — nvidia-installer. И все бы ничего, только вот разработчики Mandriva 2010 занесли этот и еще несколько драйверов в черный список. Зачем — я так и не понял. Может они решили заблочить потенциально опасное ПО, или дырку в безопасности — кто знает... Я только знаю, что это ничего, кроме лишнего геморроя не приносит. Ну что, будем с этим бороться. Про эту типа «защиту» расскажу позже. 
Подготовка.
Драйвер содержит фирменные бинарные утилиты, библиотеки OpenGL, а также некоторые исходные тексты для сборки модуля ядра nvidia.ko. Для успешной компиляции последнего мы должны поставить инструменты разработчика — исходные тексты и заголовочные файлы для ядра. Это можно сделать с помощью таких команд (все осторожно выполняем от имени root или пользуемся sudo):
# urpmi kernel-source-latest kernel-desktop-devel-latest
По зависимостям вытянутся также и другие нужные нам программы, например компилятор gcc, autoconf,
make и так далее. В общем будет установлено около 350 мегабайт. Когда все будет готово, идем на сайт www.nvidia.com и качаем последнюю версию драйвера. На момент написания статьи это была версия 260.19.21. Сохраняем в домашней папке. Однако прежде, чем начать установку, нужно, чтобы наш графический сервер был отключен — это необходимое требование установщика. Будет исполнено — переходим в виртуальную консоль нажатием клавиш Ctrl+Alt+F1 и логинимся под рутом. Гасим Х:
# /etc/init.d/dm stop
Экран потухнет — это хорошо, значит мы остановили сервис. Возможно нам придется снова вернутся в консоль — опять жмем Ctrl+Alt+F1. Теперь то мы запустим обожаемый мной файловый менеджер Midnight Commander, или просто mc. Если его нет — ставим:
# urpmi mc
Это очень сильно упростит нам жизнь.
А теперь немного теории.
В Linux есть такая технология — динамическая загрузка и выгрузка модулей ядра. Практически все современные ядра являются модульными, и это очень удобно. Модуль — по сути это тот же драйвер. Например, мы установили новое оборудование — видеокарту Nvidia. В идеале мы должны скомпилировать модуль, установить его, подгрузить и спокойно работать. Загружается так:
# modprobe nvidia
Если модуль нам не нужен — выгрузим его:
# rmmod nvidia
Все это сделано для того, чтобы менять оборудование на лету и избежать перезагрузок, как в Windows. И это здорово — особенно очень полезно на серверах, где даже минута простоя может стоить очень дорого. В не динамических (статических) ядрах все иначе. В них нет модулей — все собрано в один большой файл, и чтобы добавить новый модуль, нужно пересобирать ядро, что довольно таки неудобно и долго. И еще одно. В статических ядрах загружаются сразу все драйвера без возможности отключения. Только представьте, сколько лишней ОЗУ будет использовано. А разработчики кидают туда как можно больше всего — на всякий случай, пригодится. Итак допустим, что модуль установлен. Однако криворукость программистов еще никто не отменял и драйвер может либо жутко глючить, либо работать не так, как хочется. Что делать? Удалять модуль не будем — не для того мы его ставили. Просто временно отключим — занесем в черный список. Черный список, иначе blacklist — это набор текстовых файлов, в которые заносят названия модулей, которые нужно отключить при загрузке. Именно так разработчики Mandriva 2010 и поступили. Вы только посмотрите файлы /etc/modprobe.d/blacklist-mdv и /etc/modprobe.d/blacklist-compact — там столько всего вкусненького. Ну что ж, разблокируем драйвера:
# rm -f /etc/modprobe.d/blacklist-compact
# rm -f /etc/modprobe.d/blacklist-mdv
# echo 'blacklist pcspkr' > /etc/modprobe.d/blacklist-mdv
# echo 'blacklist snd-pcsp' >>/etc/modprobe.d/blacklist-mdv
Последние две строчки отключают эту долбаную пищалку, которая поздним вечером как пикнет — усраться можно! И еще один необходимый трюк:
# echo nvidia >> /etc/modprobe.preload
Теперь все готово, приступаем, наконец-то к установке.
Установка.
Распакуем драйвер и соберем модуль:
# chmod +x NVIDIA-Linux-x86-260.19.21.run
# ./NVIDIA-Linux-x86-260.19.21.run -x
# cd NVIDIA-Linux-x86-260.19.21/kernel
# make
# make -f Makefile.kbuild
Драйвера до версии 195 имели другое строение установочного дистрибьютива. Там вместо папки kernel есть usr/src/nv — там и проводим сборку модуля. Компиляция завершится с ошибкой вроде этой: FATAL: Error inserting nvidia (/lib/modules/2.6.33.5-desktop586-2mnb/kernel/drivers/video/nvidia.ko):No such device, но все будет хорошо. Далее устанавливаем и перезагружаемся:
# make install
# reboot
Ошибка возникает потому, что модуль пытается подгрузится, но ему что-то мешает. Перезагружаем компьютер. При загрузке экран будет моргать — это тоже нормально, пытается загрузится модуль из файла /etc/modprobe.preload в неположенное для этого время. Может вылезти сообщение с ошибкой и предложением исправить — не трогаем. Уходим на консоль Alt+F1 и теперь запускаем программу установки:
# cd NVIDIA-Linux-x86-260.19.21/
# ./nvidia-installer
На все вопросы отвечаем «Yes». Все должно работать нормально и Х-сервер запустится сам. Если этого не произошло, делаем ручками:
# echo "" > /etc/modprobe.preload
# /etc/init.d/dm start
В крайнем случае перезагружаемся. Вот и все, можно радоваться 3D ускорению, играм и компизу!
P.S. Напоследок скажу, что это способ найденный мной лично. Но это не значит, что он единственный и неповторимый. Очень даже возможно, что именно Вы найдете способ попроще и напишешете мне о нем :)
P.S.S. Надеюсь в версии 2011 таких проблем не будет и моя статья будет не нужна ;)