Показаны сообщения с ярлыком gentoo. Показать все сообщения
Показаны сообщения с ярлыком gentoo. Показать все сообщения

четверг, 5 января 2012 г.

node.js service gentoo - сервис для старта node.js в gentoo

Решая задачу с проксированием запросов на сбербанковский сайт - заодно сделал запуск сервисов для node.js в нормальном для gentoo варианте. Почему такого сервиса нет в сборке node.js из portage, мне не совсем понятно, но если гора не идет к нам - приходится самим шевелиться.

hg clone http://kilork.org/public/overlay


Путь к извлеченному оверлею прописываем в make.conf.

После этого делаем:
emerge nodejs-service


Все готово к запуску нашего сервиса. Допустим у нас есть директория /home/user/js в которой находится файл server.js - этот файл мы хотим превратить в сервис в gentoo, запускаемый через node.js.

В примере назовем сервис ourservice. Для этого необходимо создать файл /etc/nodejs-service/ourservice.conf:
NODE_DIR=/home/user/js
NODE_SCRIPT=server.js


Затем надо перейти в директорию /etc/init.d и создать символическую ссылку на наш сервис (под root естественно):
cd /etc/init.d
ln -s nodejs-service nodejs-service.ourservice


Осталось только запустить новый сервис:
rc-config start nodejs-service.ourservice


Если все прошло хорошо, то наш сервер будет висеть в списке процессов и может быть даже обрабатывать запросы.

суббота, 16 октября 2010 г.

Gentoo: переопределяем настройки сетевого интерфейса и dns скриптом

Столкнулся с небольшой проблемой: роутер пропихивает на первое место в /etc/resolv.conf себя. И почему-то, такой вариант работает медленнее, хотя вроде как должно быть наоборот. А статически прописывать все адреса нехорошо. Как отключить полезную функцию не нашел (у меня заводская прошивка на Linksys WRT610N). Поэтому добавил следующее в /etc/conf.d/net:

postup() {
[ ${IFACE} == "eth0" ] && sed -i '/nameserver 192.168.0.1/ d' /etc/resolv.conf 
}

192.168.0.1 - адрес роутера.

Неправильно так, но работает. Почему этот внутренний dns так медленно работает, вот что интересно?

пятница, 17 сентября 2010 г.

BSD fail

Решил тут снести gentoo со старенького dell inspiron 6400 (вроде бы 2007 года покупки). Сделал бэкап, и подумал, что хорошо бы разнообразить слегка свою жизнь bsd-системой. Разнообразил. Четыре дня секса с wifi-картой и два попробованных дистрибутива пока привели к установке ubuntu 10.10. Wifi там тоже из коробочки не завелся, но зато - хотя бы не вешал клавиатуру при коннекте (и это 21 век на дворе!). Так что все, ноутбук счастливо урчит свежей версией убунты. Все это следствие постепенного загибания gentoo, как интересного дистрибутива. И дело не в том, что ubuntu быстрее обновляется из бинарного репозитория ("...А где же старик gentoo? Он еще только собирается..."). Нет, все дело в том, что софт там более плотный и интегрированный в единое целое. Сравнивать целиком некомерческий проект с успешно монетизируемым не совсем корректно, но это сообщество gentoo-шников виновато в том, что не могут себя нормально поставить, и проводят все время в склоках и перетягивании одеяла. Загибаться такой большой проект может очень долго, и даже не загнуться никогда, но уровень его уже сильно отстал.

Идея поставить bsd-систему пока до конца не похоронена, будем мониторить ситуацию в стане wifi-дров broadcom'а. Когда это будет делаться без извращений (т.е. блобов, разворачивания виндовых дров и т.п.) с нормальными открытыми полностью дровами, тогда наверно и наступит счастье.

воскресенье, 6 июня 2010 г.

Зависимости между службами в Gentoo: наводим порядок в net.ppp0, nginx и xdm/gdm

В gentoo иногда сталкиваешься с неприятными моментами в старте сервисов. После отключения hal, перестал стартовать xdm, так как dbus стартовал пойзже. А nginx стартовал раньше apache2 (что вообщем-то не так важно), но еще и хотел директории /var/tmp/nginx, а /var/tmp у меня - это раздел в памяти. Если отваливался net.ppp0, то останавливались все сетевые сервисы, хотя локальная сеть и вайфай вполне себе продолжали работать. Вообщем, так дальше жить было нельзя.

Первым делом идем в /etc/rc.conf и ставим:
rc_depend_strict="NO"

Тем самым мы говорим, что достаточно хотя бы одного поставщика net, а не всех сразу. Это решает проблему с net.ppp0.

Дальше, я добавил сервис для создания каталога для nginx, и для установки некоторого порядка в старте, у меня этот файлик я назвал /etc/init.d/kilork и выглядит он так:
#!/sbin/runscript

description="kilork"

depend()
{
 after apache2
 after dbus
}

start()
{
 ebegin "Starting local"

 mkdir /var/tmp/nginx

 eend $? "Failed to start local"
}

stop()
{
 ebegin "Stopping local"

 eend $? "Failed to stop local"
}

Здесь мы говорим, что запускаемся после apache2 (для nginx) и после dbus (для gdm).

Добавляем в сервисы в default (у меня они там все кучей):
rc-config add kilork default

Теперь создаем или правим настройки по порядку старта для nginx и xdm:
kilork@phoenix ~ $ cat /etc/conf.d/nginx 
rc_after="kilork"

kilork@phoenix ~ $ cat /etc/conf.d/xdm
CHECKVT=7
DISPLAYMANAGER="gdm"
rc_after="kilork"

В обоих скриптах добавляется строчка rc_after="kilork", которая говорит, что запускаемся мы после старта сервиса kilork.

Вот теперь вроде все замечательно стартует, ничто не отваливается и все поднимается когда надо. Буду смотреть, насколько рабоче решение, до этого я пользовался парочкой дурацких скриптов, которые смотрели, висит ли соединение, после чего переподнимали все сервисы, но это было естественно неправильно.

К слову сказать, для целей, под которые я сделал kilork - есть стандартный local, но вот только у него стоит "after *", что немного идет в разрез с тем, что мне надо запустить после него gdm и nginx. Поэтому вот так.

вторник, 2 марта 2010 г.

Удаленный доступ с x2go: nx по требованию

Когда надо удаленно обратиться к какой-нибудь из моих машин я в силу природной лени использую x11vnc. Всем хорошо, но не нравится запускать сервер. Когда-то давно очень мне нравился nx. Работает очень шустро. Но тоже, надо запускать сервер, а это мне не нравится, лишние открытые порты и пожираемые ресурсы не приводят ни к чему хорошему. Думаю, где-то с год как точно слышал о x2go, но попробовать никак не доходили руки. Тут таки приперло (через x11vnc отвратно работала клавиатура, да и скорость не радовала) и я совершил титанические усилия по установке и настройке, которые в генту сводятся к следующему:

1. На сервере:

Устанавливаем:
emerge x2goserver
Запускаем базу:
rc-config start postgresql
Создаем схему в базе:
/usr/share/x2go/script/x2gocreatebase.sh
Разрешаем доступ для пользователей группы users:
echo "%users ALL=(ALL) NOPASSWD: /usr/bin/x2gopgwrapper" >> /etc/sudoers
Стартуем сервер:
rc-config start x2goserver

2. На клиенте:

emerge x2goclient
x2goclient

Работает все очень шустро, глюков похожих на x11vnc не наблюдается, хотя есть и свои замороты. Интерфейс клиента позволяет на время забыть о опциях командной строки. И главное, на сервере у нас по прежнему открыт только ssh, что не может не радовать.

четверг, 28 января 2010 г.

Gentoo kernel update script

В этом месяце множество не программистских постов. Разбавлю это постом про отличный скрипт для обновления gentoo-sources ядер в gentoo-основанных дистрибутивах. Писалось под свои нужды, соответственно, если кому-то будет полезно, возможно доработаем для удобства еще больше. Мне же, как любителю получить самое свежее ядро, он экономит 5 минут каждые 2-3 недели. Надеюсь, это не велосипед. Под это дело даже завел аккаунт на github.

Итак, встречаем. Gentoo kernel updater script - browse.

суббота, 23 января 2010 г.

Домашний кинотеатр на базе ASUS O!Play HDP-R1

Многие задумываются, как лучше организовать трансляцию видео-контента дома. Ну я во всяком случае задумывался.

У меня был ряд требований, которые определили используемые технологии.

Требования:
- минимум проводов
- небольшие размеры вовлеченных устройств
- отсутствие шума и высоких температур
- возможность вовлечь большинство цифровых устройств (телефоны, нетбуки, флэшки и внешние накопители)
- низкая стоимость
- возможность обходиться без переключения устройств, или переноса данных на физических носителях

К сожалению, при ремонте квартиры я совершил один важный просчет: сеть я вывел только в одну комнату. Сильно проще было бы, если бы по квартире была бы проложена нормальная гигабитная сеть. А так как провода по полу - моветон, оставалось рассчитывать только на быстрое развитие wi-fi технологий.

Сначала я смотрел в сторону "полноценного" компьютера Acer Revo, компактный, с wi-fi (но старый wi-fi), не греется, маленький. На Linux, опять же таки. Но, это выходило за рамки бюджета. Да и скорость wi-fi вызывала подозрения. Начал смотреть в сторону специализированных коробочек. Смотрел на Western Digital TV, но в нем не было сетевых возможностей, поэтому переключился на решение от ASUS (есть оказывается и WD с сетью - следующего поколения, но цена еще выше). Притом, сначала, я планировал соединить все в сеть, но использовать ее лишь для передачи данных в локальное хранилище около плеера с дальнейшим воспроизведением. Все дело было в моей недоверии wi-fi. Оказалось, совершенно зря.

Итак, я купил коробочку ASUS O!Play HDP-R1, за 4510 рублей. Не дешево, но и не дорого. Нормально. Остальное оборудование, кроме нового телевизора, и обновленного компьютера состояло из:

- wi-fi роутер D-Link DL-624 rev.D (поддерживает 108+)
- wi-fi карточка в компьютере от D-Link с RaLink RT2561/RT61 rev.B 802.11g (написано, что тоже поддерживает 108+)

Роутер этот везде рекламируется как самое глючное из всех возможных устройств по передаче данных по wi-fi. И я это с готовностью подтверждаю. Да и с wi-fi карточкой приходилось помучиться.

Подключил O!Play к телевизору, пару дней смотрел с подключенного внешнего диска и флэшки по USB. Качество для моего неискушенного взгляда было просто удивительным. Ведь до этого я смотрел все на своем скромном 26" экранчике, а на 42" все стало чуть по другому, но без коробочки O!Play разница была только в размере помех, с ней же я узрел полноценное HD.

Вчера лень все же победила лень. Я обратил внимание на последний пункт своих требований с переподключением устройств. Это так лениво делать. Что я решил таки все же включить O!Play в сеть. Притащил коробочку роутера, поставил справа от телевизора, коробочку O!Play слева. Включил напрямую сетку на 100Mbit. До этого я провел некоторое исследование, поэтому знал что в моем доме, где все построено на Linux, а Windows даже не пахнет - придется помучаться с настройкой, ведь коробочка умеет соединяться с Windows-папочками. А этого мне очень не хотелось (мучаться с настройкой) - проще диск туда/сюда таскать. Но, не так страшен черт, как его малюют...

Настройка.

Чтобы облегчить настройку в gentoo для gnome есть пакет gnome-system-settings, если он у вас еще не стоит, то ставим:

USE="samba" emerge gnome-system-settings


Добавляем сервис в загрузку по умолчанию (либо запускаем руками):
rc-config add system-tools-backends default


Добавляем пользователя для администрирования папок (т.е. вашего текущего пользователя, как правило):
usermod -a -G stb-admin kilork


Перезаходим в gnome.

Теперь настраиваем "Система->Администрирование->Службы" и "Система->Администрирование->Опубликованные папки". Там важно поставить галочку для WINS (иначе нашу расшаренную папку не найти по сети), указать пользователя, под которым будет происходить соединение, добавить требуемые папки с требуемыми правами, определить имя сервера. Все это избавляет нас от необходимости копаться в настройках конфигов samba.

Итак, осталось только запустить samba:

rc-config start samba


Если все получилось, то в O!Play мы теперь увидим наш компьютер и расшаренные папки. Я во всяком случае думал увидеть. Но не увидел, пока как следует не покрутил антенну - оказалось, после переноса роутера в соседнюю комнату ее положение перестало давать достаточно качественный сигнал. Я подключи две папки, папку, куда обычно скачиваю все из сети, и /media/, куда монтируются внешние устройства. Думаю, пока мне этого будет достаточно.

Как видно, мне везет и все очень просто. Но мало того, я совершил небольшое открытие: 720p видео играет по wi-fi вообще без каких либо проблем! И даже 1080p играет, но надо следить, чтобы на пути следования сигнала не стояли лишние предметы или люди. Честно говоря, это было для меня шоком, я был готов перекачивать на воткнутую флэшку вполне, а тут оказалось, что это просто не нужно. То есть, если поставить свежий роутер 802.11n и такуе же карточку в комп - проблем вообще не будет. Но это пока отложим, я итак уже совершенно счастлив. Почти.

Осталось разобраться с тем, как нам все это видео выкачивать из сети. До этого я пользовался linuxdcpp, но был в этой программке один недостаток: она не работает с magnet ссылками. И firefox с ними не работает.
Т.е. получается надо решить 2 проблемы, научить firefox обрабатывать magnet-ссылки, и найти программу, которая сможет по magnet ссылке начать процесс поиска/скачивания.

Итак, для понимания firefox magnet протокола надо в about:config добавить ключ network.protocol-handler.expose.magnet логического типа с ложным (false) значением. При таком варианте при тыке на ссылку magnet выдастся диалог, с предложением выбрать приложение для обработки.

Ну а для обработки я нашел eiskaltdc, делают наши ребята, в gentoo устанавливается как всегда - в 2 строчки:
layman -a rion
emerge eiskaltdc


Теперь укажем этот /usr/bin/eiskaltdc при тыке на magnet-ссылку. Отлично, мы еще облегчили себе жизнь.

Надеюсь мое бестолковое руководство кому-то будет полезно. Приятного Вам HD-видео за минимум денег и в максимальном качестве.

UPD: Возможно, кому будет полезна и информация о том, как я убил firmware и восстановил, а также, как решил проблему скорости при доступе по wi-fi.

Update (2011/09): Еще один способ организовать сеть и отказаться от Wi-Fi: альтернатива.

пятница, 15 января 2010 г.

denyhosts вешает ssh!

Да, именно так.

Столкнулся тут, что после множества ошибок в работе операционки в период сбоя с памятью стал намертво вешаться sshd при обращении, притом вешаться со 100% нагрузкой на процессор.

Поскольку не люблю сложных решений, сделал несколько раз emerge -e world, однако это как-то не решило проблему.

Пришлось копаться. Копание делал с strace с опцией -p (цепляемся к корневому процессу sshd) и -f (следим за fork-ми). До этого так не извращался. Анализ вывода strace показал, что denyhosts портит файл /etc/hosts.deny, а sshd видимо не в состоянии прилично это обработать и вешается. Уж не знаю, ошибка ли это openssh, и стоит ли писать об таком типе атаки (ведь потенциально, эту строку можно сознательно заставить вставить в /etc/hosts.deny назначив себе такое имя хоста). Возникло все это от случайных сбоев в памяти, и реальную причину такого поведения denyhosts я пока не успел выяснить (отпишусь сюда же, когда доведу до конца). Есть подозрение, что есть какие-то завязки на версии python'а, и сбои, которые у меня с ними были. Пока пришлось подредактировать /etc/hosts.deny и отключить denyhosts на время разбирательств, что печально.

понедельник, 9 ноября 2009 г.

Все говно, кроме мочи

В очередной раз нашел этому подтверждение в интервью с Brad Fitzpatrick: "...The implementation of libraries that look like they could be beatiful are shit...".

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

В эти выходные наконец таки реализовал скрипт для сборки нового ядра и почистки старых. Экономия нервных клеток на этой операции будет оценена не скоро, но думаю - будет приятно. Мне кажется, именно в этом суть программистского подхода к делу, все рутинные операции учить делать машину. Если мы делаем это больше чем один раз, это уже надо автоматизировать. Очередной пункт в личном todo-листе выполнен. Выложу тут и код этого сокровища в следующий раз. А пока оставшиеся пункты:
1. python-скрипт для заполнения ежедневных отчетов на работе
2. perl-скрипт Finance::Quote::Sberbank - исправить накопившиеся ошибки (есть 9-месячный багрепорт, а это ужасно)
3. локализовать openerp
4. lfs-нуть нетбук
5. найти или написать штуку для проверки торговой стратегии на архивных данных
6. написать собственно штуку для торговой стратегии
7. сделать информеры на svn репозитории в виде notify в gnome

И еще много чего, что мне хочется сделать. Каждый день я сижу где-то до 2-х часов ночи, стараясь сделать сегодня чуть-чуть больше чем вчера. И главное - ни один день не должен пройти без познания или создания чего-то нового. Это настоящее счастье - узнавать новое.

воскресенье, 13 сентября 2009 г.

Воспроизводим звук по сети: pulseaudio + ubuntu + gentoo

Итак, задача. У вас есть компьютер, на котором есть большой монитор, но... нет колонок. Есть еще нетбук, колонки не ахти, но есть. Ну и наушники есть, только провода у них не очень длинные. Что надо сделать, чтобы смотреть кино на большом мониторе и при этом слушать звук на нетбуке?

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

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

Дальше мы включаем google. Находим padevchooser, ставим (на нетбуке, где у нас ubuntu), запускаем:

kilork@pantogan:~$ sudo apt-get install padevchooser
kilork@pantogan:~$ padevchooser &


В трее появляется иконка, жмем на нее, выбираем "Configure Local Sound Server...", там включаем все что понравится на закладке "Network Access". Все, на нетбуке все.

Теперь в gentoo ставим флаг pulseaudio для mplayer'а, запускаем кино воспроизводиться, установив переменную окружения PULSE_SERVER адресом нашего нетбука (да, чуть не забыл, у нас еще и wifi работает, так что способ с флэшкой - это просто позор):

kilork@phoenix:~$ PULSE_SERVER=192.168.1.2 mplayer -ao pulse ~/kilork_the_best.avi


192.168.1.2 - как нетрудно догадаться, адрес нетбука. Если все у нас хорошо, то на большом экране заиграет видео, а звук будет играть на нетбуке. У меня все было именно так.

Но этого мало, ведь чтобы поставить на паузу по прежнему надо пойти и нажать на паузу (у меня конечно, беспроводная клава, но все равно, это не то). Итак, чтобы все было совсем хорошо, заходим по ssh с нетбука и добавляем еще два параметра к запуску: DISPLAY и XAUTHORITY. Приблизительно так:

kilork@phoenix:~$ XAUTHORITY=/var/run/gdm/auth-for-kilork-blablabla/database DISPLAY=:0.0 PULSE_SERVER=192.168.1.2 mplayer -ao pulse ~/kilork_the_best.avi


Теперь, все путем, нетбук превращается в окончание звукового штекера и пульт управления.

вторник, 7 апреля 2009 г.

Работа с GnuCash. Часть 6. Получение котировок автоматически.

UPD: Внимание! Последняя самая актуальная и полная версия руководства по GnuCash на русском языке в различных форматах доступна по адресу http://kilork.org/gnucash.html.

Я совершенно забыл рассказать о том, как организовал ежедневное получение котировок.
Собственно, все как всегда просто, если не требовать слишком много. Хотелось бы знать, какое число пользователей gnucash - пользователи Windows. А для пользователей unix-подобных систем вполне удобен способ с использованием cron.

Итак, для получения котировок для файлика $HOME/finans без запуска gui-клиента достаточно выполнить следующую команду:
gnucash --add-price-quotes $HOME/finans


Кроме этого, нам надо бы загрузить требуемые переменные окружения, так как мы используем наши собственные модули получения котировок (Quote::Sberbank). Есть еще одна занятная особенность, связанная с установкой текущей локали: GnuCash получает котировки для той валюты, которая связана с текущей локалью. Особенность состоит в том, что при запуске cron эта переменная может оказаться и пустой. В итоге оформляем все это в виде небольшого скрипта:
kilork@phoenix ~ $ cat gnucash_fetch.sh
#!/bin/bash

if [ -z "$PERL5LIB" ]
then
PERL5LIB=~/perl/lib64/perl5/site_perl/5.8.8
else
PERL5LIB=$PERL5LIB:~/perl/lib64/perl5/site_perl/5.8.8
fi

MANPATH=$MANPATH:~/perl/share/man

export PERL5LIB MANPATH

export LANG="ru_RU.UTF-8"
export LC_ALL="ru_RU.UTF-8"
FQ_LOAD_QUOTELET="-defaults Sberbank" gnucash --add-price-quotes $HOME/finans


Уже почти все, теперь вписываем вызов этого скрипта в crontab:
kilork@phoenix ~ $ crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXbHRdTU installed on Sat Jan 10 00:36:54 2009)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
55 23 *    * *    $HOME/gnucash_fetch.sh > $HOME/gnucash_fetch_log 2>&1


Таким образом, каждый день в 23:55 мы будем получать котировки и всегда будем видеть актуальное состояние наших активов без лишних телодвижений.

воскресенье, 5 апреля 2009 г.

Использование vpnc

Очень долго хотелось избавиться от cisco-vpnclient-3des. Наконец возникла необходимость и дошли руки настроить. Что было плохо в проприетарном клиенте? Практически все. За исключением того, что он работал и делал то, что от него ожидали. Но сеть замыкалась в vpn, поменять роуты не удавалось, что раздражало. Итак, ставим и настраиваем vpnc в gentoo.

Для меня все в основном повторяет шаги из gentoo wiki.

Смотрим на описание пакета и ставим его:
mexidol kilork # emerge -s vpnc
Searching...
[ Results for search key : vpnc ]
[ Applications found : 5 ]

...

* net-misc/vpnc
Latest version available: 0.5.3
Latest version installed: 0.5.3
Size of files: 96 kB
Homepage: http://www.unix-ag.uni-kl.de/~massar/vpnc/
Description: Free client for Cisco VPN routing software
License: GPL-2 BSD

...

mexidol kilork # emerge vpnc


В моем случае, от старого клиента cisco остался настроенный файлик pcf.

Основу для конфигурации получаем как раз из него:
mexidol kilork # pcf2vpnc /etc/opt/cisco-vpnclient/Profiles/hsbk.pcf /etc/vpnc/hsbk.conf


Создаем ссылку для запуска сервиса:
mexidol kilork # ln -s /etc/init.d/vpnc /etc/init.d/vpnc.hsbk


Все настроили, теперь можно запускать:

mexidol kilork # rc-config start vpnc.hsbk


Одна проблема, роуты плохи, мне надо чтобы через vpnc шло только для одной подсети. Чтобы это исправить, создаем файлик /etc/vpnc/scripts.d/hsbk-postup.sh:
#!/bin/sh
route del -net 0.0.0.0 netmask 0.0.0.0 dev tun0
route add -net 172.20.0.0 netmask 255.255.0.0 dev tun0


Некрасиво здесь, что прошито имя tun0. Но поскольку время поджимало, пока так.

понедельник, 19 января 2009 г.

Logitech QuickCam E2500 - оживляем всевидящее око...

Прокопавшись по форумам нашел нужную информацию для запуска этого устройства. Теперь спешу поделиться с Вами.

Итак, используем поставляемый в ядре 2.6.28 драйвер gspca. Только придется его чуток пропатчить. Всего навсего прописываем идентификатор нашей камерки.

kilork@phoenix ~ $ diff -u /usr/src/linux/drivers/media/video/gspca/zc3xx.c~ /usr/src/linux/drivers/media/video/gspca/zc3xx.c
--- /usr/src/linux/drivers/media/video/gspca/zc3xx.c~ 2008-12-25 02:26:37.000000000 +0300
+++ /usr/src/linux/drivers/media/video/gspca/zc3xx.c 2009-01-19 01:21:08.000000000 +0300
@@ -7530,6 +7530,7 @@
{USB_DEVICE(0x0458, 0x700c)},
{USB_DEVICE(0x0458, 0x700f)},
{USB_DEVICE(0x0461, 0x0a00)},
+ {USB_DEVICE(0x046d, 0x089d), .driver_info = SENSOR_MC501CB},
{USB_DEVICE(0x046d, 0x08a0)},
{USB_DEVICE(0x046d, 0x08a1)},
{USB_DEVICE(0x046d, 0x08a2)},


Пересобираем ядро с нужными модулями. modprobe gspca_zc3xx. dmesg. Видим что наше устройство зацепилось. Теперь пробуем запустить cheese. Ни фига. Одни квадратики.

На этот случай есть замечательный пакет libv4l:
kilork@phoenix ~ $ emerge -s libv4l
Searching...
[ Results for search key : libv4l ]
[ Applications found : 1 ]

* media-libs/libv4l
Latest version available: 0.5.7
Latest version installed: 0.5.7
Size of files: 84 kB
Homepage: http://people.atrpms.net/~hdegoede/ http://hansdegoede.livejournal.com/3636.html
Description: V4L userspace libraries
License: LGPL-2.1


После установки пробуем еще раз, на этот раз таким образом:

kilork@phoenix ~ $ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so cheese


Ура, на какую-то долю секунды показалась картинка с камеры, страшная, но живая. Потом куда-то делась яркость. На форумах расписано как и с этим побороться, но мне было уже как-то влом. Поэтому я зашел в настройки cheese. Выбрал разрешение 320х240, потом обратно в 640х480, картинка стала поживее. Итак, камера работает, картинку кажет.

Поскольку считаю такой способ запуска устройства сильно извращенным, жду ядра 2.6.29 - там обещали добавить эту строчку, а может быть и победить косяки с яркостью, сообщениями о битых mjpeg, а так же загрузкой процессора под завязку. Ждем ebuild'ов!

P.S. Интересная штука с скайпом, пока не разбирался, но он игнорирует мои попытки подключить камерку, и даже когда я ее выбираю (/dev/video1) все равно в предпросмотре показывает изображение с тюнера (/dev/video0). Могу конечно организовать телетрансляцию через skype, но все же как-то это странно, ругнулся бы хоть как. Ладно, запустим с libv4l и из консольки, может разберемся с бякой.

воскресенье, 18 января 2009 г.

Наконец-то! Поиск по истории bash через PgUp/PgDown

В gentoo это работает по умолчанию. В других дистрибутивах почему-то нет. Наконец-то дошли руки разобраться, где собака зарыта. Дело все в файлике /etc/inputrc. На моем eee в ubuntu он по умолчанию содержит две закомментированые строки:

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward


Раскомментируем, открываем новый терминал. Вбиваем начало любой команды, PgUp (Fn+Вверх на eee), находится первая команда, еще раз, слудующая. Никаких Ctrl+R. Ура, еще одно удобство настроено.

вторник, 18 ноября 2008 г.

Статические точки монтирования в HAL

Все время хотел научить HAL монтировать мой внешний накопитель не в папочки disk, disk-1, а в какие-то мои предопределенные папочки. Еще в пятницу, или даже в четверг поставил перед собой задачу, в выходные руки так и не дошли, но вот случилось чудо, и в понедельник ночью я все настроил. Все очень просто. И самое интересное, что могло быть еще проще, если бы я догадался хоть раз назначить метку устройствам, а не оставлять ее всегда пустой.

Так вот, мой метод основан на uuid устройства. В gentoo все свелось к созданию файлика /etc/hal/fdi/policy/10-transcend.fdi (внешний ЖД производства Transcend, отсюда название) следующего содержания:


<?xml version="1.0" encoding="UTF-8"?>
<deviceinfo version="0.2">
    <device>
        <match key="info.udi" string="/org/freedesktop/Hal/devices/volume_uuid_1500_3B23">
            <merge key="volume.label" type="string">ass</merge>
        </match>
        <match key="info.udi" string="/org/freedesktop/Hal/devices volume_uuid_2e8f164b_9c24_4847_afbd_2e79aefc1219">
            <merge key="volume.label" type="string">hole</merge>
        </match>
    </device>
</deviceinfo>


Перезапускаем hal. Переподключаем устройство. Yahoo!

Тут видно, что я просто переназначаю метку устройства для нужных мне uuid. Длинное название uuid-а я извлек из вывода команды lshal. И повторюсь, когда я уже писал этот файлик, я вдруг осознал, что по сути мне всего-то и надо было поставить метку устройства... Ну да ладно, через тернии к звездам :)

понедельник, 17 ноября 2008 г.

Еще один шаг к власти роботов!

Adobe сделала это, 64-битный плагин для флэша. Это просто замечательно. Однозначно, новость номер один сегодня. Нефть неуклонно подползает к 50 долларам, это новость номер два. Водителя-убийцу посадили на 7 лет - это новость номер три.

Вообщем, сегодня день сплошных чисел и хороших новостей. Дел сегодня было так много, что на новости время нашлось только дома. Но от этого они не стали менее интересными, а флэш уже даже и в портежи попал, и ко мне на компутер.

четверг, 7 августа 2008 г.

Бесперебойная работа net.ppp0

После перехода на openrc обнаружил одну неприятную вещь: сетевые сервисы перестали подниматься после обрыва соединения. Т.е. соединение поднимается, а сервисы - нет. Быстрого правильного решения не нашел, зато сделал быстрое неправильное, запустил такую команду, и теперь моя попа всегда в комфорте:

while true; do nmap localhost | grep 80 > /dev/null || (rc-config restart net.ppp0; rc-config start sshd openvpn.xxx apache2 squid ntp-client proftpd); sleep 120; done