Рецепты

Маленькие и полезные рецепты для работы с 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 градусов), но то, что слабым местом в предыдущей конфигурации стала сетевая карта (кстати в теплых условиях работающая стабильно), это мы выяснили, то есть, для низких температур не всякое железо подойдет.

Debmirror и проблема с .gz/.bz2

Решил для себя, для других и для остальных :) сделать репозиторий 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.

Приятного зеркалирования репозитариев :)

Grub и USB-Flash: удачный союз

Перед началом каждого учебного года в компьютерных залах нашего института происходит примерно один и тот же процесс - подготовка рабочих станций к занятиям: установка и настройка ОС и ПО. Алгоритм всего этого действа до безобразия прост: подготавливаешь одну машину, снимаешь с неё образ и разливаешь на остальные машины в зале.

И всё бы хорошо, но нет предела совершенству: 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

mp3 TAG CP1251 to UNICODE

В первую очередь эта заметка посвещена всем тем, кому надоело видеть в своих плейлистах крякозяблы вместо русских букв. Вданной заметке речь пойдет о скрипте 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 9.5 в Thunderbird 2

Казалось-бы не самая сложная задача, однако 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 ленты, если таковые были.

Перенос базы данных из почтового клиента Windows в почтовый клиент Linux

При переходе на 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. Он показывает как можно перенести письма между клиентами. Схема эта на полноту, конечно, не претендует, но некоторое дополнение внесёт.

Потребление памяти в Linux

Всё началось с того, что все заметили, как много оперативной памяти кушает 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

Проблема с PHP функциями для работы с графикой в Debian

Итак, начиналось все с поднятия некоторого 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

Источник (англ.)

Смотрим кино напрямую с домашнего фтп на Nokia N800

Как говорится, голь на выдумки хитра. Нет у меня пока большой флешки 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

Приятного просмотра! ;)

Установка DirectX 9.0c в Wine

Перевод статьи 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.

Действия производились с чистой конфигурационной директорией 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

Скачайте 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 в большинстве случаев.

Установка mac шрифтов в Ubuntu

 Может пригодится.

Для начала скачаем их, в терминале:

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

Перерабтанный вариант статьи про установку драйвера 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.