Архив рубрики «ubuntu»

nvidia в ubuntu: реанимация

20.11.2009

Внезапно умерли иксы. Как в анекдоте: шел ежик ubuntu по лесу, забыл как дышать грузить драйвер nvidia и умер.

Шел ежик по лесу, и вдруг забыл как дышать

Шел ежик по лесу, и вдруг забыл как дышать

Симптомы такие: при загрузке в том месте, где система обычно переходит в графический режим, экран начинает бешено мигать, при этом видно, что загружаются демоны. В конце концов видим обычное приглашение текстовой консоли, однако войти в систему невозможно, потому что клавиатура практически не слушается. Потому что в это время Xorg, словно в Колесе Сансары, непрерывно перерождается и умирает, не находя модуля nvidia:

/var/log/Xorg.0.log:

  1. (II) LoadModule: "nvidia"
  2. (WW) Warning, couldn't open module nvidia
  3. (II) UnloadModule: "nvidia"
  4. (EE) Failed to load module "nvidia" (module does not exist, 0)

Примерно такие сообщения я увидел в логах, войдя с ноута по ssh на терпящую бедствие рабочую станцию.

Гугление показало, что многие в такой ситуации тупо ставят бинарные драйверы от производителя. Интересно, что примерно год я тоже прельстился этим как бы очевидным и простым решением. Проблемы появляются не сразу, а в тот момент когда система обновит ядро. Драйверы, собранные для другой версии, с новой работать откажутся. И придется, матерясь, вручную переустанавливать бинарные драйверы.

Тут позволю себе немного лирики.

Линукс дома стоит у меня уже давно, и проблем с ним никогда особо не было.Смешные случаи были. Вот например жена, человек максимально далекий от компов, по радио как-то услышала, что есть такой Линукс, и под ним нет ни вирусов, ни троянов, и вообще чудо-система! И так ей эта идея понравилась, что говорит мне: «Слушай, а давай нам тоже этот Линукс поставим! Я в нем может тоже разберусь». Я ей говорю, «Мать, а ты не заметила что последние полгода ты на моем компе сидишь на этом самом Линуксе?» Это при том, что она не только по интернетам ходила, но и проги под Wine запускала, в Open Office чего-то та ваяла, GIMP-ом фотки редактировала ("странный у тебя фотошоп"). Посмеялись, удивлению её не было предела..

В общем, Линукс в целом был надежной домашней системой. А тут, после обновления Ubuntu до 9.10, начался сплошной гемор: то тут отвалится, то там. Ни кино посмотреть, ни в инет выйти. И вот сегодня женщина предложила снести к ебеням Ubuntu и поставить «нормальный виндовс».

Парни из Canonical! Я понимаю, что выпускать новый релиз каждые полгода — это ужасно круто, и ваши боссы наверняка гордятся вами и тем, что все идет по плану, но блин, чуваки! Мне ужасно неудобно перед женой, что вместо того, чтобы провести с ней вечер, я сижу и тупо втыкаю в десятки сообщений на форумах, где такие же бедняги сидят и тупо не знают что делать с сошедшей с ума железкой.

На этом с лирикой закончим.

В общем, гугль не помог, пришлось действовать по наитию.

Сначала смотрим, что у нас есть в системе:

  1. $ sudo dpkg --get-selections|grep nvidia
  2. nvidia-173-modaliases install
  3. nvidia-180-modaliases install
  4. nvidia-185-libvdpau deinstall
  5. nvidia-185-modaliases install
  6. nvidia-190-kernel-source install
  7. nvidia-190-libvdpau install
  8. nvidia-190-modaliases install
  9. nvidia-96-modaliases install
  10. nvidia-common install
  11. nvidia-glx deinstall
  12. nvidia-glx-173 deinstall
  13. nvidia-glx-177 deinstall
  14. nvidia-glx-185 deinstall
  15. nvidia-glx-190 deinstall
  16. nvidia-glx-new deinstall
  17. nvidia-glx-new-envy deinstall
  18. nvidia-kernel-common install
  19. nvidia-settings deinstall
  20. nvidia-settings-190 install

Как видно, много всего. Удаляем всё:

  1. $ sudo dpkg --get-selections | grep nvidia | grep -v deinstall | awk '{print $1}' | xargs sudo apt-get remove

Проверяем, что все удалено:

  1. $ sudo dpkg --get-selections | grep nvidia | grep -v deinstall

И ставим только то, что нужно, а именно последний официальный драйвер от Canonical:

  1. $ sudo apt-get install nvidia-glx-185

Сборка и установка проходят нормально, перегружаемся и видим, что ежик вспомнил как дышать и пошел дальше.

Тот самый ежик (картинка с сайта photo.ejik-land.ru)

Тот самый ежик (картинка с сайта photo.ejik-land.ru)

ubuntu 9.10: проклятие Фантомаса

09.11.2009

Все началось с того, что я решил посмотреть кино — Луна 2112. Поскольку действие происходит на Луну, да еще в 2112 году, то голубой цвет кожи, и зеленоватая кровь меня, хоть и удивили, но не сильно:

Прекрасные синие лица

Прекрасные синие лица

Фильм досмотрел, понравилось.

На следующий день я включил не менее фантастичное кино - Часто задаваемые вопросы о путешествии во времени, и когда и здесь все герои выглядели как Фантомас, я честно сказать напрягся!

Часто задаваемые вопросы о путешествиях во времени: и здесь синева

Часто задаваемые вопросы о путешествиях во времени: и здесь синева

Попробовал запустить фильм в других проигрывателях: vlc, xine, mplayer. Безрезультатно - цвета при воспроизведении видео искажены до неузнаваемости. Покрутил настройки NVIDIA X Server Settings: не помогает, можно сделать только хуже. Искаженные цвета при проигрывании видео не удавалось исправить.

Тут вспомнил, что при обновлении Ubuntu до 9.10 драйвер NVIDIA обновлялся до версии 185. Откатился до не-рекомендуемой версии 173. Ага! Заработало! Цвета стали нормальными. В качестве побочного эффекта получил тормоза в других приложениях. Не понравилось, вручную обновился до версии 190. Цвета снова поплыли...

Нашлось решение насколько же простое, насколько неочевидное:

В Видеопроигрывателе (Totem) идем в Правка -> Параметры -> Показ и жмем кнопку [Установить настройки по умолчанию]. Вауля! Все цвета пришли в норму во всех проигрывателях.

Как любит говорить в таких случаях мой знакомый-художник:

— Нет повода не выпить!

..и немедленно выпил.

..и немедленно выпил.

ubuntu 9.10: прощай, init. привет, upstart

06.11.2009

Еще одно важное нововведение, которое тихой сапой появилось при агрейде системы до 9.10, стал новый демон upstart, который заменил собой старый, хорошо изученный SysV init.

Теперь запуск сервисов настраивается не через скрипты в /etc/init.d (хотя в целях обратной совместимости обвязка для их запуска имеется), а через конфигурационные файлы в /etc/init.

Вот, скажем, конфигурация для cron, /etc/init/cron.conf:

  1. # cron - regular background program processing daemon
  2. #
  3. # cron is a standard UNIX program that runs user-specified programs at
  4. # periodic scheduled times
  5.  
  6. description "regular background program processing daemon"
  7.  
  8. start on runlevel [2345]
  9. stop on runlevel [!2345]
  10.  
  11. expect fork
  12. respawn
  13.  
  14. exec cron
  15.  

Управление сервисами ('Jobs' в терминологии upstart) производится утилитой initctl:

  1. [email protected]:/etc/init$ sudo initctl stop cron
  2. cron stop/waiting
  3. [email protected]:/etc/init$ sudo initctl stop cron
  4. initctl: Unknown instance:
  5. [email protected]:/etc/init$ sudo initctl start cron
  6. cron start/running, process 13430
  7. [email protected]:/etc/init$ sudo initctl start cron
  8. initctl: Job is already running: cro

На первый взгляд, все как бы просто, доступно и понятно. Но это-то и настораживает. Часто случается так, что отладка таких "простых и понятных" программ превращается в настоящий ад. Надеюсь, это не тот случай.

ubuntu 9.10: новый вид gdm

02.11.2009

После обновления Ubuntu до релиза 9.10 настройки окна входа в систему gdm сбросились на дефолтные, теперь при загрузке нас встречает некий коричневый кошмар. В настройках Gnome выбрать оформление gdm теперь невозможно.

Было:

3903346203_c96a2a59a8_o

Стало:

gdm-config

Гугление результатов не дало.

debian: добавляем в iptables поддержку ip sets (ipset)

27.10.2009

IP Sets – расширение пакетного фильтра ядра iptables, которое позволяет комфортно работать с большими наборами адресов/сетей. При написании правил iptables при этом мы оперируем именованными списками.

Это, пожалуй, единственный на сегодняшний день доступный способ писать правила для большого количества хостов/сетей, не перечисляя каждый из них в отдельном правиле. Если ваш сайт, работающий под linux, подвергается DDOS, вы наверняка уже знаете про IP Sets. Если нет - http://ipset.netfilter.org/.

Утилита ipset живет в одноименном пакете, а все необходимые патчи ядра входят в состав пакета netfilter-extensions-source, который собирается и устанавливается при помощи утилиты module-assistant (которая для удобства имеет более короткое имя: m-a).

Примерный сценарий установки ip sets выглядит так:

  1. $ sudo apt-get install ipset
  2. $ sudo apt-get install netfilter-extensions-source
  3. $ uname -a
  4. Linux host.domain.tld 2.6.26-1-686 #1 SMP Fri Mar 13 18:08:45 UTC 2009 i686 GNU/Linux
  5. # версия пакета linux-headers должна совпадать с версией ядра, для которого собирается netfilter-extensions
  6. $ sudo apt-get install linux-headers-2.6.26-1-686
  7. $ sudo m-a build netfilter-extensions
  8. $ sudo m-a update && m-a a-i netfilter-extensions

Версия пакета заголовков ядра должна точно соответствовать версии активного ядра, для которого собирается ipset.

firefox: оптимизация внутренних баз данных sqlite

26.08.2009
  1. $ find .mozilla/firefox -type f -name "*.sqlite" -exec time sqlite3 \{\} "VACUUM" ";"

via

Создание /etc/init.d/nginx на debian 5.0 lenny

05.06.2009
  1. $ sudo vim /etc/init.d/nginx

Вставляем нижеследующий код (помним про команду ‘set :paste’ для вставки в VIM):

  1. #!/bin/sh
  2. ### BEGIN INIT INFO
  3. # Provides: nginx
  4. # Required-Start: $remote_fs $syslog $named $network $time
  5. # Required-Stop: $remote_fs $syslog $named $network
  6. # Default-Start: 2 3 4 5
  7. # Default-Stop: 0 1 6
  8. # Short-Description: Start nginx at boot time
  9. # Description: Enable service provided by nginx.
  10. ### END INIT INFO
  11. # $Id$
  12.  
  13.  
  14. NGINXHOME=/usr/local/nginx
  15. NGINXPID=$NGINXHOME/logs/nginx.pid
  16.  
  17. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  18. DAEMON=$NGINXHOME/sbin/nginx
  19. NAME=nginx
  20. DESC=nginx
  21.  
  22. if [ ! -x $DAEMON ]
  23. then
  24. echo "Couldn't find $DAEMON. Please set path to DAEMON."
  25. exit 0
  26. fi
  27.  
  28.  
  29. # Include nginx defaults if available
  30. if [ -f /etc/default/nginx ] ; then
  31. . /etc/default/nginx
  32. fi
  33.  
  34. set -e
  35.  
  36. case "$1" in
  37. start)
  38. echo -n "Starting $DESC: "
  39. start-stop-daemon --start --pidfile $NGINXPID \
  40. --exec $DAEMON -- $DAEMON_OPTS
  41. echo "$NAME."
  42. ;;
  43. stop)
  44. echo -n "Stopping $DESC: "
  45. start-stop-daemon --stop --pidfile $NGINXPID \
  46. --exec $DAEMON
  47. echo "$NAME."
  48. ;;
  49. restart|force-reload)
  50. echo -n "Restarting $DESC: "
  51. start-stop-daemon --stop --pidfile \
  52. $NGINXHOME/run/$NAME.pid --exec $DAEMON
  53. sleep 1
  54. start-stop-daemon --start --pidfile \
  55. $NGINXPID --exec $DAEMON -- $DAEMON_OPTS
  56. echo "$NAME."
  57. ;;
  58. reload)
  59. echo -n "Reloading $DESC configuration: "
  60. start-stop-daemon --stop --signal HUP --pidfile $NGINXPID \
  61. --exec $DAEMON
  62. echo "$NAME."
  63. ;;
  64. *)
  65. N=/etc/init.d/$NAME
  66. echo "Usage: $N {start|stop|restart|force-reload}" >&2
  67. exit 1
  68. ;;
  69. esac
  70.  
  71. exit 0

Сохраняем скрипт и выходим из vim.

Делаем скрипт исполняемым:

  1. $ sudo chmod 755 /etc/init.d/nginx

Указываем, что nginx нужно запускать при запуске и остановке сервера:

  1. $ sudo /usr/sbin/update-rc.d -f nginx defaults

UPD: Блок, заключенный между строками

  1. ### BEGIN INIT INFO
  2. ### END INIT INFO

обеспечивает LSB-совместимость. Подробнее см. http://wiki.debian.org/LSBInitScripts

Установка nginx на debian 5.0 lenny

04.06.2009

На "пустом" свежеустановленном Debian не хватает ряда инструментов и библиотек для сборки и установки nginx.

Ставим gcc, make, и компания:

  1. $ sudo apt-get install build-essential

Библиотеки для сборки nginx:

  1. $ sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev

Для поддержки встроенного Perl добавляем:

  1. $ sudo apt-get install libperl-dev

Собственно процесс сборки и установки (вместо 0.7.XX впишите номер актуальной версии):

  1. $ wget http://sysoev.ru/nginx/nginx-0.7.XX.tar.gz
  2. $ tar zxvf nginx-0.7.XX.tar.gz
  3. $ ln -s nginx-0.7.XX nginx
  4. $ cd nginx
  5. $ ./configure \
  6. --prefix=/usr/local/nginx \
  7. --with-cc-opt="-I /usr/include" \
  8. --with-ld-opt="-L /usr/lib" \
  9. --with-http_stub_status_module \
  10. --with-http_realip_module \
  11. --with-http_perl_module \
  12. --with-http_ssl_module
  13.  
  14. $ make && make install
  15.  

Обратите внимание, параметры

  1. --with-cc-opt="-I /usr/include" --with-ld-opt="-L /usr/lib"

указывают на расположение системных заголовков и библиотек, без них configure не видит ряда системных библиотек.

linux: iproute2 для управления сетевой подсистемой

19.12.2008

iproute2 -- набор утилит для управления сетевой подсистемой TCP/IP и управления трафиком в Linux.

Большинство руководств по конфигурированию сети до сих пор ссылаются на ifconfig, route и arp, однако ifconfig может вести себя неадекватно в современном сетевом окружении. Эти утилиты должны уйти на свалку истории, однако большинство дистрибутивов все еще включают их. Большинство систем управления сетью используют ifconfig, предоставляя лишь минимальный набор возможностей.

Проект /etc/net project ставит целью поддержку современных сетевых технологий, и, предоставляет набор утилит для наиболее полного контроля всех возможностей iproute2, включая управление трафиком.

Ссылки по теме:

ubuntu: обновляем систему до последнего релиза

18.12.2008

Инструкция по обновлению:
http://www.ubuntu.com/getubuntu/upgrading

Поехали..