OpenSuSe 11.1: Самый глючный дистрибутив всех времен и народов

OpenSuSe Logo

Не так давно я обновлял систему с 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)

В общем, дистрибутив получился просто отвратительным, без напильника, гугления и танцов с бубном ее не настроить. Новичкам такой дистрибутив не рекомендую.

И снова о прокси

Я уже писал о том, как превратить 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 &


Я рад, что и мои друзья потихоньку заводят свои блоги, организуют новые проекты. Сама идея собрать отзывы о путешествиях в одно место мне очень близка к сердцу, поскольку у меня у самого есть аналогичный проект; но в данном случае, под хороший сайт и места на своем VDS не пожалею.

Опубликовано в рубриках: Linux, proxy

Как сбросить пароль в mysql

Иногда бывают ситуации, когда рутовый пароль на базу MySQL проебали где-то потерялся, и его надо срочно перезадать. Если есть доступ к shell на сервере, то сделать это достаточно просто:

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

Как собрать ядро для OpenSuSe 11

The Linux Kernel
Ядро, которое идет вместе с дистрибутивом 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, и пока багов в ней не заметил.

Вот и думай после этого, а нужен ли был апгрейд, если он принес столько геморроя?

Вышла 11 OpenSuSe

OpenSuSe Logo

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

Готовлюсь к длительной поездке в глушь, где доступ в интернет будет возможен только через GPRS от МТС. Как оказалось, подключить мой мобильник SE K750i в качестве GPRS-модема совсем не сложно.

Для этого надо соединить телефон с помощью 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

Недавно решил попробовать MovableType в качестве платформы для своих блогов. Эта платформа мне очень понравилась вот чем:

  • может весь блог сгенерировать в виде статики
  • платформа бесплатная и с открытым кодом
  • поддерживает 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 адресов к одной сетевой карте

На Debian / CentOS привязать несколько 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: копируем красиво (с прогресс баром)

Все, кто хоть раз использовал wget, видели progress bar скачивания файла. Можно ли что-то подобное сделать и с командой cp?

Легко, как два байта переслать:


#!/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% [===========================================> ]

Бесполезно, но… красиво!

З.Ы. Придумал не я, честно подглядел вот здесь.