четверг, 10 декабря 2009 г.

xfce и samba

Кажется победил! =) Давно маюсь одной, вроде бы простой проблемой - удобство монтирования ресурсов Windows сетей в Linux. Дело в том, что многие программы не поддерживают возможность сетевой работы, а на каждую случайную расшаренную папку "маунтов" не понаделаешь. Эта проблема меня окончательно доняла, когда я перехал под xfce4.

Задача: Монтировать произвольное количество ресурсов samba по ссылку вида smb://сервер/папка с минимальным количеством телодвижений и интегрировать все это хозяйство в окружение xfce.

Для решения задачи потребовалось установить 3 программы:
  • gvfs - виртуальная файловая система (собирать с USE="fuse")
  • xfce4-gvfs-mount - плагин xfce для работы с gvfs
  • gmrun - программа запуска приложений с расширенными настройками, для замены стандратной xfrun4

В общем, после установки всего этого хозяйства потребовалось пара настроек. Привязать в глобальных клавишах на сочетание Alt-F2 запуск gmrun. Для gmrun создан файл настроек:

/etc/gmrunrc
URL_http = /usr/bin/firefox %u
URL_smb = xfce4-gvfs-mount -l %u

среда, 11 ноября 2009 г.

Загрузка linux с usb-диска.

Давно не требовалось грузиться с внешнего usb-диска. А тут при смене в ноутбуке hdd на ssd решил перелить все через dd и протестироваться загружаясь с usb.

При загрузке с usb-диска получал ошибку о отсутсвии root. Все переыл в гугеле =). Решение крылось в указании ядру при загрузке rootdelay=10, для того, чтобы usb-диск успел инициализироваться и определиться.

Все работает. SSD - рулит =).

четверг, 8 октября 2009 г.

nVidia и консоль

Столкнулся с интересным поведением консоли и Xorg. При выходе из X-ов в консоль, текст с курсором уходит за нижний край экрана. Оказалось это проблема с драйверами nVidia. Решение мне показалось смешным - замена консольного шрифта с ter-k14b на ter-k16b. Для предотвращения такой проблемы в консоли необходимо использовать шрифт 8x16!

среда, 23 сентября 2009 г.

Lotus Notes 8.5 и шрифты - окончание

Как я писал ранее, для работы Lotus Notes, под Linux, нужны шрифты Luxi. Установка этих шрифтов решила проблему отображения диалоговых окон, но меня по прежнему смущал внешний вид. Шрифты далеко не лучшие для этих целей. После некоторого времени разборок с .fonts.conf (или для всего компьютера /etc/fontsc/local.conf) я нашел корректный метод работы подстановки шрифта Luxi и это меня устроило:

<match target="pattern">
<test qual="any" name="family"><string>Luxi Mono</string></test>
<edit name="family" mode="assign"><string>Courier New</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Luxi Sans</string></test>
<edit name="family" mode="assign"><string>Verdana</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Luxi Serif</string></test>
<edit name="family" mode="assign"><string>Times New Roman</string></edit>
</match>


Дальше уже персональное творчество каждого - какие шрифты заменить на что.

Пакетная обработка файлов и копирование структуры каталогов

Задача была простой - найти файлы в каталоге и переместить их в другой сохраняя пути размещения файлов (структуру каталогов).
Командой find с маской были отобраны файлы и результат сохранен в фале. Пример то го что предстояло переместить:
t2/1.txt
t2/t1/tt/1.txt

Дальше идут варианты - или я дурак или лыжи не едут. Команда mv не может переместить файл и создать нужные каталоги? При этом cp имеет нужную опцию -parents. В итоге решил скопировать по списку и удалить не нужное.

#cat files.txt | while read f ; do cp --parents "$f" destination_dir ; rm "$f" ; done

Хороший одмин =) еще бы вставил проверку перед удалением =).

вторник, 22 сентября 2009 г.

Пакетная обработка файлов (wma to mp3)

На самом деле, данный пример записал просто для памяти и он непосредственно к wma и mp3 отношения не имеет.
Попались мне нужные звуковые файлы в wma формате, их было много, но автомобильная магнитола их напрочь отказалась читать. Переведем все в mp3. Нет проблем =).

#for f in *.wma ; do ffmpeg -i "$f" -acodec libmp3lame -ab 128 "${f%.wma}.mp3" ; done

В цикле выбираем все файлы отвечающие шаблону. Имена файлов для обработки попадают в переменную f. Для каждого f выполняется преобразование. Конструкция "${f%.wma}.mp3" отрезает старое расширение файла и заменяет его новым.

И в продолжении темы, дополнил имена файлов до 3-х символов:

#for f in ??.mp3 ; do mv "$f" "0$f" ; done

добавив цифру 0 в начало имени.

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

vob в avi

Опять старая тема. Конвертирование DVD в AVI файл. Добрые люди в ffmpeg обновили свой код. В итоге имею проблемы с ac-3 звуком. Обычно я DVD перегонял в AVI оставляя оригинальную ac-3 дорожку. Тут выяснилось, что последняя (доступная мне) версия ffmpeg, при создании avi файла, что то делает таким образом, с дорожкой или самим avi файлом, в результате чего проигрывание возможно только при использовании декодера ac-3 от самого ffmpeg.

Не претендую на истину, но судя по их анонсам, в последних версиях ffmpeg они заменили кодек ac-3 на собственный. Утверждают, что он работает в разы быстрее прежнего, но в результате получаемая звуковая дорожка может быть проиграна только их декодером. Будем ждать обновленных версий. А пока использую avidemux.

В процессе разборок с ffmpeg пользовался mencoder-ом. Ну а далее маленькая подсказка по кодированию DVD в AVI:

mencoder -o film2.avi -oac copy -ovc x264 -x264encopts crf=25 -of avi VTS_03_*VOB

Для вырезания куска видео, можно использовать опции:

-ss (начало фрагмента в секундах или указание времени ЧЧ:ММ:СС)
-endpos (длительность в секундах или указание времени ЧЧ:ММ:СС)

пятница, 26 июня 2009 г.

Копирование dot-файлов

Родилась задача - скопировать из домашнего каталога все настроечные файлы в отдельный каталог. Вроде все просто - cp .*, но это захватывает и спец каталоги (. и ..). Решение как всегда простое:

#cp -a .[^.]* tobackup

Надо подумать еще вариант find.

Плагин Price.ru в Firefox

Не могу понять, почему в Firefox для Linux отсутствует поисковый плагин для Price.ru. Может как то не правильно устанавливаю =). В общем спер я этот плагин из Windows (C:/Program Files/Mozilla Firefox/searchplugins/priceru.xml) и положил в соответстующую папку в Linux (/usr/lib/mozilla-firefox/searchplugins/).

Если нет этого файла под руками, то его можно создать самому. Вот его содержимое:

<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
<ShortName>Price.ru</ShortName>
<Description>Search for the best price.</Description>
<InputEncoding>windows-1251</InputEncoding>
<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8%2F9hAAAACXBIWXMAAAsSAAALEgHS3X78AAABhklEQVQ4jX2Sv0vDQBiGn4uF0iK1giJ2sAGHbiLauhSKIGj%2FAmddU1D3Tg4ujoJFcXYSHRREOopuKuogiCB10KVo4o9aK9pzCElzTewLgdx73%2FPm%2By4HbZKmKaVh2I9pStcP8AC0dphisWV43z2eN0T8CzsaG4eLc78PiFJJiE7ww3VZWSdHpn019gi7e76Nq5sTrFC0YyArK60RwD4ogPLBtuulkv1YoSjxn08ArFAUvWAQSeiEs3kRArB2NiTAK1BZL3FrSlK9dvbtQ9VOGk4CoBcMAOpPFaRpyq7G6ZH8ebfcL8YnMvQ83nFxb%2FH8BX0RwUAbDBBJ6PxWH9HC2byIJHRlNL1gkEvb3n9wbWm%2BNUI4mxeN0yNZf6ooQbm0roBe2JF7kTZnZnE6qayXOD6zw5qry4GwNppRA7whDuyqfOiDtewUgPob17pjyj3PpXWGalWaaGg0FTg2tyh8HSx8vCmBjuR3IxD2ddDeidOBA8e39gPrA7XWHZOXkyPyJTMoO9X9AaeeqENksUPXAAAAAElFTkSuQmCC</Image>
<Url type="text/html" method="GET" template="http://price.ru/enter?">
<Param name="pnam" value="{searchTerms}"/>
<Param name="from" value="fx3"/>
</Url>
<SearchForm>http://price.ru/index.html</SearchForm>
</SearchPlugin>

среда, 24 июня 2009 г.

Lotus Notes 8.5 и шрифты

Очередной раз пытался поставить Lotus Notes в Gentoo. Ставил из пакетов rpm. Напоролся на мелкие шрифты в диалоговых окнах. Совершенно случайно обратил внимание, что по умолчанию в настройках для шрифтов указан Luxi Serif.

Нашел пакет который содержит шрифты Luxi - media-fonts/font-bh-ttf и чудо произошло. Все диалоговые окна стали отображаться нормальными шрифтами вменяемого размера.

Попытка обойтись без установки этого шрифта ни чего хорошего по прежнему не дала. Пробовал подставить другой шрифт через fonts.conf вместо Luxi Serif. Fc-match показывает, что подстановка срабатывает, но в Lotus подстановка не действует. Как это победить не придумал.

Не зависимо от непонятного поведения шрифта Lotus Notes корректно встал и работает.

пятница, 15 мая 2009 г.

Очередной раз о шрифтах в Linux

У меня по нет понимания как управлять шрифтами в Linux. Перечитал много всего, но окончательного понимания нет. После старта xorg управление шрифтами и их использование делится на две части. Как они взаимосвязаны не понимаю =).

1. Установка шрифтов X в файле xorg.conf.
2. Установка шрифтов через fontconfig.

Если шрифты установлены через fontconfig то в основном все работает, но утилиты типа xlsfonts, xfontsel, xfd и т.п. воспринимают выбор шрифтов только тех, которые указаны в xorg.conf.

Главный вопрос по прежнему остается - где все таки настраивать шрифты и как соотносятся настройки сделаные в xorg.conf и /etc/fonts/fonts.conf?

среда, 13 мая 2009 г.

ZyXEL (HylaFAX - ответный удар)

Эта заметка является продолжением рассказа про HylaFAX - Тупость и лень человеческая безграничны. А точнее, про не очень внимательного Одмина =).

Для работы HylaFAX используется модем ZyXEL Omni 56K Duo подключенный по USB. Сервер работал с ядром 2.6.22 собранным еще 2007 году. Uptime 325 дней.

По причине проблем с новой версией vmware ядро было обновлено и после перезагрузки выясняется, что из устройств пропал /dev/ttyUSB0! Перерыл все настройки, все в порядке, а устройства нет. И вот тут то и наступил момент истины. Я вспомнил, что для работы модема ZyXEL Omni 56K Duo я правил драйвер. Как не забывать такие вещи я не знаю =).

К чему все это я рассказал - для работы модема ZyXEL Omni 56K Duo необходимо править код драйвера omninet. Находимо в файле /drivers/usb/serial/omninet.c найти строку #define ZYXEL_OMNIPLUS_ID 0x1500 и заменить ID устройства на 0x1512.

В общем на этом можно расказ о памяти человеческой и завершить =).

пятница, 8 мая 2009 г.

ffmpeg или dvd to avi

В общем писать особенно не чего =). Попался мне dvd диск, который "в лоб" отказался конвертироваться. По результатам войны с ним, родился мальньки справочник - Как перевести dvd в avi.

1. Определение файлов vob которые необходимо конвертировать

Научного подхода я не искал. Файлы определяю визуально =) по размеру и расширению.

2. Как сжимать?

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

#ffmpeg -i film.vob -acodec copy -vcodec libx264 -vpre hq -crf 25 film.avi

Кодек видео -vcodec libx264
Пресет качества -vpre hq
Коэфициент сжатия -crf 25

3. Как сжать несколько vob в один avi

ffmpeg умеет принимать потоковые данные. Наши vob файлы и есть потоки. По этому самый простой способ:

#cat film1.vob film2.vob | ffmpeg -i - -acodec copy -vcodec libx264 -vpre hq -crf 25 film.avi

Ключевой параметр "-i -", где тире говорит брать данные для компрессии со стандартного ввода.

среда, 29 апреля 2009 г.

FreeNX - авторизация

FreeNX работает через ssh и первоначальное соединение клиента с сервером выполняется от фиксированного имени пользователя - nx. Авторизация пользователя nx в ssh происходит по ключу. Далее, выполняется вход по ssh, уже от имени клиента идет соединение с localhost. Таким образом, для обеспечения работы FreeNX, в ssh достаточно иметь настройки разрешающие подключение к внешним ip адресам сервера пользователю nx с авторизацией по ключу, а пользователям необходима возможность интерактивного входа с localhost.

Если FreeNX настраивается способом, пердлагаемым после утановки (ключ --setup-nomachine-key), то в каталоге пользователя nx устанавливаются заранее сгенерированные ключи от NoMachine. При этом, на стороне клиента, тоже устанавливается, тот же самый ключ и при создании соединения он прописывается в конфигурационный файл клиента.

С одной стороны, это удобно, где бы не находился, скачав клиента из интернет, можно сразу организовать доступ к FreeNX, но эта простота оборачивается и проблемой безопасности, т.к. ключ NoMachine известен всем.

Изменение ключей ssh для FreeNX делается в два этап:
  1. На сервере запускается nskeygen, который создает новые ключи в домашнем каталоге пользователя nx (/var/lib/nxserver/home/.ssh/). Для клиента нужен файл client.id_dsa.key
  2. На клиенте необходимо заменить ключ в файлах конфигурации соединения (файлы с расшерением nxs). Так же, для последующего создания соединений с новым ключом, необходимо заменить содержимое клиентского файла server.id_dsa.key на новое с серверного файла client.id_dsa.key.

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

FreeNX - общая информация

Зацепила меня самооценка. Разборки с FreeNX продолжаются =), а точнее они закончились и есть о чем написать.

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

FreeNX - это GPL реализация NX сервера, клиента и различных NX компонентов. Так же, существует бесплатная версия NX сервера от NoMachine - NX Free Edition. Соответственно FreeNX и NX Free Edition - абсолютно разные вещи.

Я все настраиваю и использую под Windows и Gentoo. На Gentoo установлена серверная часть net-misc/nxserver-freenx, а под Windows использую бесплатного клиента NoMachine. Дополнительно, под Gentoo, в качестве клиента использую net-misc/qtnx.

Как в деталях работает NX, вопрос отдельный и достаточно мутный. В общем случае, клиент по ssh соединяется с сервером, где запускается новая сессия X-сервера, аналогичным со startx методом.

День развлечений (freenx, synaptics)

freenx

Ну удачный день сегодня. Наткнулся в новостях на freenx - некая разновидность терминального сервера. Утверждается, что это тот же xdm только с функциями сжатия и т.п., т.е. как основное преимущество - работа по тонким и плохим линиям связи. Памятуя о том, что дома меня иногда напрягает работа xdmcp через wifi, а уж для применения через интернет, этот протокол вообще не подходит, решил его поставить.

Установка классическая:

#emerge net-misc/nxserver-freenx

Для проверки, с минимальными ограничениями по безопасности, необходимо одна команда:

#nxsetup --install --setup-nomachine-key --clean --purge

После этого все благополучно работает. Маленький нюанс, т.к. freenx работает через ssh, то этот демон должен быть соответственно запущен.

Дальше скачал клиента под windows c http://www.nomachine.com, подключился и вроде все в порядке. И вот разочарование, на первый взгляд мелочь, а заставила меня полностью отказаться от использования freenx - переключение языка ввода! Я так понимаю, что проблема русского языка не излечима.

Общая суть граблей - настройки сделанные в xorg не транслируются в freenx, соответственно, то что у меня настроено для переключения языка не работает. Локальный язык ввода (из windows) не передается удаленной машине. С танцами и бубнами удалось заставить работать встроенный в KDE переключатель раскладок, но это отличается от моего текущего профиля, при работе на локальном компьютере.

Поступил как последний ламер - снес freenx. Сижу думаю, кто не прав? Я - сдался и не разобрался до конца или все таки опять кривость технологий на стыке windows/linux? Вопросы конечно риторические, но по ходу пора покупать mac =).

synaptics

Для работы тачпада (touchpad) в новом xorg нужно установить драйвер xf86-input-synaptics и установить политику в /etc/hal/fdi/policy/11-x11-synaptics.fdi. Это проблем не вызывает, но как выяснилось, а я сразу не заметил, что при этом не работает щелчок по тачпаду.

Решение оказалось простое, надо добавить в файл политики одну строчку, которая привязывает щелчок по тачпаду к нажатию клавиши:

<merge key="input.x11_options.TapButton1" type="string">1</merge>

Пока копался с этим тапом, нашел еще полезняшку - скрол двумя пальцами. Внимательно читайте файлы с примерами =), там много интересного!

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

sort

На днях наткнулся на интересную задачу, отсортировать содержимое файла, в котором первой строкой идут заголовки столбцов и был неприятно удивлен, отсутствием в sort такой опции. По моему, не логично =). Не исключаю факт, что есть более другая утилита sort, о которой мне не известно, или совсем другая программа которая может сортировать вывод по столбцам, в которой предусмотрено наличие заголовков.

Пока я остановился на комбинации sort и awk:

#cat file.txt | awk 'NR==1 ; NR > 1 {print $0 | "sort -k 2"}'

Считывается файл и перенаправляется в awk.

Первой командой NR==1 выводится первая строка файла, а дальше, для все строк больше 1, идет печать на стандартный вывод и перенапряляется в sort.

Конструкция получилас достаточно длинной, но можно затолкать в крипт и параметрами в него передавать ключи для sort. Получится его аналог, с сортирующий файл с первой строкой заголовка, или ещё парамтерами указывать, сколько строк считать заголовком.

Надо искать стандартную утилиту =(. Не нравится мне самодеятельность, не верю, что эта функция не включена ни в одну базовую утилиту.

пятница, 10 апреля 2009 г.

Время загрузки компьютера

Периодически я читаю новости =) о том, как быстро загружается компьютер и соответственно смотрю на собственный ноутбук. Я уже не помню какое ПО и в каком объеме у меня стояло пол года назад, остались результаты измерения от bootchart.

По замерам в ноябре прошлого года у меня получалось время загрузки 43 секунды. Сегодня я произвел новый замер и был приятно удивлен 36 секундами =).

Первое, что бросилось в глаза, это время загрузки ядра сократилось с 15 до 7 секунд. Неплохая прибавка =). Думаю, что это следствие его постепенной оптимизации - убирание лишнего, переход на более новые ядра.

Разобрал меня интерес, что делает ядро целых 7 секунд? Его размер копеечный, по сравнению со скоростью передачи данных, процессор достаточно мощный =). Железо заранее известно. В итоге включил я в ядре опцию фиксации времени событий:

Kernel hacking --->
[*] Show timing information on printks


Перезагрузился и анализируя вывод dmesg увидел очень странную вещь:

[ 2.764571] Synaptics Touchpad, model: 1, fw: 6.2, id: 0x1a0b1, caps: 0xa04793/0x302000
[ 2.764699] serio: Synaptics pass-through port at isa0060/serio4/input0
[ 2.802530] input: SynPS/2 Synaptics TouchPad as /class/input/input5
[ 6.910911] input: PS/2 Generic Mouse as /class/input/input6

Получается, что определение моего touchpad-а занимает у ядра практически 4 с лишним секунды!

За работу touchpad-а на ноутбуке в ядре отвечает CONFIG_MOUSE_PS2. Лишаться touchpad-а я не захотел =), по этому попробовал пересобрать поддержку ps2 мышей модулем. И наступило чудо! Скорость загрузки ядра сократилась до 3 секунд, а общее время загрузки с 36 до 31 секунды.

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

Дальнейший анализ результатов bootchart дал еще несколько идей по сокращению времени загрузки. Основной тормоз - fsck.reiserfs. Для проверки, я отключил fsck.reiserfs (создал файл /fastboot) и получил время загрузки 27 секунд! Достаточно.

Главное, что я понял из этих экспериментов - идеала не достичь ни когда.

З.Ы. Для справки - hwclock при старте системы занимает 2 секунды =))).

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

dhcp и ddns

Речь идет о двух системах - клиент под Linux и сервер Windows. Достаточно стандартная ситуация: dhcp сервер раздает ip адреса и регистрирует имена компьютеров в dns (реализция ddns от Microsoft). При настройках dhcp по умолчанию, в dns регистрируются клиенты dhcp которые делают об этом специальный запрос dhcp. Суть проблемы - клиент под Linux, получая адрес от dhcp сервера, не регистрируется в dns.

Решение проблемы от Microsoft - в настройках dhcp сервера указать необходимость регистрации в dns клиентов dhcp не поддерживающих запросы обновления.

Решение проблемы от меня =) - я решил, а правильно это или нет, кто виноват и что делать оставим за кадром.

Пройдя путь решения по Misrosoft-овски я удивился, что продвинутый, в сетевом плане, Linux в достаточно тревиальном вопросе оказался, мягко говоря, не на высоте. Т.к. у меня Gentoo, то мой Gentoo-way был тернист =).

Первое, что было сделано, это освежение в памяти настроек dhcp. По дукументации, gentoo x86 handbook, предлагается использовать один из 3-х доступных dhcp клиентов: dhclient, dhcpcd или pump. Так же, в документации, есть простенькая табличка, в которой приведена краткая характеристика каждого из клиентов, из которой следует:

  • dhclient - создан ISC, теже люди, что и BIND делают. Очень гибкий, много настроек, но не умеет получать ntp и не отправляет имя хоста.
  • dhcpcd - основной клиент Gentoo, и активно развивается Gentoo, но имеет ряд багов (тормозит и падает).
  • pump - легкий, но не надежный и мало, что умеет

Естественно оказалось, что у меня используется именно dhcpcd. Когда выбирал, pump был отброшен из за нелестных отзывов, а dhclient из за того, что он входит в пакет dhcp, который еще и сервер, а лишнего на компьютер ставить не хотелось.

Из описания dhcpcd следует, что он не передает некий hostname. Как можно получать ip адрес и не передавать hostname я не понял, т.к. в dhcp регистрируется компьютер с именем. Т.к. для регистрации в dns необходимо слать специальный запрос, в man-е к dhcpcd нашел необходимую опцию "-F both" и внес ее в настроечный файл /etc/conf.d/net.

#/etc/conf.d/net
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-F both"

Для проверки сделанных настроек удалил из dhcp выданную лицензию перестартовал dhcp и свой сетевой интерфейс, но желаемого результата не достиг, т.е. по моему имени адрес на dns сервере не разрешается.

При внимательном рассмотрении, было обнаружено, что при указании опций регистрации в dns на dhcp сервере мой компьютер регистрируется с каким то неверным именем - перед именем компьютера вставляется не печатный символ, отображаемый квадратиком. Вот тут я и вспомнил про "не передается hostname".

Ok, меня предупреждали про проблемы с hosname, ставлю dhclient и изменяю в /etc/conf.d/net используемый модуль modules=( "dhclient" ). Долго читаю man-ы =). Для настройки dhclienta используется файл /etc/dhcp/dhclient.conf в котором необходимо указать опции регистрации в полученного ip адреса в dns. Вот тут и становится ясна суть проблемы =). Привожу содержание правильного конфигурационного файла dhclient для регистрации Linux компьютера в dns через dhcp по Microsoft:

#/etc/dhcp/dhclient.conf
send fqdn.fqdn "host.domain";
send fqdn.server-update on;
send fqdn.encoded off;

В send fqdn.fqdn указывается польное fqdn имя вашего компьютера. Строка "send fqdn.server-update on;" говорит о необходимости отправки запроса на обновление имени компьютера в dns. Ну и наконец, самая главная опция, которая решает все мои проблемы - fqdn.encoded, устанваливается в off.

Оказывается, что существует два способа передачи fqdn имени компьюетра. Это регламентируется в rfc 4702 The Dynamic Host Configuration Protocol (DHCP) Client. В этом документе описано, что при передаче имени, необходимо неким образом модифицировать передаваемое строку fqdn и считать ранее используемый варинт, отправка ascii строки, устаревшим и не используемым в современных dhcp клиентах.

Клиент dhcpcd отправляет fqdn в кодироанном виде по умолчанию, а опции запрещающей кодирование нет. В клиенте dhclient можно указать как отправлять fqdn на сервер.

В результате, Gento-way выглядит так: при необходимости регистрации имени компьютера с полученным по dhcp адресом в dns Microsoft, необходимо использовать клиента dhcp - dhclient, с указанными опции обязательной регистрации в dns и передачи fqdn без кодирования.

понедельник, 30 марта 2009 г.

Xorg и hal (снова про руссификацию)

Затеялся я обновить драйвер intel для видео на ноутбуке. Меня донимали некоторые артефакты при отрисовке. Последние драйверы, доступные для установки в Gentoo, запросили обновление xorg-server до версии от 1.5 и выше.

Всё как обычно, поставил, перезагрузил и опаньки =). Нет ни мыши ни клавиатуры. Заход по ssh и чтение Xorg.0.log ни чего не дали, за исключением того, что xorg больше не читает настройки про устройства ввода.

Шаманское Gуgленье выдало простой до безобразия ответ. В новой версии xorg для работы с устройствами ввода использует hal и в следствии этого, по умолчанию, игнорирует настройки в xorg.conf касающиеся устройст ввода.

В результате имею свой личнфй ХовТу (howto =) ):
1. В make.conf установлен USE=hal
2. В make.conf установлен INPUT_DEVICES="evdev"
3. Xorg-server и xf86-input-evdev собран с поддержкой hal
4. Установлена политика в хал, которая настраивает действие xkb. Далее, для примера, мой файл политики, сделанный на основе примера из /usr/share/hal (правки отмеченны красным):

# /etc/hal/fdi/policy/10-russian-keymap.fdi
<?xml version="1.0" encoding="UTF-8"?> <!-- -*- SGML -*- -->
<deviceinfo version="0.2">
<device>
<match key="info.capabilities" contains="input.keymap">
<append key="info.callouts.add" type="strlist">hal-setup-keymap</append>
</match>

<match key="info.capabilities" contains="input.keys">
<merge key="input.xkb.rules" type="string">base</merge>

<!-- If we're using Linux, we use evdev by default (falling back to
keyboard otherwise). -->
<merge key="input.xkb.model" type="string">keyboard</merge>
<match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
string="Linux">
<merge key="input.xkb.model" type="string">evdev</merge>
</match>

<merge key="input.xkb.layout" type="string">us,ru(winkeys)</merge>
<merge key="input.xkb.options" type="string">grp:rctrl_toggle</merge>
<merge key="input.xkb.variant" type="string" />
</match>
</device>
</deviceinfo>

5. Для touchpad раньше я не ставил ни каких драйверов, но с hal драйвер evdev вел себя не не предсказуемо, по этому потребовалось установить xf86-input-synaptics и в скопировать соответствующую политику в /etc/hal/fdi/policy/11-x11-synaptics.fdi из примеров /usr/share/hal/fdi.

Не совсем мне ясен глубинный смысл необходимости работы с hal, точнее вынос настроек из xorg.conf во внешний файл. Меня обычно радовал linux простотой конфигурации, но в последнее время все чаще случаются приступы шизофрении у разработчиков (или у меня).

вторник, 17 марта 2009 г.

Отправка почты из командной строки

Не бывает без проблем =). Получается, что я очень мало знаю о Linux. Можно сказать, что ни чего не знаю. Когда я настраивал postfix мне потребовался консольный почтовый клиент. Ундекс посоветовал mutt. С тех пор я им и пользуюсь.

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

# echo "текст письма" | mutt user@domain -s "тема письма"

Для отправки письма нескольким адресатам, их e-mail можно перечислить через запятую.

При необходимости вложить в письмо файл, можно использовать опцию -a:

# echo "текст письма" | mutt user@domain -s "тема письма" -a file.jpg

В некоторых случаях удобно использовать отдельный конфигурационный файл muttrc, например мне необходимо указать обратный адрес, отличный от основного. Для этого есть опция -F:

# echo "текст письма" | mutt user@domain -s "тема письма" -F /path/muttrc

Есть еще одна опция которая мне понравилась -i, но практический смысл ее использования от меня ускольает. Эта опция позволяет вложить вложить текст в тело письма. Фактически в скрипте можно заранее подготовить текст письма или заранее его заготовить и используя -i вставить его в письмо, но это все равно не избавляет от необходимости подачи на stdin чего либо. В результате я вижу три идентичных варианта:

# echo | mutt user@domain -s "тема письма" -i Текст.txt
# cat Текст.txt | mutt user@domain -s "тема письма"
# mutt user@domain -s "тема письма" < Текст.txt

В процессе использования в различных скриптах подобных конструкций по автоматической отпрвке писем наткнулся на интересное поведение восклицательного знака "!" в теме письма. Если отправка из командной строки выполняется из скрипта, то все коректно отрабатывает. При попытке отправить руками из командной строки, при наличии восклицательного знака в теме письма, консоль переходит в режим ожидания ввода stdin. Очень похоже, что это происходит из за не верной трактовки bash самой строки, но в скрипте, использование восклицательного знака работает корректно.

среда, 11 марта 2009 г.

Печать фотографий

Моя ацкая эпопея с добавлением патача для принтера Canon Selphy CP520 увенчалась успехом. Принтер благополучно печатает. Но как всегда есть бочка дегтя =).

Мой принтер Selphy CP520 предназначен именно для печати фотографий. Т.е. он очень хорошо печатает, и делает это на спец бумаге. Печатает без полей. Фактически, полученные отпечатки, мало чем отличаются от полученных в классическом фотолабе.

Я использую Gwenview и DigiKam. Ни одна из них не дает нормального результата при печати. Основной недостаток - оставляются поля, хотя в настройках принтера поля выведены в ноль. Програамы автоматически не поворачивают изображение.

Время печати просто убийственное. Сначала я думал что все виснет. Потом грешил на CUPS. А оказалось все достаточно просто - приложения KDE так печатают фотографии. Перед печатью изображение преобразовывается Ghostscript, что оно делает не понятно, но если исходная фотография имеет большое разрешение, то на ее преобразование перед печатью тратся очень много времени.

В общем, я несколько разочаровался, но в данном случае мне повезло =). Дело в том, что драйвера gutenprint являются продолжением проекта gimp-print! Фактически Gimp умеет печатать напрямую через gutenprint. В этом случае вывод на печать происходит почти сразу и возможно настроить печать в обрез, точно по размеру бумаги.

В общем выкрутился, но неприятный осадок остался =). Загружать в Gimp поштучно фотографии для печати не спортивно. Попробую найти более удобное решение.

вторник, 10 марта 2009 г.

Создание своего ebuild

В Gentoo меня обычно все устраивает. Но иногда случается необходимость поставить какой либо редкий софт, или более новый софт. До сих пор мне удавалось обойтись без создания собственных установочных пакетов, но наступил день "Ч" =).

У меня есть принтер Canon Selphy CP520. На нем я благополучно печатал фотографии с фотоаппарата по проводу и мобильного телефона через Bluetooth. При этом я частенько печатал неудачные снимки, которые на экране телефона или камеры выглядят вполне достойными. В общем, пришло время подключить принтер к компьютеру и печатать только избранные кадры, да еще и подретушированные.

Поиски драйверов для Canon Selphy CP520 завели меня на сайт http://www.openprinting.org, где написано, что данный принтер поддерживается gutenprint версии 5.2.3 с добавленным патчем. Gutenprint нашелся в Gentoo без проблем, а вот необходимый патч, естественно, в поставку не входит =). Не беда. Засучиваем рукава и приступаем.

Постановка задачи.

Необходимо модифицировать существующий ebuild, нужной версии, чтобы при установке, до компиляции, на исходный код накладывался необходимый патч.

Дерево portage.

Так как при модификации существующего ebuild, при обновлении дерева portage, все мои изменения накроются, я добавил так называемый оверлейный portage. Т.е. создал второе, альтернативное дерево, которое существует паралельно официальному дереву.

В файле /etc/make.conf добавил строчку:

PORTDIR_OVERLAY="/usr/local/portage $PORTDIR_OVERLAY"

Создал соответствующий каталог /usr/local/portage, в котором создал каталог для категории ebuild-а net-print. После этого, как образец, я скопировал папку gutenprint из официального дерева в мое свеже созданое дерево portage и все дальнейшие действия делал не затрагивая основное дерево.

Модификация ebuild.

В новом каталоге /usr/local/portage/net-print/gutenprint я убрал не нужные ebuild-ы, а ebuild необходимой версии переименовал с добалвением в имя файла r1. Таким образом я сделал заготовку для своей версии пакета gutenprint.

Внутри каталога /usr/local/portage/net-print/gutenprint есть папка files. В эту папку я положил необходимый мне для пакета патч. Далее отредактивровал сам файл ebuild-а, добавив строку наложения патчей, по аналогии с уже имеющимися:

epatch "${FILESDIR}"/${P}-r1-cp520.patch

Т.к. файлы были модифицированы, они перестали совпадать с информацией из файла Manifest. Для обновления этого файла, необходимо выполнить команду:

#ebuild путь/к/файлу-ebuild digest

Результат.

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

Установка прошла успешно, а вот печатает ли принтер, я пока не знаю, т.к. проверить это не успел. Основная цель - создание своего ebuild-а, выполнена =).

пятница, 30 января 2009 г.

HylaFAX - Тупость и лень человеческая безграничны

Несколько лет назад я настроил HylaFax на прием факсов и отправку принятых файлов почтой на определенный e-mail. Привыкнув, что при обновлении, в случае изменения конфигурационных файлов Gentoo дает их список и предлагает оценить внесенные изменения я проморгал обновление HylaFax. Его конфигурационные файлы находятся не в /etc/*, а то чего там нет я обычно не правлю. Вот и обломился. Почти все, что я наделал было похоронено.

Тупица! HylaFax устанавливается и, в основном, настраивается в каталоге /var/spool/fax/.

Что утратил:
  • Отправку входящих факсов на определенный e-mail
  • Перевод неподходящего формата TIFF файлов, в удобоваримый для клиентских компьютеров формат.
Отправка входящих факсов на определенный e-mail.

Создаем файл nano /var/spool/fax/etc/FaxDispatch следующего содержания:

FILETYPE=tif;
SENDTO=fax@domain.ru;

Эти настройки принимаются, при выполнении скрипта /var/spool/fax/bin/faxrcvd и используются для указания формата отправляемого файла и адреса, на который необходимо переслать факс.

Скрипт /var/spool/fax/bin/faxrcvd выполняется для каждого принятого файла. Именно из этого скрипта осуществляется отправка факсов почтой.

В начале файла идет установка переменных по умолчанию. Вставив необходимые переменных в файл /var/spool/fax/etc/FaxDispatch можно менять поведение скрипта не изменяя его самого.

Перевод неподходящего формата TIFF файлов, в удобоваримый для клиентских компьютеров формат.

Так как меня не устраивает тот TIFF который принимает HylaFax, я через /var/spool/fax/etc/FaxDispatch заменил формат отпраляемого файла на pdf.

FILETYPE=pdf;
SENDTO=fax@domain.ru;


Переменная FILETYPE может принимать 3 значения - ps, tif, pdf. Скрипт /var/spool/fax/bin/faxrcvd, в зависимости от переменной, конвертирует входящий факс в нужный формат.

Шаблоны.

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

Сначала, как рекомендует readme, я скопировал сущестующий шабло en в новуый каталог:

cp /var/spool/fax/etc/templates/en /var/spool/fax/etc/temlates/my

Затем через /var/spool/fax/etc/FaxDispatch указал необходимый шаблон:

FILETYPE=pdf;
SENDTO=fax@domain.ru;
TEMPLATE=my;


Ну и надругался над шаблоном, как мне захотелось =). В итоге, входящие факсы отправляются в том виде, в котором мне нужно и куда мне нужно.

Архив блога