Маленькие и полезные рецепты для работы с Linux
Решил я обезопасить и сделать более комфортным свое жилище. Обезопасить - это потому, что у меня инет канал обычно не пустует, зачем ему зря пропадать, как говориться, а меня иногда не бывает дома - а комп работает - я случаев таких не знаю, но есть вероятность воспламенения компьютера. Более комфортным - это понятно - нет ночного гула.
Начнем с железной части.
Так как дело происходит зимой, то главный вопрос, который возникает - а выдержит ли холода система.
На одном форуме доказывал человек о стойкости железа к морозам, приводя в пример системы моментальных платежей, аргументируя это тем, что в них находятся обычные комплектующие.
Я решил проверить это. Сначала я поставил системник (pentium 1200 с 512 Mb DIMM) просто голым, проведя предварительно питание и сеть, больше ничего не надо. Проработал ночь при 0 градусов на улице (балког застеклен, не не утеплен), с утра отвалился, пинги не шли, но все крутилось. Думал - холодно ему, надо сделать ящик, да и от внешнего воздействия не помешает. Сделали ящик, попутно устанавливая софт, все это заняло около недели.
О софте.
Поставлен debian etch - единственный дистрибутив, который у меня был 32 битным. Иксы ставить не стал, ибо незачем =). Настроил sshd, samba (подключен сетевой диск с шарой к винде), для закачек поставлен дополнительный винт 80 Гб, который отформатирован в файловую систему reiser fs; apache, установлен rtorrent, последний из svn, как написано тут, но wtorrent ставить не стал - точнее поставил, но отказался, нашел более интересную веб морду - называется ruTorrent, практически аналог utorrenta, но в вебе, почти все на яваскрипте, ниже скрин.
Текущая версия ruTorrent - 1.6, на скрине 0.1. Единственный момент - пришлось скачать по ссылке файлик settings.txt и поместить его в папку settings.
Веб мордочка очень понравилась. Единственный минус, правда это минус самого rtorrent - нет очереди закачки. Но есть приоритеты и ограничения глобальных слотов скачки. В принципе, это тоже самое.
Вернемся к железной части. Когда все было готово, ящик покрашен и высушен, пришла пора проверить его в деле. Вот он собственно сам:
А вот как устроена связь:
Процесс размещения системы в стойке =) Естественно, комп был прогрет дома и запущен сразу.
А вот так он выглядит в боевом состоянии:
Так вот, первый заход оказался неудачным - те же симптомы, что и при первой пробе, но быстрее, ибо температура на улице минус 10 градусов - пинг пропадает, хотя по звуку все крутится. Проработал полчаса, вот температура, снятая сенсорами каждые 5-10 минут:
M/B Temp: +17°C (high = +105°C, hyst = +0°C)
CPU Temp: +36.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +14°C (high = +105°C, hyst = +0°C)
CPU Temp: +29.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +13°C (high = +105°C, hyst = +0°C)
CPU Temp: +28.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +13°C (high = +105°C, hyst = +0°C)
CPU Temp: +27.0°C (high = +100°C, hyst = +92°C)
Дальше он не отвечал на запросы.
Вернул системник назад - открыл - потрогал руками самые холодные места - сетевая была самой холодной. Это было какая-то сетевушка под названием complex, очевидно качество не очень. Решил заменить, нашел acorp с чипом realtek. Провел ту же процедуру помещения в стойку =). Вечером похолодало до -12 градусов. ПРоцесс снятия температуры:
M/B Temp: +14°C (high = +105°C, hyst = +0°C)
CPU Temp: +34.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +13°C (high = +105°C, hyst = +0°C)
CPU Temp: +27.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +12°C (high = +105°C, hyst = +0°C)
CPU Temp: +26.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +11°C (high = +105°C, hyst = +0°C)
CPU Temp: +25.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +11°C (high = +105°C, hyst = +0°C)
CPU Temp: +26.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +11°C (high = +105°C, hyst = +0°C)
CPU Temp: +25.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +10°C (high = +105°C, hyst = +0°C)
CPU Temp: +25.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +10°C (high = +105°C, hyst = +0°C)
CPU Temp: +27.0°C (high = +100°C, hyst = +92°C)
M/B Temp: +10°C (high = +105°C, hyst = +0°C)
CPU Temp: +23.0°C (high = +100°C, hyst = +92°C)
Как видно, гораздо более низкие температуры и все в порядке, процессор еще остывает, но на материнке установилась стабильная температура.
Клиент торрента работает, посмотрим, как проживет система ночь (довольно холодную, так как половина января температура была не больше -5 градусов), но то, что слабым местом в предыдущей конфигурации стала сетевая карта (кстати в теплых условиях работающая стабильно), это мы выяснили, то есть, для низких температур не всякое железо подойдет.
Решил для себя, для других и для остальных :) сделать репозиторий Mint+Karmic 32 битный в неДОМОЛИНКОВСКОЙ локалке. И что же я увидел? Родной debmirror отказывается понимать файлы Packages.gz, подавайте ему Packages.bz2. А они как назло отсутствовали в репозитории Mintа. Немного погуглив нашел решение данной проблемы. Спешу поделится со всеми.
1) Копируем debmirror в папку для экспериментов
cp /usr/bin/debmirror ~/sborka
2) Копируем и в ту же папку разархивируем патч
3) Патчим -) :
patch < debmirror_nopkgbz2_patch
Можете заменить исходный файлик пропатченным, а можете запускать пропатченный файлик, это уже не столь важно.
Главное, у debmirror появилась опция --nopkgbz2, которая позволяет работать с gz вместо bz2.
Приятного зеркалирования репозитариев :)
Перед началом каждого учебного года в компьютерных залах нашего института происходит примерно один и тот же процесс - подготовка рабочих станций к занятиям: установка и настройка ОС и ПО. Алгоритм всего этого действа до безобразия прост: подготавливаешь одну машину, снимаешь с неё образ и разливаешь на остальные машины в зале.
И всё бы хорошо, но нет предела совершенству: Acronis True Image, который мы используем для работы с образами, очень долго не хотел селиться на USB-Flash и загружаться с помощью syslinux. Нет, конечно, созданная его (Acronis) средствами USB-Flash грузилась и работала, но её загрузчик не видел, в частности, образ KNOPPIX, который тоже жил на этой флешке. Недолго думая, я решил заменить syslinux на Grub, потому как возможностей у него побольше.
Установка Grub в MBR USB-Flash оказалась проще простого:
1. С помощью GParted создаём раздел VFAT(32) (чтобы она была видна и в Win)
2. Монтируем её командой sudo mount /dev/sda1 /mnt
3. Создаём директорию для Grub: sudo mkdir -p /mnt/boot/grub
4. Копируем файлы default, device.map, menu.lst, stage1, stage2 и fat_stage1_5 в /mnt/boot/grub
5. Отмонтируем флешку: sudo mount /dev/sda1
6. Запускаем Grub: grub
7. Задаём соответствие между устройствами: grub> device (hd0) /dev/sda
8. Устанавливаем корневой раздел: grub> root (hd0,0)
9. Запиcываем MBR: grub> setup (hd0)
10. После этого заново монтируем флешку и редактируем menu.lst для загрузки нужных образов, например
title Acronis True Image 9.0.0.2337 root (hd0,0) kernel /kernels/ti9.dat vga=788 ramdisk_size=28672 acpi=off quiet initrd /images/ti9.dat title Acronis Disk Director Suite 10.0.0.2077 root (hd0,0) kernel /kernels/dds10.dat vga=788 ramdisk_size=28672 acpi=off quiet initrd /images/dds10.dat title @ctive utilites root (hd0,0) kernel /kernels/memdisk initrd /images/active.img quiet title Memtest86+ 1.70, test for memory root (hd0,0) kernel /images/memtest86+.bin quiet title REBOOT reboot title Shutdown PC halt
Взято с http://ubuntero.blogspot.com/2008/01/grub-usb-flash.html
В первую очередь эта заметка посвещена всем тем, кому надоело видеть в своих плейлистах крякозяблы вместо русских букв. Вданной заметке речь пойдет о скрипте mutagen (нашел его на одном из форумов, кто автор не знаю, но большое ему спасибо, все просто и удобно).
И так скачиваем данный скрипт с нашего ФТП
1. Распаковываем в любую удобную для Вас папку. 2. Переходим в папку со скриптом (в терминале) 3. $ ./setup.py build $ sudo ./setup.py install 4. заходим в нужную папку с мп3 (в терминале ) cd /path... 5. запускаем : find -iname "*.mp3" -print0 | xargs -0 mid3iconv -eCP1251 --remove-v1
Вот и все на выходе получаем MP3 файл, теги которого записаны в UNICODE ... такие теги отлично читаемы проигрывателями ОС Windows и Linux.
P.S. для скрипта необходимо наличие Python
Казалось-бы не самая сложная задача, однако Opera не умеет по-человечески экспортировать почту куда-либо, а Thunderbird имеет очень скудный выбор источников для импортирования, но не все так плохо.
Итак, после непродолжительного гугления, было выяснено, что обе программы хранят почту в одинаковом формате, но загвоздка заключается в том, что в Opera 9.5 почта хранится в большом количестве файлов, расположенных внутри директории ~/.opera/mail/store.
Итак, решение:
В thunderbird создать новую учетную запись типа Mailspool с произвольными данными и поставить галочку "Использовать общую папку входящие". Это нужно чтобы создалcя нужный файлик и Thunderbird нормально съел подсунутую базу. Закрываем Thunderbird. Далее:
$cp -r /home/neo/.opera/mail/store ~/tmp/store $find ~/tmp/store/ -iname "*.mbs" -exec cat {} >> ~/tmp/Inbox \; $cp ~/tmp/Inbox ~/.thunderbird/pj1erzcc.default/Mail/Local Folders/Inbox
Вместо pj1erzcc нужно поставить Ваше имя, оно генерируется случайным образом.
$rm -rf ~/tmp/store
Запускаем Thunderbird и сортируем импортированное по своему усмотрению. Все.
PS Вместе с почтой будут импортированы и RSS ленты, если таковые были.
При переходе на Linux возникает потребность в программах, аналогичных тем, с которыми пользователь работал в Windows. Однако выбор аналога не всегда является достаточной операцией. Как быть с данными, которые были наработаны за долгие годы?
При переходе на Linux возникает потребность в программах, аналогичных тем, с которыми пользователь работал в Windows. Однако выбор аналога не всегда является достаточной операцией. Как быть с данными, которые были наработаны за долгие годы? Их нужно конвертировать (часто форматы совпадают и конвертирования не требуется). Речь пойдёт о письмах. При работе с ними по протоколу POP (т.е. копируем себе на компьютер) можем просматривать даже при отсутствии (нарушении) подключения к интернет. Итак все письма хранятся в Windows. Как перенести? Качать заново может оказаться накладно, да и то, если оставляем письма на сервере. Предлагаю применить способ, описанный ниже.
Базу будем переносить из MS Outlook 2003 в Kmail.
Первая проблема Kmail не желает сотрудничать с базой Outlook. Воспользуемся промежуточной программой The Bat!. Её пробный период 30 дней нам хватит. Сначала выбрал The Bat! 3.95, но при импорте почти все письма оказались пустыми, заменил на 2.64 проблема исчезла.
Windows.
При установке The Bat! появляется много разных окошек. Одно из них спросит, где мы хотим хранить базу. Лучше выбрать где-нибудь поближе к корню диска, чтобы потом не искать. Итак, поставили,запустили, теперь выбираем: Инструменты > Импортировать письма > Мастер импортирования
Выскакивает окошко и спрашивает из какого клиента мы будем импортировать базу.
Выбираем Outlook. Далее. Теперь выбираем те папки, какие хотим импортировать. Следующий этап как раз является самим преобразованием форматов одной базы в другую. Длительность этого процесса прямо пропорциональна количеству писем в базе-источнике. Батовскую базу переносим в Linux (посредством флешки, CD, винчестера, FTP-сервера и т.п. как удобнее).
Linux. Открываем Kmail, выбираем: Файл > Импорт писем
Открывается утилита импорта. Здесь есть выпадающий список программ, из которых можно импортировать данные. Нам нужно «Импорт папок и писем The Bat!».
Дальше нас спрашивают батовскую базу указываем путь к директории. Ждём. Всё. База перенесена.
Теперь приведу орграф, который составил по данным The Bat! и Kmail. Он показывает как можно перенести письма между клиентами. Схема эта на полноту, конечно, не претендует, но некоторое дополнение внесёт.
Всё началось с того, что все заметили, как много оперативной памяти кушает firefox. А также то, что он не возвращает её системе после закрытия всех открытых web-страниц. В этой небольшой заметке можно узнать почему это происходит и как с этим бороться.
Оказывается, что реализация malloc в glibc выделяет память в куче с помощью brk/sbrk, т.е. одним большим связным куском. Эта куча может уменьшаться только с конца, освободить память в середине невозможно (не считая вызова madvise). Так что даже один байт в конце кучи не позволяет отдать память системе. И malloc размещает переменные в памяти по сути просто друг за другом. Это создаёт условия для такого явления, как фрагментация памяти.
Существенно улучшить положение может аллокатор, основанный на mmap (mmap--вызов, выделяющий память отдельной областью, пропорционально размеру страницы, 4096 байт) и на соответствующих алгоритмах размещения переменных в памяти.
Можно использовать довольно простой аллокатор из OpenBSD-libc. Вообще-то, он был создан для другой цели, обеспечения безопасности -- защиты от ошибки переполнения буфера... но пришлось использовать его по причине отсутствия "навороченного" mmap-based аллокатора.
Предварительная версия для ОС Linux может быть найдена здесь. Собирать так:
gcc -shared -fPIC -O2 OpenBSD_malloc_Linux.c -o malloc.so
запускать так:
LD_PRELOAD=/path/to/malloc.so firefox.
Этот аллокатор можно использовать и с другими программами, но не со всеми работает (например, с emacs не работал, а также, говорят, с некоторыми сборками KDE). Но firefox почти у всех (и у меня всегда) работает.
Объяснение явления.
1. Почему память не возвращается?
Ответ на этот вопрос очевиден--не все переменные удаляются, и некоторые из них "затыкают" кучу с конца.
2. Если закрыть все web-страницы, кроме одной, а затем продолжить использовать браузер, то почему потребление памяти снова растёт и растёт неограниченно--ведь в куче должно было остаться достаточно места от предыдущих web-страниц?
Из эксперимента ясно, что общий объём всех аллокаций в ~500M при 50M занятой памяти. Размер аллокаций разный--есть и в 20 байт, есть и в 4000 байт, причём малых аллокаций во много раз больше. Таким образом, если в куче появляется большая дырка, то она тут же занимается меньшими по сравнению с ней кусками, в промежутках между которыми набросано много совсем мелких кусков размером ~20 байт, некоторые из этих мелких кусков не удалятся--а это значит, что после того, как меньшие куски будут удалены, большая дырка разобъётся на несколько меньших дырок. Вспомнив, что такой процесс происходит порядка 500M/50M=10 раз, становится понятно, что используемая за время даже небольшого сеанса превращается в кашу, т.е. в куче аллокированные куски разделены небольшими промежутками, больших дырок в куче нет. А это значит, что когда firefox'у понадобится аллокировать большой кусок, то в куче для него не окажется достаточного промежутка, и прийдётся делать это расширяя всю кучу с помощью всё той же brk/sbrk.
Обе эти проблемы могут большей частью решены хорошим аллокатором, основанным на mmap.
В заключение стоит сказать, что потребление памяти оперой на данный момент у меня снизилось в 3(!) раза, FF тоже кушает заметно меньше (не привожу цифры, ибо его практически не использую). На других приложениях пока не тестировал.
Основано на информации с сайта mr.himki.net
Итак, начиналось все с поднятия некоторого web-сервера, на котором, к удивлению многих, не отрабатывали скрипты обработки изображений, выдавая такую строку в error.log:
[Mon Feb 02 19:32:12 2009] [error] [client 123.123.123.123] PHP Fatal error: Call to undefined function imageantialias() in /var/www/project46/httpdocs/forum/includes/class_image.php on line 1636
Путем нехитрых манипуляция с поисковой системой гугл посредством браузера Firefox, было найдено следующее решение:
Суть проблемы заключается в том, что Debian и основанные на нем дистрибудивы содержат не оригинальную версию библиотеки GD, а собственную ее модификацию, в которой отсутствуют некоторые функции, которые, по мнению разработчиков Debian, могут быть потенциально опасны ( одна из этих функций - imageantialias, упомянутая в логе). К счастью эти функции не вырезаны совсем, а просто отключены, так что для восстановления функциональности достаточно будет пересобрать PHP, включив их.
Примечание: советую собирать пакеты в виртуальной машине, чтобы не засорять сервер ненужными приложениями.
# Стаивим програмы, необходимые для сборки
apt-get install build-essential debhelper fakeroot
# топаем в /usr/src
cd /usr/src
# Скачиваем исходники PHP
apt-get source php5
# Устанавливаем зависимости для сборки PHP5
apt-get build-dep php5
cd php5-5.2.3
Теперь надо открыт файл debian/rules вашим любимым текстовым редактором и заменить строку
--with-gd=shared,/usr --enable-gd-native-ttf \
на
--with-gd=shared --enable-gd-native-ttf \
После чего остается собрать пакеты
dpkg-buildpackage -rfakeroot
залить их на сервер и установить
dpkg -i php5-gd_5.2.0-8+etch13_i386.deb
Источник (англ.)
Как говорится, голь на выдумки хитра. Нет у меня пока большой флешки SD для моей Nokia N800, а кино посмотреть хочется (точнее, хочется посмотреть, как смотрится кино на ней).
Что нам требуется: Непосредственно сама Нокия :), точка доступа WiFi (или карточка WiFi, точка, ес-но предпочтительней), комп соединенный с точкой доступа, и Линукс на компе :).
Операции проводились на софте: Debian Etch 4.0, на Нокии IT OS2007.
Для начала установим конвертор видео на десктоп. Говорят можно и не кодируя смотреть - но не все, я решил что конвертор все таки нужен.
Качаем отсюда media convertor под Линукс. Это есть архив с .jar файлом, для запуска которого необходима Ява машина и mencoder. Побродив по интернету, обнаружил что ее как таковой нет для Debian, и ее надо качать с сайта sun. Но покопавшись в дистрибутиве etch'а обнаружил, что все-таки есть альтернатива - пакет java-gcj-compat, который неплохо справляется с конвертором. Указываем чтобы наш .jar файл запускался с помощью java runtime.
mencoder входит в состав mplayer, но почему то не входит с состав etch (хоть и mplayer входит). Для его установки можно попробовать скомпилировать mplayer, а можно поставить из репозитория http://www.debian-multimedia.org/ (придется скачать около 5 мегабайт).
Media Convertor запустился без проблем и работать начал тоже без проблем.
В роли ftp сервера использовал proftpd. Настройки у него в одном файле и простые, так как комп в локальной сети - заморачиваться по поводу авторизации не стал - использовал гостевой доступ. Настройки простые - в инете на каждом шагу.
Отлично. У нас есть кодированый фильм и доступ к нему по фтп (настройки wifi в точке доступа тоже простые).
Далее. Нам нужен mplayer и терминал на таблетке (так называют интернет-планшет в обиходе)/
Терминал ставиться без особых проблем отсюда http://maemo.org/downloads/product/osso-xterm-advanced/
mplayer тоже http://maemo.org/downloads/product/mplayer/ (он сразу и ставит некий launcher для иксов)
И тут начинается самое интересное. Устанавливаем wifi соединение, заходим на ftp (например, ftp://192.168.1.2) браузером, копируем ссылку на фильм, открываем xterm и пишем - $mplayer ftp://192.168.1.2/film.avi
Приятного просмотра! ;)
Перевод статьи twickline, опубликованной в блоге http://wine-review.blogspot.com/2007/11/directx-90c-on-linux-with-wine.html.
Статья рассказывает об установке DirectX9.0c в wine. Возможно кому-нибудь будет интересно.
Замечания и предложения приветствуются.
ЗЫ Простите за мой английский... и за русский тоже :)
Microsoft DirectX это коллекция API для выполнения задач, связанных с мультимедиа, особенно программирования игр и видео на платформе Microsoft. Названия этих API начинается со слова Direct. Например: Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound и так далее. DirectX это общий термин, обозначающий все эти Directчтонибудь API. И этот термин дал название коллекции. За прошедшие годы многие API были изменены и перемещены, так что это соглашение о наименовании больше не действительно. К примеру X заменил Direct в первых частях названий некоторых новых DirectX технологий, таких как XAct, Xinput и т. д.
Direct3D (графический API в составе DirectX) широко используется в разработке компьютерных игр для Microsoft Windows, Microsoft Xbox и Microsoft Xbox 360. Direct3D так-же используется другими приложениями для визуализации и обработки графики, что особенно заметно в инженерных приложениях CAD/CAM, потому что они способны быстро обрабатывать высококачественную 3D графику, используя DirectX-совместимое аппаратное обеспечение. Так как Direct3D это широкоизвестный API в составе DirectX, нередко название DirectX используется вместо Direct3D.
Действия производились с чистой конфигурационной директорией Wine на виртуальном рабочем столе 1024x768
$ winecfg
Как только директория .wine будет создана, запуститься конфигурационная утилита, в которой вы сможете установить параметры виртуального рабочего стола на вкладке Видео. Так-же хорошей идеей будет выбрать Ваш аудио драйвер на вкладке Аудио.
Следующий шаг это установка родной mscoree.dll и streamci.dll в директорию /system32
из установленной Windows.
Перейдите в ~/.wine/drive_c/windows/system32 и переименуйте d3d8, d3d9, ddraw, dsound, dsound.vxd, quartz dlls в *.bak.
Вам будет необходимо поставить большое количество dll, для корректной работы инсталлятора. Ниже приведен полный список dll, которые должны быть установлены.
"d3d8"="nat ive" "d3d9"="native" "d3dim"="native" "d3drm"="native" "d3dx8"="native" "d3dxof"="native" "dciman32"="native" "ddrawex"="native" "devenum"="native" "dinput"="native" "dinput8"="native" "dmband"="native" "dmcompos"="native" "dmime"="native" "dmloader"="native" "dmscript"="native" "dmstyle"="native" "dmsynth"="native" "dmusic"="native" "dplay"="native" "dplayx"="native" "dpnaddr"="native" "dpnet"="native" "dpnhpast"="native" "dswave"="native" "dxdiagn"="native" "mscoree"="native" "quartz"="native" "streamci"="native"
Скачайте DirectX 9.0c November release.
directx_nov2007_redist.exe Извлечет файлы инсталлятора в выбранную Вами директорию.
tom@tuxonfire ~ $ wine directx_nov2007_redist.exe fixme:advapi:DecryptFileA "z:\\home\\tom\\directx-9\\" 00000000 fixme:midi:OSS_MidiInit Synthesizer supports MIDI in. Not yet supported. tom@tuxonfire ~ $
Теперь перейдите в директорию, в которую Вы распаковали DirectX и запустите DXSETUP.EXE.
tom@tuxonfire ~ $ cd /home/tom/directx-9 tom@tuxonfire ~/directx-9 $ wine DXSETUP.EXE fixme:midi:OSS_MidiInit Synthesizer supports MIDI in. Not yet supported.
Запустите winecfg снова и установите d3d8, d3d9, ddrawex, dinut, dinput8 как встроенные wine.
Теперь запустите dxdiag.exe
tom@tuxonfire ~/directx-9 $ cd /home/tom/.wine/drive_c/windows/system32 tom@tuxonfire ~/.wine/drive_c/windows/system32 $ wine dxdiag.exe fixme:ole:CoInitializeSecurity ((nil),-1,(nil),(nil),1,3,(nil),0,(nil)) - stub!
Теперь мы можем протестировать ddraw, ddraw 3D, D3D8 и D3D9
После удачного тестирования необходимо установить gm.dls для теста Direct Music, этот драйвер поместите в ~/.wine/drive_c/windows/system32/drivers
Вы получите уведомление в system32 d3dx9_24.dll до d3dx9_36.dll установлены, это поможет Вам при запуске игр, которые требуют дополнительных библиотек DirectX.
Теперь Вы имеете возможность запускать многие библиотеки DirectX в режиме native или builtin. К примеру, если игра падает со встроенной библиотекой Wine quartz.dll, Вы можете попробовать запустить ее с оригинальной Windows dll и посмотреть как это улучшит ситуацию.
Не забывайте, что d3d8, d3d9, ddraw будут работать толька как builtin, и во многих случаях Вы должны будете попробовать использовать встроенные dsound и dinput. Кстати, у меня были некоторые успешные попытки запуска (dsound and dinput) в оригинальном режиме Windows... Причина для использования встроенных библиотек это необходимость прямого доступа к Вашему железу. direct music и direct play могут быть использованы в native windows mode в большинстве случаев.
Может пригодится.
Для начала скачаем их, в терминале:
wget http://ubuntu-debs.googlecode.com/files/macfonts.tar.gz
Далее необходимо распаковать архив:
tar zxvf macfonts.tar.gz
Теперь переместим распакованую папку со шрифтами в ~/.fonts:
mv macfonts ~/.fonts/
Или же
sudo mv macfonts /usr/share/fonts/
И последнее, обновим список установленных шрифтов:
sudo fc-cache -f -v
Оригинал заметки тут.
Перерабтанный вариант статьи про установку драйвера ATI в Linux. По просьбам пользователей некоторые моменты были объяснены подробнее. Ссылки обновлены. Добавлены некоторые способы решения возникающих проблем.
Качаем дрова с Внутреннего липецкого FTP:
Для видеокарт серии x2xxx - Скачать (Эти дрова дают очень ощутимый прирост в скорости, но часто глючат с более старыми видяхами)
Для видеокарт старее x2xxx - Скачать
ВНИМАНИЕ!!! Недавно ATI сравняла версии драйверов в Windows и Linux. Последний на текущий момент драйвер имеет версию 7.11. По ссылкам выше расположены более старые версии. Для установки на видеокарты с чипом меньше R600 ИМХО лучше ставить версию 8.39.4 или ниже (Хотя у меня более-менее стабильно работают 7.11 с чипом R350).
Примечание: Если в системе уже установлен проприетарный драйвер, то перекомпиляцию ядра можно попробовать пропустить.
Берем исходники ядра (есть в дистрибутиве, но можно поставить новее)
Как поставить ядро?
Для Mandriva, Fedora, RHEL: urpmi kernel-source
Для SuSe: zypper install linux-source
Для Debian, Ubuntu: apt-get install linux-sourceВсе команды должны выполнятся от имени пользователя root.
,перекомпилируем ядро (боле подробное описание процесса тут),
cd /usr/src/linux make menuconfig
отключаем в нем поддержку DRI (Переходим в Device Drivers -> Character Device -> Direct Rendering Manager), больше ничего желательно не трогать :)
make bzImage make modules make modules_install make install
перезагружаем компьютер с этим ядром, переходим в каталог с драйвером
cd /path/to/driver
Естественно вместо /path/to/driver вам придется подставить Ваш путь к драйверу.
запускаем скачанный установщик:
# sh ati-driver-installer-8.39.4-x86.x86_64.run
Драйвер установлен, идем дальше.
В /etc/fstab добавляем строчку
tmpfs /dev/shm tmpfs size=256m 0 0
Теперь надо настроить /etc/X11/xorg.conf. Проще всего сделать это используя aticonfig
aticonfig --initial
Но иногда это не срабатывает, тогда лезем ручками и правим xorg.conf/
Должно получится примерно следующее:
Section "ServerLayout" Identifier "Monitor layout" InputDevice "Keyboard1" "CoreKeyboard" InputDevice "Mouse1" "CorePointer" Screen 0 "Screen 0" EndSection Section "Files" FontPath "unix/:-1" FontPath "/usr/share/fonts/misc:unscaled" EndSection Section "dri" Mode 0666 EndSection Section "Extensions" Option "Composite" EndSection Section "ServerFlags" Option "AIGLX" "off" # AIGLX не работает с видеокартами АТИ, если версия драйвера < 8.42.3 # соответственно его можно отключить. AllowMouseOpenFail # allows the server to start up even if the mouse does not work EndSection Section "Module" Load "dbe" # Double-Buffering Extension Load "v4l" # Video for Linux Load "extmod" Load "type1" Load "freetype" Load "glx" # 3D layer Load "dri" # direct rendering EndSection Section "InputDevice" Identifier "Keyboard1" Driver "kbd" Option "XkbModel" "pc104" Option "XkbLayout" "us,ru(winkeys)" Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll,compose:rwin" # Переключение раскладки. Оставьте свое значение EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "ExplorerPS/2" Option "Device" "/dev/mouse" EndSection Section "Monitor" Identifier "monitor1" VendorName "Samsung" ModelName "SyncMaster 710n" HorizSync 30-81 VertRefresh 50-60 Option "DPMS" EndSection Section "Device" Identifier "Primary" VendorName "ATI Technologies Inc." BoardName "ATI Radeon (fglrx)" Driver "fglrx" BusID "PCI:01:00:00" # Оставьте то, что есть. Если ничего нет, то ничего и не пишите. # Данный параметр описывает нахождение карточки. Формат таков: "PCI:bus:device:function".То что # написано в статье подходит только для карт AGP, для обладателей карт PCIE должно быть # "PCI:5:0:0" или "PCI:5:0:1".Существует еще два варианта: # 1. Опустить данный параметр для автоопределения. # 2. Запустить Иксы с параметром -scanpci и посмотреть какой параметр для данной системы. EndSection Section "Screen" Identifier "Screen 0" Device "Primary" Monitor "monitor1" DefaultColorDepth 24 Subsection "Display" Depth 24 Modes "1280x1024" # Измените разрешение на оптимальное для Вашего монитора EndSubsection EndSection
Запускаем иксы командой
startx
Для теста запускаем: fgl_glxgears. Если все работает - радуемся :)
А если не работает, читаем дальше.
Во первых, если что-то работает не так, нужно узнать что это. Для этого даем такую команду
grep "EE" /var/log/Xorg.0.log
И видим что-то типа:
(WW) warning, (EE) error, (NI) not implemented, (??) unknown. (II) Loading extension MIT-SCREEN-SAVER (EE) fglrx(0): incompatible kernel module detected - HW accelerated OpenGL will not work
Строчка, начинающаяся с (EE) и есть искомая ошибка
1. (EE) AIGLX error: dlsym for __driCreateNewScreen_20050727 failed (/usr/lib64/dri/fglrx_dri.so: undefined symbol:
Не фатальная ошибка. Вылазит из-за отсутствия поддержки AIGLX в драйверах ATI до версии 8.42.3
Пути решения:
В секцию ServerFlags добавить Option "AIGLX" "off". Получится примерно следующее
Section "ServerFlags" Option "AIGLX" "off" EndSection
2. (EE) AIGLX error: fglrx exports no extensions (/usr/lib64/dri/fglrx_dri.so: undefined symbol: __driDriverExtensions)
(EE) AIGLX: reverting to software rendering
В секцию ServerFlags добавить Option "AIGLX" "on".
3. (EE) fglrx(0): incompatible kernel module detected - HW accelerated OpenGL will not work
Причина: Новый модуль скомпилировался, но старый остался в памяти и используется.
Решение:
Закрыть иксы и выполнить от root
modprobe -r fglrx
Запустить иксы снова.
Причина: Новый модуль не скомпилировался, вместо него работает старый.
Решение:
rm -rf /lib/modules/fglrx/
И установка драйвера снова. Если снова драйвер не работает с такой-же ошибкой, закиньте файл /usr/share/ati/fglrx-install.log
на наш фтп и идите задавать вопрос на форум :)
Удачи.
Материал дополнили: BSD, smoomik, AleksK.