среда
ATI Radeon X1650 и OpenSuSe 11.2 - засада

Смеркалось. Наступили черные времена для владельцев старых карт ATI. Собственно, не такая уж и новость, однако, компания ATI прекращает выпуск новых драйверов для следующих видеокарт начиная с Catalyst 9.4 :
Для тех, кто пользуется OpenSuSe, это означает, что последняя версия операционки, которая будет корректно работать с этими устройствами - это OpenSuSe 11.1 Начиная с OpenSuSe 11.2 даже и не пытайтесь ставить ATI-шные драйвера, т.к. с версией 11.2 идет XOrg 7.4, несовместимый с родными драйверами. Если хотите жить дальше с этими видюхами, пользуйтесь старой операционкой со всеми вытекающими последствиями (старый софт, невозможность совершать видеозвонки в Pidgin и т.п.); хотите OpenSuSe 11.2 - тогда придется использовать неродной драйвер Radeonhd, который пока довольно криво поддерживает 3D во многих из этих карт, в том числе и в моей. Новость неприятная, но такова жизнь, на официальном форуме OpenSuSe народ тоже возмущается
Что-то после всего этого мне жутко разонравились видеокарты ATI, может пора переходить на NVida?
суббота
Интересный баг mysql

По долгу службы пришлось мне отправиться в длительную поездку. Компьютер с собой не возьмешь, и поэтому приспичило меня залить дамп базы Mysql на ноутбук с OpenSuSe 11.0. Dump отказался заливаться, ругнулся вот так:
ERROR 1221 (HY000) at line 3: Incorrect usage of UNION and INTO
Код хранимой функции был чистый, давным-давно вылизанный и ошибок в нем не было. Выяснилось, что на старых версиях mysql может не работать вот такая конструкция:
select 1 into @`avar` from (select 1 union select 1) `a`;
хотя сам запрос:
select 1 from (select 1 union select 1) `a`;
синтаксически правильный и имеет право на жизнь. Баг в конце концов поправили (подробности здесь), но в стандартных репозиториях OpenSuSe 11.0 (OSS, Non-OSS, Debug и Updates) версия mysql осталась старая, с багом.
Проблема лечится подключением репозитория MySQL и обновлением до последней версии сервера mysql.
Ярлыки: Linux, MySQL, Интересное
Что делать, если стащили пароли

Недавно с моим другом произошла неприятная история. Он где-то подцепил трояна, который спер пароли FTP доступа к одному из его сайтов, и в результате злоумышленник смог залить вредоносный код в html и js файлы на его VDS. Мы проблему определили довольно оперативно, и также быстро ее устранили.
Чтобы эта неприятная ситуация не повторялась, я написал маленький скриптик:
/usr/bin/find /home -mtime -1 -print | mail -s "Modified Files" root@localhost >/dev/null 2>&1
Он работает какое-то время, и пересылает на заданную почту список файлов, которые были изменены за последние сутки. В этом случае команда find просматривает все файлы рекурсивно, начиная с директории /home. Это выглдит примерно так:
/home/user1/data
/home/user1/data/logs
/home/user1/data/logs/site1.tld.access.log
/home/user1/data/logs/site2.tld.access.log
/home/user1/data/logs/site2.tld.error.log
/home/user1/data/logs/site2.tld.access.log.0.gz
/home/user1/data/logs/site3.tld.access.log.0.gz
/home/user1/data/logs/site3.tld.error.log
/home/user1/data/logs/site3.tld.access.log
/home/user1/data/logs/site1.tld.access.log.0.gz
/home/user1/data/logs/site3.tld.error.log.0.gz
/home/user1/data/etc
/home/user1/data/etc/site1.tld.webalizer.current
/home/user1/data/etc/site1.tld.webalizer.hist
/home/user1/data/etc/site3.tld.webalizer.current
/home/user1/data/etc/site3.tld.webalizer.hist
/home/user1/data/etc/site2.tld.webalizer.current
/home/user1/data/etc/site2.tld.webalizer.hist
/home/user1/data/www/site3.tld/webstat/usage.png
/home/user1/data/www/site3.tld/webstat/index.html
/home/user1/data/www/site3.tld/webstat/daily_usage_201001.png
/home/user1/data/www/site3.tld/webstat/hourly_usage_201001.png
/home/user1/data/www/site3.tld/webstat/usage_201001.html
/home/user1/data/www/site3.tld/webstat/ctry_usage_201001.png
/home/user2/data
/home/user2/data/logs
/home/user2/data/logs/user2.tld.error.log
/home/user2/data/logs/user2.tld.access.log
/home/user2/data/logs/user2.tld.error.log.0.gz
/home/user2/data/logs/user2.tld.access.log.0.gz
/home/user2/data/etc
/home/user2/data/etc/user2.tld.webalizer.current
/home/user2/data/etc/user2.tld.webalizer.hist
/home/user2/data/www/user2.tld/webstat/index.html
/home/user2/data/www/user2.tld/webstat/usage.png
/home/user2/data/www/user2.tld/webstat/daily_usage_201001.png
/home/user2/data/www/user2.tld/webstat/hourly_usage_201001.png
/home/user2/data/www/user2.tld/webstat/usage_201001.html
/home/user2/data/www/user2.tld/webstat/ctry_usage_201001.png
/home/user4/data/logs
/home/user4/data/logs/site3.tld.access.log
/home/user4/data/logs/site3.tld.access.log.0.gz
/home/user4/data/logs/site3.tld.error.log
/home/user4/data/etc
/home/user4/data/etc/site3.tld.webalizer.current
/home/user4/data/etc/site3.tld.webalizer.hist
/home/user4/data/www/site3.tld/webstat/index.html
/home/user4/data/www/site3.tld/webstat/usage.png
/home/user4/data/www/site3.tld/webstat/daily_usage_201001.png
/home/user4/data/www/site3.tld/webstat/hourly_usage_201001.png
/home/user4/data/www/site3.tld/webstat/usage_201001.html
/home/user4/data/www/site3.tld/webstat/ctry_usage_201001.png
Как видим, сейчас никакого криминала не наблюдается. Изменились только логи и статистика, что и должно происходить раз в сутки. Если же файлы поменялись без моего ведома, я это увижу. Скрипт можно запихнуть в cron, и запускать раз в сутки.
четверг
OpenSUSE 11.2 и видеокарта ATI Radeon x1650 Series

Я фигею, дорогая редакция! Со времен OpenSUSE 11.1 не так много воды утекло, однако изменения произошли кардинальные.
Во-первых, компания ATI выкинула поддержку карточки ATI Radeon x1650 Series из новейших родных дров. Последняя версия драйвера на Radeon x1650 на сегодняшний день датируется 26 марта 2009 года, и она не совместима с новейшим XOrg 7.4, используемым в OpenSuSe 11.2. Если пойти на хитрость, и скачать действительно последнюю версию драйвера (9.11) по прямой ссылке, то выяснится, что драйвер может заработать под новым XOrg, но не с этой карточкой (смотрим Release Notes). Когда будет сделана поддержка родных дров этой карты для OpenSuSe 11.2 - неизвестно.
Во-вторых, к счастью появился драйвер c открытым кодом под эту карточку, и он таки вошел в дистрибутив OpenSuSe 11.2. В нем даже реализована экспериментальная поддержка 3D ускорения, которая периодически работает, но пока что слишком глючно. Проверял на фильмах и играх - фильмы работают на ура в полноэкранном режиме; игры могут рушиться, если текстур в движке очень много. К примеру, Quake3 пошел без проблем (после обновления драйвера), TileRacer периодически сыпется с ошибкой Segmentation fault.
В-третьих, более-менее прямо сделана поддержка моей веб камеры, качество изображения в ней под линуксом значительно хуже чем под виндой, но все же она работает без ошибок и со Skype, и с Pidgin, и с Cheese.
Поддержка моей DVB карты Prof Revolution DVB-S2 7301 PCI не реализована родными драйверами, но они легко находятся здесь, огромное спасибо автору за качественные драйвера и патчи к ядру. Качаем исходники, собираем и ставим - все как обычно.
KDE4 мне показался сырым в этом дистрибутиве, и я перешел на Gnome, о чем пока ни разу не пожалел.
Ярлыки: Linux, Железо, Полезное
Аудио и видео звонки в Jabber

Собственно, предыстория здесь. Очень долгое время я искал джаббер-клиента под Linux, который бы позволял совершать голосовые и видеозвонки другим людям. Кроме древнего и уже почти мертвого проекта Jabbin, альтернатив не было. Потом появлялись полухакерские сборки Kopete с поддержкой jingle, которые были очень капризными. Но все это было не то.
Теперь же есть минимум 2 Open Source jabber клиента, которые могут совершать аудио и видеозвонки - это Empathy и Pidgin (начиная с версии 2.6.1)
Смутило вот что, когда ставишь эти клиенты через Yast, не все зависимости соблюдаются. Т.е. после установки работает только текстовый чат, но не голосовой и не видео.
Чтобы все заработало, надо установить следующие пакеты: gst-plugins-good, gst-plugins-bad, gst-ffmpeg (в OpenSuSe 11.2 они называются gstreamer-0_10-plugins-good, gstreamer-0_10-plugins-bad, gstreamer-0_10-ffmpeg). После установки перезапускаем джаббер-клиенты, вклюаем в pidgin плагин для аудио и видеозвонков и вуаля - все работает. Причем работать будет как в Empathy, так и в Pidgin
На вкус и цвет товарищей нет, но Pidgin IMHO лучше, чем Empathy - больше возможностей, плагинов и прочих фич
Ярлыки: Linux, Интересное, Полезное
пятница
OpenSuSe 11.0 Настрока раскладки клавиатуры
Эти настройки желательно делать сразу, чтобы потом не было мучительно больно за бездарно потраченное время проблем с общением на разных языках. А спохватился я тогда, когда в одном окошке Skype общался с заказчиком, а в окошке Jabber'а с одним из субподрядчиков; заказчик шпрехает только на рiдной аглицкой мове, подрядчик же в основном по-русски говорит когда трезвый. И так задолбало меня переключение языка клавы, что я решил разобраться, можно ли привязать язык клавиатуры к конкретному окну в KDE.
Теоретически все просто, идем в Настройки рабочего стола Центра управления КДЕ, где методом научного тыка попадаем в раскладки клавиатуры:



Картинка 1, вопрос - а нахрена зачем я добавил вторую раскладку клавиатуры, если раскладка RU поддерживает латиницу? А оказывается, если оставить в настройках только одну раскладку клавиатуры (как у меня и было сделано), то рисунок на картинке 2 никогда бы не получился. При сохранении настроек политика переключения автоматически слетала в "Глобально", а не оставалась в состоянии "Окно". И следовательно, каждое переключение языка отражалось на всех открытых окнах. Отсюда и все проблемы с переключением клавы.
четверг
Разрыв соединения ssh по таймауту
Если есть желание поддерживать в живом состоянии свою сессию SSH, надо на стороне клиента в ~/.ssh/config или в /etc/ssh/ssh_config дописать всего пару строчек:
ServerAliveInterval 60ServerAliveCountMax 10
Тогда клиент сам по себе будет отправлять раз в минуту запросы на сервер для поддержания активности соединения. И если в течение 10 попыток он не получит ответа, тогда сессия помрет.
Можно поддерживать сессию и со стороны сервера, тогда надо написать в /etc/ssh/sshd_config что-то вроде этого:
TCPKeepAlive yesClientAliveInterval 60
ClientAliveCountMax 10
Особенно полезно, если VDS используется как прокси-сервер.
Ярлыки: Linux
суббота
Настройка проводного интернета от Билайн в OpenSuSe
В моей квартире разгром, строители начали долгожданный ремонт, в связи с чем мне пришлось на время сменить место жительства и подключиться к другому интернет-провайдеру. Особенно не заморачиваясь, решил подключиться к первому провайдеру, который проведет кабель в квартиру. Им и оказался Билайн.
Интернет от Билайна настраиваится легко под виндой, но вот со всяческими линуксами он дружить совершенно не хочет. На официальном сайте у них есть только настройки под винду да под Mac OS, и например настроить его под SuSe оказалось непросто.
Всем линуксоидам, на кого свалилось несчастье в виде интернета от Билайн, советую почитать вот эти топики:
Я у себя настроил интернет без использования kvpnc. Я так и не раскопал, как в нем можно отключить буферизацию pptp. А с включенной буферизацией иногда происходили непонятные тормоза в работе. И еще, MTU пришлось выставить ниже 1500, поскольку с MTU 1500 довольно большой процент пактов пропадал и довольно много сервисов переставало работать.
В общем, интернет от Билайна мне не понравился. Геморрой с настройкой слишком большой, чтобы я и дальше пользовался услугами этого провайдера.
P.S. Я тут из Черногории недавно вернулся, начинаю потихоньку выкладывать материалы о поездке.
понедельник
Как подружить вебкамеру Genius e Messenger 112 и OpenSUSE

Вебкамера Genius e Messenger 112 одна из самых дешевых, и одна из самых хреновых. Родные драйвера есть только под винду, а под linux она без напильника и танцев с бубном работать не желает.
Итак, если вы счастливый обладатель OpenSUSE версии до 11.1 (версия ядра до 2.6.27), то камеру завести относительно несложно. Надо установить пакет gspcav, наложить на него патч, собрать и установить модуль gspca — камера заведется без проблем.
Но если вы несчастный обладатель самого глючного дистрибутива OpenSUSE, ваши беды не закончились на его установке. Дело в том, что начиная с версии ядра 2.6.27 программисты решили вымахнуться и перенесли поддержку драйверов gspca из отдельного пакета в состав ядра. И разумеется, прозевали поддержку этой злосчастной камеры. Правда, пообещали, что начиная с версии ядра 2.6.28 эта камера будет работать.
Но на сегодняшний день последней версией ядра для OpenSUSE 11.1 является 2.6.27, поэтому или придется драйвер собрать руками, или скачать / ждать новую версию ядра. Ждать мне было лень, поэтому я скачал исходники ядра, и поправил файл gspca_pac207.c, дописав одну выделенную строчку:
528 static const __devinitdata struct usb_device_id device_table[] = {
529 {USB_DEVICE(0x041e, 0x4028)},
530 {USB_DEVICE(0x093a, 0x2460)},
531 {USB_DEVICE(0x093a, 0x2463)},
532 {USB_DEVICE(0x093a, 0x2464)},
533 {USB_DEVICE(0x093a, 0x2468)},
534 {USB_DEVICE(0x093a, 0x2470)},
535 {USB_DEVICE(0x093a, 0x2471)},
536 {USB_DEVICE(0x093a, 0x2476)},
537 {USB_DEVICE(0x093a, 0x2472)},
538 {USB_DEVICE(0x2001, 0xf115)},
539 {}
540 };
Модуль собрался, и заработал, но с глюками. Cheese, Skype работают нормально, а вот camorama не завелась. Яркость изображения регулируется с помощью v4lctl, а вот как регулировать контрастность или цветовой баланс — хз. В старой версии ядра таких проблем не было.
вторник
OpenSUSE, Skype и отправка SMS

На сегодняшний день последней версией скайпа для OpenSUSE является версия 2.0.0.72. Возможность отправлять СМСки в скайпе появилась только с версии 2.5, но как оказалось, отправить SMS можно и из OpenSUSE, и из Ubuntu с использованием Skype API on Linux.
Для того, чтобы заработала отправка SMS, надо установить сам Skype, а также Python wrapper Skype4Py, и утилиту Skysentials.
После запуска видим Skysentials видим вполне интуитивно понятную тулзу для отправки SMS:

Отправка СМС не бесплатная, но сопоставима по стоимости с отправкой с мобильника. А с учетом того, что сейчас скайп активно рассылает ваучеры на пополнение баланса, можно и попробовать.
Я испытал это чудо буржуйской техники, и выяснил две вещи.
Ярлыки: Linux, Интересное, Полезное
среда
Как пережать видео из 3gp в AVI
Многие мобильные телефоны позволяют снимать видео на встроенную камеру и сохранять его в формате 3gp. Мой любимый mplayer отказывается показывать видео в формате 3gp, а посмотреть хотелось бы.
Для работы с видео и звуком под Linux есть как минимум 2 классных инструмента, mencoder и ffmpeg. И чтобы посмотреть видео, снятое на телефоне SonyEricsson K750i, я его преобразовал в формат avi:
mencoder 007.3gp -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac mp3lame -lameopts vbr=3 -o 007.avi
Размер файла при этом вырос в 2 раза; и видео, и звук оказались в приемлемом качестве. Но точно такой же финт не сработал с видео, отснятым на телефон Nokia 6223, там используется какой-то нестандартный битрейт
Можно попробовать вылечить так:
mencoder 007.3gp -ovc lavc -lavcopts vcodec=msmpeg4v2 -oac mp3lame -srate 8000 -lameopts vbr=3 -o 007.avi
Так выходной файл все-таки получился, но звук был отвратительным. Нельзя было разобрать ни слова, звук стал более быстрым и тональность голосов изменилась
Я попробовал последний вариант:
ffmpeg -i 007.3gp -f avi -acodec libmp3lame 007.avi
Это сработало, голос стал узнаваем, но по-прежнему качество звука в декодируемых с нокии клипах оставляет желать лучшего.
Ярлыки: Linux
суббота
OpenSuSe 11.1: Самый глючный дистрибутив всех времен и народов

Не так давно я обновлял систему с OpenSuSe 11.0, как обычно, запустив обновление. После него отказались работать X, mplayer не показывал фильмы в fullscreen mode и творилось много неприятного. В связи с чем было принято решение снести все нафиг и поставить OpenSuSe 11.1, ведь в прошлый раз все произошло безболезненно.
Однако, проблемы начались сразу после установки. KDE4 оказался зело глючный, по крайней мере в без напильника многое работать не стало. Например, kget отказывался скачивать поставленные в очередь файлы, akregator рушился при добавлении RSS лент в ридер.
В связи с чем я и переставил систему на SuSe 11.1 с KDE 3.5. Но на этом мои злоключения не закончились. Хроническая болезнь всех видеокарт ATI продолжается вместе с любым дистрибутивом линукса. Каждая инсталляция превращается в головную боль, поскольку система с упорством маньяка ставит глюкавый драйвер radeonhd, вместо родного ATI-шного fglrx.
Эта проблема непобедима, поскольку драйвера видеокарт ATI содержат какой-то мегасекретный код, который они и прячут как могут. Т.е. никогда мы не увидим исходников дров, и они не будут включены в дистрибутивы линуксов из-за различий в лицензионном соглашении.
Но это все лирика. Установка драйверов старым добрым способом, описанным для SuSe 10.3, не дала желаемый результат. Драйвер встал, но 3D ускорение работало из рук вон плохо.
Симптомы были такие:
> glxinfo | grep direct
direct rendering: Yes
glxgears показывал порядка 300 кадров в секунду (что для карты с ускорителем и для маленького окошка слишком мало).
fgl_glxgears не запускался, рушился с вот такой ошибкой:
X Error of failed request: GLXUnsupportedPrivateRequest
Лечится просто, надо в .bashrc дописать вот такую строчку:
export LD_LIBRARY_PATH=/usr/X11R6/lib:$LD_LIBRARY_PATH
и перелогиниться после этого.
Сразу заработал fgl_glxgears и Quake3, и жизнь снова стала прекрасна и замечательна... казалось бы.
Второй серьезный баг был с настройкой параметров клавиатуры. После запуска Sax2 слетели нафиг настройки, оставался или только русский язык, или только латиница. Лечится следующим образом:
В файле /etc/X11/xinit/xinitrc.common надо закомментировать строчки 103 и 104:
xdpyinfo | grep -q "X.Org version: 6.9.0" || \
setxkbmap -print | xkbcomp - $DISPLAY
Это сильно облегчит жизнь при настройке клавиатуры через Sax2, официально зарегистрированный баг SuSe 11.1: https://bugzilla.novell.com/show_bug.cgi?id=432627
Ну и еще одна серьезная пакость была в этом дистрибутиве, после установки SuSe 11.1 перестал работать звук. Эти товарищи включили кривой набор пакетов ALSA, в результате чего и звук пропал. Лечится обновлением драйверов до последней версии:
zypper ar http://download.opensuse.org/repositories/multimedia:/audio/openSUSE_11.1/ multimedia
zypper install alsa alsa-utils alsa-tools alsa-firmware libasound2
zypper rr multimedia
далее в зависимости от ядра, выполняются следующие команды:
zypper ar http://download.opensuse.org/repositories/multimedia:/audio:/KMP/openSUSE_11.1/ multimedia
zypper install alsa-driver-kmp-default
zypper rr multimedia
(для ядра kernel 2.6.27.7_9.1-1.1-default i386 or x86_64 GNU/Linux (openSUSE-11.1)
или
zypper ar http://download.opensuse.org/repositories/multimedia:/audio:/KMP/openSUSE_11.1/ multimedia
zypper install alsa-driver-kmp-pae
zypper rr multimedia
(для ядра с kernel 2.6.27.7_9.1-1.1-pae i386 GNU/Linux (openSUSE-11.1)
В общем, дистрибутив получился просто отвратительным, без напильника, гугления и танцов с бубном ее не настроить. Новичкам такой дистрибутив не рекомендую.
Ярлыки: Linux, Железо, Полезное
пятница
И снова о прокси
Я уже писал о том, как превратить VDS в прокси SOCKS5, но этот способ не всегда удобен. С одной стороны, никакого софта ставить не надо; но с другой стороны, перед использованием proxy обязательно соединяться по ssh с VDS. И в случае, если у VDS есть несколько IP адресов на одной сетевой карте, то использовать сможете только один из них.
Для полноценного использования своего VDS в качестве прокси-сервера можно использовать 3proxy, который легко собирается на VDS
Если вы собираетесь использовать этот прокси с каких-то фиксированных IP адресов, мой конфиг вам в помощь:
#!/usr/local/bin/3proxy
nserver 1.2.3.4
nserver 1.2.3.5
timeouts 1 5 30 60 180 1800 15 60
daemon
log /usr/local/etc/3proxy/logs/3proxy.log D
logformat "L%d-%m-%Y %H:%M:%S %z %N.%p %E %U %C:%c %R:%r %O %I %h %T"
archiver gz /bin/gzip %F
rotate 3
chroot /usr/local/jail
setgid 65535
setuid 65535
auth iponly
flush
allow * 11.12.13.14 * *
proxy -i1.2.7.9 -e1.2.7.10 -p8089 -n -a
auth iponly
flush
allow * 11.12.13.14 * *
proxy -i1.2.7.9 -e1.2.7.9 -p8090 -n -a
В этом примере демон 3proxy будет слушать порты 8089 и 8090 на айпишнике 1.2.7.9. Использовать получившийся анонимный http прокси можно только с IP адреса 11.12.13.14. На официальном сайте есть толковый мануал на русском, с примерами. Важно только не забыть поставить запуск прокси при перезагрузке VDS, например, в rc.local прописать вот такую строчку:
nohup /usr/local/bin/3proxy /usr/local/etc/3proxy.cfg >/dev/null 2>/dev/null &
<offtopic>
Я рад, что и мои друзья потихоньку заводят свои блоги, организуют новые проекты. Сама идея собрать отзывы о путешествиях в одно место мне очень близка к сердцу, поскольку у меня у самого есть аналогичный проект; но в данном случае, под хороший сайт и места на своем VDS не пожалею.
</offtopic>
четверг
Как сбросить пароль в mysql
1. Останавливаем mysqld:
/etc/init.d/mysqld stop
2. Запускаем mysqld без проверки прав доступа:
mysqld_safe --skip-grant-tables &
3. Заходим под рутом и перебиваем пароль:
mysql -u root -D mysql
mysql> update user set password=password('new_password') where user='root';
4. Обновляем права доступа:
flush privileges;
5. Выходим, убиваем mysqld и запускаем его снова:
mysql> exit;
/etc/init.d/mysqld stop
/etc/init.d/mysqld start
Ярлыки: Linux, MySQL, Полезное
суббота
Как собрать ядро для OpenSuSe 11

Ядро, которое идет вместе с дистрибутивом OpenSuSe 11, достаточно компактное и неплохо напичкано всякими примочками. Но если есть желание выжать из своей системы максимум возможностей, без пересборки ядра не обойтись.
Для начала надо установить пакет kernel-source через Yast. Исходники ядра лягут в свои директории, и создастся симлинк на эти исходники - /usr/src/linux.
После этого выполняем следующие команды:
cd /usr/src/linux
make mrproper
make mrproper создает такую же конфигурацию для компиляции ядра, которая сейчас используется в системе. Это очень удобно, из нее всего лишь надо будет выкинуть лишее или добавить желаемое.
make menuconfig
Это самый отвественный этап. Здесь выкидывается всякая ненужная хрень. Например, я собирал ядро для своего ноутбука. Там была масса всякой ненужной гадости, которая совершенно точно не пригодится на нем - поддержка RAID-массивов, виртуализация и многое другое. Если эти фичи поотключать, ядро становится меньше и соответственно, при использовании облегченного ядра остается больше ресурсов для других процессов. Здесь еще важно поменять название ядра. Если оно именовалось как default, то лучше его переименовать, например, в mykernel001. Потому что при выходе нового ядра kernel-default Yast просто-напросто перепишет облегченное ядро новой версией.
Дальше я делаю вот что:
make rpm
Ядро собирается очень долго, на моем старом ноутбуке процесс сборки занял около двух часов.
RPM пригодится, если у вас есть несколько ноутбуков одинаковых моделей. Для установки на другой ноутбук собранного ядра достаточно скопировать получившися rpm. Нет нужды повторно собирать ядро.
Получившееся ядро в виде rpm легко установить на любой из ноутбуков с помощью команд:
rpm -ivh kernel-2.6.25.160.1-2.i386.rpm
mkinitrd
После этого остается только поправить конфиг загрузчика (grub или lilo), чтобы была возможность выбрать версию ядра, с которой будет загружаться система. Сразу отказываться от старого проверенного ядра не стоит, вдруг при сборке ядра отключили что-то лишее и какое-нибудь устройство перестало работать. Поэтому не исключено, что ядро придется пересобирать несколько раз для того, чтобы достичь оптимальной производительности системы.
Ярлыки: Linux
четверг
Золотое правило админа

Если кто-то еще не знает, это правило звучит так:
Работает - не трожь!
Теперь собственно сама история. Когда-то у меня стояла OpenSUSE 10.3, в которой был Perl 5.8.8. С выходом OpenSUSE 11 я решил сделать апгрейд, который на первый взгляд прошел удачно. Все было хорошо, пока я не попробовал запустить несколько своих ботов.
Выяснилось, что в 11-й версии Perl проапгрейдился до версии 5.8.10, и основные модули по работе тоже подвергались апгрейду. Все товарищи, кто прямо или косвенно пользовался модулем HTTP::Message скорее всего в логах увидили нечто подобное:
HTTP::Message content not bytes
и после этого долго ломали голову над своим кодом. А на самом деле бага в коде была на стороне мантайнера HTTP::Message, версия libwww-perl-5.810 оказалась глючной до безобразия. И самое интересное, эта версия оказалась в дистрибутиве OpenSUSE 11, поэтому совсем безболезненно апгрейд не прошел.
Да, эта проблема решается апгрейдом libwww-perl до более свежей версии, что собственно я и сделал. Сейчас это libwww-perl-5.814, и пока багов в ней не заметил.
Вот и думай после этого, а нужен ли был апгрейд, если он принес столько геморроя?
Ярлыки: Linux, Программирование
вторник
Вышла 11 OpenSuSe

19-го июня Novell официально анонсировала выход 11-й версии OpenSuSe. Список ее features доступен на на официальном сайте OpenSuSe, нет смысла детально их описывать здесь.
Ставить 64-битную версию OpenSuSe еще рано, поскольку возникнут проблемы с Java; в частности, с Java-плагином для браузера Firefox. Можно конечно извратиться, и поставить 32-битный Firefox с 32-битным Java-плагином на 64-битную ОС, но это скорее изврат, чем нормальное решение проблемы.
Проблемы с видеокартами ATI Radeon у 11-версии OpenSuSe к сожалению, сохранились. Как отметили на официальном сайте, The ATI drivers cannot be integrated into the openSUSE distribution due of the separate license agreement. Поэтому, если вы являетесь счастливым обладателем видеокарты ATI, вам придется драйвера ставить отдельно, процедура та же самая, что и для установки драйверов ATI для OpenSuSe 10.3.
32-битная 11-я сусе отлично работает с RAM больше 4 Гб, просто надо использовать версию ядра с PAE. В SuSe 10.3 версия ядра с поддержкой оперативки больше 4 Гб называлась bigsmp, но сейчас оно почему-то называется по-другому. Такое ядро позволяет системе видеть до 64 Гб RAM на 32-битной SuSe. Работает устойчиво, проблем не наблюдал. Устанавливается вообще без каких-либо сложностей через Yast.
И что больше всего порадовало, апгрейд системы с версии 10.3 до 11 прошел относительно безболезненно. При апгрейде автоматически отключились все старые репозитории (для версии 10.3), и вместо них были добавлены только основные репозитории для версии 11. Остальные важные репозитории (Packman, Linva, ATI) пришлось подключать вручную, впрочем, как и было в версии 10.3.
При смене версий SuSe слетели некоторые пакеты, например, драйвер fglrx для моей карты ATI Radeon X1650 Series, и mplayer. После ручного добавления репозиториев ATI и Packman и переустановки соответствующих пакетов, все восстановилось. Но все остальные жизненно необходимые вещи (модули Perl, Apache, Openssl, OpenVPN) прошли апгрейд без сбоев. Апгрейд системы займет значительно меньше времени, чем установка системы с нуля; и работает он отлично. И в отличие от Windows, OpenSuSe не меняет Master Boot Record при установке или апгрейде, если ей специально об этом не сказать.
Порадовал 3-й Firefox, который идет вместе с дистрибутивом OpenSuSe 11. Он действительно менее ресурсоемкий и быстрее выполняет javascript; и там наконец-то убрали раздражающие popup'ы менеджера паролей.
Вся процедура апгрейда системы до 11-й версии у меня заняла около полутора часов, из них около часа - сам апгрейд, и с полчаса - установка версии ядра с PAE и настройка 3D-режима видеокарты ATI.
Ярлыки: Linux
пятница
Как подружить SonyEricsson K750i и OpenSuSe 10.3
Для этого надо соединить телефон с помощью USB-кабеля с ноутбуком, и проверить, видит ли его система как модем:
# lsusb
Создаем /etc/wvdial.conf:
[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet.mts.ru"
Modem = /dev/ttyACM0
Phone = *99***1#
Idle Seconds = 300
Modem Type = USB Modem
Stupid Mode = 1
Compuserve = 0
Baud = 115200
Auto DNS = on
New PPPD = Yes
Dial Command = ATDT
Ask Password = 0
ISDN = 0
Password = mts
Username = mts
Можно поиграться с настройками скорости соединения. Выше 115200 у меня она не поднималась, обычно она в районе 57600 baud.
Вот и все, дозваниваемся до оператора с помощью команды wvdial, отключаемся от интернета нажатием CTRL+C.
И для удобства, чтобы не запускать wvdial под рутом, можно сделать:
#chmod u+s /usr/bin/wvdial
понедельник
Ставим mod_fcgid для Apache под SuSe 10.3
- может весь блог сгенерировать в виде статики
- платформа бесплатная и с открытым кодом
- поддерживает XML-RPC, что очень облегчает процесс удаленного постинга
- умеет пинговать другие блогосервисы
Собственно, только из-за генерации статики я и выбрал эту платформу; то же самое умеет делать и Blogger - но у меня все-таки доверие больше софтине с открытым кодом, установленной на моих серверах, чем стороннему бесплатному сервису.
Разочаровал же меня Movable Type тем, что по умолчанию он выполнялся как cgi-скрипт. Слишком много времени уходило на интерпретацию скриптов, чувствовались существенные задержки в работе - но памяти при этом кушалось немного.
Увеличить быстродействие платформы можно двумя способами, прикрутив к Apache mod_perl или заставив выполнять скрипты Movable Type как FastCGI.
Первый вариант сразу отпадает, мне даром не нужен каждый процесс апача, который бы съедал значительный объем памяти из-за загруженного модуля mod_perl; поэтому я и выбрал второй вариант.
Настроить mod_fcgid под Debian на свой Apache 2.2.6 у меня получилось с первого раза совершенно без проблем.
Все свелось буквально к набору только одной команды:
apt-get install libapache2-mod-fcgid
ну и к последующей правке httpd.conf и перезапуску Apache.
Решил сделать нечто подобное и под OpenSUSE 10.3, с помощью Yast установил apache2-mod_fcgid, дописал заветные строчки в httpd.conf и ... получил болт. При выполнении скрипта Perl как Fast CGI стала появляться ошибка:
mod_fcgid: Can't create share memory for size %zu byte
Как оказалось, это лечится добавлением всего лишь одной строчки в mod_fcgid.conf:
SharememPath /var/lib/apache2/fcgid_shm
Для этого модуля сборщики пакета не удосужились прописать одну единственную строчку, которая не позволяла полноценно работать Perl-скриптам как FastCGI. Это действительно зарегистрированный баг OpenSUSE, который в недалеком будущем исправят (я надеюсь).
Ярлыки: Linux
воскресенье
Linux: привязываем несколько IP адресов к одной сетевой карте
Достаточно прописать в файле /etc/network/interfaces следующую конфигурацию:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address XXX.YYY.ZZZ.AAA
netmask 255.255.255.0
network XXX.YYY.ZZZ.0
broadcast XXX.YYY.ZZZ.255
up route add -host AAA.BBB.CCC.DDD dev eth0
up route add default gw AAA.BBB.CCC.DDD
dns-nameservers AAA.BBB.CCC.DDD AAA.BBB.EEE.DDD
dns-search somehost.com
auto eth0:1
iface eth0:1 inet static
address XXX.YYY.ZZZ.BBB
netmask 255.255.255.0
network XXX.YYY.ZZZ.0
broadcast XXX.YYY.ZZZ.255
auto eth0:2
iface eth0:2 inet static
address XXX.YYY.ZZZ.CCC
netmask 255.255.255.0
network XXX.YYY.ZZZ.0
broadcast XXX.YYY.ZZZ.255
После этого перезапускаем сеть и наслаждаемся тремя IP адресами XXX.YYY.ZZZ.AAA,XXX.YYY.ZZZ.BBB, XXX.YYY.ZZZ.CCC на одном физическом интерфейсе eth0.
Привязанные адреса могут находиться и не в одной подсети, но тогда могут возникнуть некоторые проблемы с маршрутизаций; но эта проблема уже разруливается техподдержкой вашего хостера.
среда
Linux: копируем красиво (с прогресс баром)
Легко, как два байта переслать:
#!/bin/sh
cp_p()
{
set -e
strace -q -ewrite cp -- "${1}" "${2}" 2>&1 \
| awk '{
count += $NF
if (count % 10 == 0) {
percent = count / total_size * 100
printf "%3d%% [", percent
for (i=0;i<=percent;i++)
printf "="
printf ">"
for (i=percent;i<100;i++)
printf " "
printf "]\r"
}
}
END { print "" }' total_size=$(stat -c '%s' "${1}") count=0
}
результат работы выглядит так:
cp_p /install/suse-10.3.iso /mnt
75% [===========================================> ]
Бесполезно, но... красиво!
З.Ы. Придумал не я, честно подглядел вот здесь.