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

lirc и ошибка "FATAL: module lirc_serial not found"

Самый простой адаптер с сайта LIRC (дистанционное управление компьютером с пульта)
Скачал, скомпилировал, установил.

setserial /dev/ttyS0 uart none
modprobe lirc_serial

В результате - FATAL: module lirc_serial not found

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

sudo depmod

после этого модуль находиться и подгружается.

sudo xmode2
или
sudo mode2
посмотрим на сигнал от ИК приемника в графике или в консоли соответственно.

если своего пульта на сайте lirc не нашли, сделаем конфиг сами

irrecord lircd.conf -d /dev/lirc0
потом этот конфиг lircd.conf надо подбросить в /etc

Компиляция gcc для Atmel AVR. Ошибка с libgcc.mvars

Начал компилировать новый GCC (4.3.2) под AVR (Atmel) для разработки программ микроконтроллеров. И случились грабли.

С binutils проблем не возникло, взяли с ftp://ftp.gnu.org/gnu/binutils/
./configure --target=avr --prefix=/usr/local/atmel
make
make install

Затем взяли GCC с ftp://ftp.gnu.org/gnu/gcc
добавили путь
export PATH=/usr/local/atmel/bin:$PATH
./configure --target=avr --prefix=/usr/local/atmel --enable-languages=c
make

и получили:

Makefile:144: ../.././gcc/libgcc.mvars: No such file or directory
make[2]: *** No rule to make target `../.././gcc/libgcc.mvars'. Stop.

А все потому, что копилировал я в том же каталоге, где лежат исходники.
Разработчики в Installing GCC: Configuration рекомендуют компилировать в отдельном каталоге не принадлежащем дереву каталогов исходников.
Т.е. создаем каталог /tmp/avr, а в нем src. В /tmp/avr/src распаковываем gcc. Создаем /tmp/avr/obj
и переходим в него. И уже из этого каталога (/tmp/avr/obj) даем команду на конфигурирование:

/tmp/avr/src/configure --target=avr --prefix=/usr/local/atmel --enable-languages=c \
--disable-shared --disable-libssp
make
make install

Обратите внимание на полный путь (/tmp/avr/src/configure) - это важно.
И еще --disable-libssp, иначе выскочит что-то про ошибки компиляции libssp, а именно ssp.c

И еще установим avr-libc.
./configure --build=`./config.guess` --host=avr --prefix=/usr/local/atmel
make
make install

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

Модули для perl

Вот теперь этот блог оправдывает свое название - "Записная книжка".

Это моя личная информация, необходимая только мне.
При переносе всех скриптов на другую машину мне нужны:

CGI::Session
Net::Jabber (пересборка make install)
Net:Telnet
Net::IMAP::Simple (пересборка make install)
Email::Simple
XBase
Spreadsheet::WriteExcel

воскресенье, 16 ноября 2008 г.

Perl и Unicode Windows.

Понадобилось мне в perl открыть и почитать файлик из винды в юникоде. И еще в файлике отсутствовал BOM (FF FE в первых байтах). Это был фрагмент из большого файла.
Локаль у меня utf8.

open (TXT, '<:encoding(UTF16)','file.txt') or die; c ходу не открыл, так как не нашел нужных ему первых байт и ругнулся на неверный BOM. решение: без явного указания перл принимает юникод "big-endian", а надо "little endian" и ругается на неверный BOM. Укажем явно кодировку UTF16-LE open (TXT, '<:encoding(UTF16-LE)','file.txt') or die; теперь порядок. Запись в файл аналогична открытию. open (TXT, '>:encoding(UTF16-LE)','file.txt') or die;

при этом BOM запишется сам в начало файла, если понадобиться записать его принудительно, то можно сделать так:

print TXT "\x{FEFF}"; # запись BOM (Byte Order Mark) для юникодного файла

суббота, 15 ноября 2008 г.

Монитор LG L192W 1440x900 - мода для X-ов

Вот две моды для иксов, которые вполне прилично работают у меня.

Modeline "1440x900_60.00" 106.47 1440 1520 1672 1904 900 901 904 932 -HSync +Vsync

Modeline "1440x900_75.00" 136.49 1440 1536 1688 1936 900 901 904 940 -HSync +Vsync

Ну и в секции "Screen" указать:
Modes "1440x900_75.00" "1024x768" "800x600" "640x480"
Virtual 1440 900

Модем D-Link DFM-562IS

Попался мне модем сгоревший, не видел линии (всего лишь диод D2 прошило). Перепаял. Заработал. А драйвера под Linux?

Чип там Conexant. Драйвер скачал с www.linuxant.com файл hsfmodem-7.68.00.14full.tar.gz (на момент написания самый свежий).
У них ограничение на бесплатную версию 14.4 kbps скорость. Маловато будет! Есть кейген в сети для обхода жадных иноземных капиталистов под названием hcfkeygen-1.02 (google про него знает и вам поможет)

Распаковал, затем make install
после выполнил /usr/sbin/hsfconfig и ответил на вопросы, скомпилили модуль для ядра (на "автомате"). Попутно запоминаем номер лицензии (три блока цифр-букв по 4 символа) и вводим email (любой, какой захочется). Теперь запускаем параллельно hcfkeygen-1.02 и всю эту инфу (лицензию и email) подкидываем ему, а он нам ключик, который мы вводим для hsfconfig. Все гораздо проще и быстрее, дольше описывал процесс. Дежавю, опять как в винде - кейгены, серийные номера, лицензии и прочая муть.
В /dev/modem появился линк на ttySHSF0 - это и есть наш модем. Можно потестировать minicom-ом. Работает.
Вот и все.

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

Репозитарий для Slackware

Вот еще один
Вам надоело собирать пакеты из исходников для Slackware? Тогда посетите репозитарий от Eric Hameleers. Очень много программ. Не самые всежие версии.
Еще лучше из репозитариев slacky.eu
Удобно из него пробовать различные варианты однотипных программ, а когда определишься с нужно, собрать ее самому.
Но лично мне такой подход не интересен. Гораздо интереснее "помучиться" и собрать все "свое". Иногда в процессе "мучений" узнаешь много нового.

Настройка нормальных шрифтов в иксах

Настройка шрифтов.

1. Нахождение шрифтов TrueType.

Да, сначала надо установить нормальные шрифты. Можно их копировать из разделов Windows, а можно и не вспоминать про M$.
Итак, находим и качаем файл со шрифтами webfonts-1.0-noarch-3dl.tgz и программу их распаковки cabextract-1.1-i686-1dl.tgz

installpkg cabextract-1.1-i686-1dl.tgz

а теперь установка самих шрифтов

installpkg webfonts-1.0-noarch-3dl.tgz

при этом шрифты лягут куда надо - "/usr/X11R6/lib/X11/fonts/TTF" (верно для Slackware, для остальных надо проверять).

2. Настройка DPI.

Window использует по умолчанию 96 dpi. Linux - 75 или 81, поэтому шрифты в Linux мелковаты. установим 96 dpi.
Т.к. мы сначала загружаем консоль (runlevel 3) и затем стартуем startx для запуска Х-ов, мы отредактируем скрипт /usr/X11/bin/startx. Найдем строку defaultserverargs="" и добавим между кавычек -dpi 96, в результате получим defaultserverargs="-dpi 96".
В случае запуска KDE сразу, в нем есть настройка dpi в Центр управления -> Внешний вид и темы -> Шрифты -> Использовать другой dpi. Это справедливо только для SlackWare12, в 10 нет, там старая версия KDE.

3. Перекомпилируем Freetype2

Перекомпилирование Freetype2 необходимо для задействования интерпретатора байт-кодов.
Берем исходник из слаквари, правил SlackBuild, а именно раскоментируем использование байт-код интерпретатора и пересоберем
Либо если собирать из оф.исходника, то надо открыть "include/freetype/config/ftoption.h", найти строку /* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ и раскоментировать ее.

А еще очень желательно добавить симлинк (как в оригинальном пакете): ln -s /usr/include/freetype2/freetype /usr/include/freetype Иначе некоторые программки не хотят правильно собираться, к примеру Wine

4. В домашнем каталоге создадим файл .fonts.conf с таким содержанием
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font" >
<edit mode="assign" name="rgba" >
<const>none</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hinting" >
<bool>true</bool>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="hintstyle" >
<const>hintmedium</const>
</edit>
</match>
<match target="font" >
<edit mode="assign" name="antialias" >
<bool>true</bool>
</edit>
</match>
<match target="font" >
<test compare="more_eq" name="size" qual="any" >
<double>0</double>
</test>
<test compare="less_eq" name="size" qual="any" >
<double>15</double>
</test>
<edit mode="assign" name="antialias" >
<bool>false</bool>
</edit>
</match>
<match target="font" >
<test compare="more_eq" name="pixelsize" qual="any" >
<double>0</double>
</test>
<test compare="less_eq" name="pixelsize" qual="any" >
<double>20</double>
</test>
<edit mode="assign" name="antialias" >
<bool>false</bool>
</edit>
</match>
</fontconfig>



5. Настройка дополнительных приложений GTK2 (Gimp Tool Kit) в KDE.
Создадаем скрытый файл в своей домашней директории .gtkrc-2.0 и добавляем в него следующую строку:
gtk-font-name = "Verdana 9"
или другой шрифт, который Вы выбрали для KDE.

6. Окончательная настройка

Теперь идем Центр управления -> Внешний вид и темы -> Шрифты и оставляем сглаживание шрифтов, но исключаем диапазон от 0.0pt до 15.0pt. Заменяем все шрифты на Arial или Verdana размером 9 или 10 pt и перезапускаем X-Window.

Теперь все должно заработать как надо. А шрифты должны радовать глаз.

VirtualBox и настройка сети - "мост"

Что бы виртуальная машина работала через "мост" и выглядела в сети как настоящая, надо этот самый мост установить и настроить.
При старте системы VirtualBox создает интерфейс /dev/vbox0. Надо уточнить права на него. Затем из vbox0 и eth0 создаем мост br0 и настраиваем его (ip, mask и т.д.)

В rc.local запускаем так:

# Start vboxnet
# If you do not wish this to be executed here then comment it out,
# and the installer will skip it next time.
if [ -x /etc/rc.d/rc.vboxnet ]; then
modprobe tun
mkdir /dev/net
touch /dev/net/tun
chmod 777 /dev/net
brctl addbr br0
ifconfig eth0 0.0.0.0 down
brctl addif br0 eth0
# /etc/rc.d/rc.vboxnet start
VBoxTunctl -t vbox0 -u vadim
ifconfig vbox0 0.0.0.0 down
brctl addif br0 vbox0
ifconfig br0 192.168.7.69 netmask 255.255.255.0 up
ifconfig eth0 up
ifconfig vbox0 up
chmod 0666 /dev/net/tun
fi

/sbin/route add default gw 192.168.7.70

воскресенье, 9 ноября 2008 г.

mgetty и раздача интернета через модем

Скачиваем последнюю версию mgetty с домашнего сайта (http://alpha.greenie.net/mgetty/ или ftp://mgetty.greenie.net/pub/mgetty/source/1.1/), распаковываем и собираем с параметром -DAUTO_PPP. Процесс сборки хорошо описан в файле README.1st
Во-первых, надо скопировать файл 'policy.h-dist' в 'policy.h'.
Во-вторых, отредактировать файл 'Makefile', добавив в него заветный параметр. Флаг задается компилятору в ~~105-110й строке.
Открывает файл в редакторе, спускаемся на нужную строку и добавляем -DAUT_PPP, получается:
'CFLAGS=-O2 -Wall -pipe -DAUTO_PPP'
Так же для удобства можно отредактировать путь к настройкам на /etc/mgetty, а не /usr/local/etc/mgetty
Вот только для сборки пакета авторы не озаботились, DESTDIR не принимается. Можно перед установкой отредактировать префикс и уже после этого make install, а затем собирать пакет.

суббота, 8 ноября 2008 г.

Проблемы при копировании на сетевые диски, смонтированные при помощи mount.cifs

Итак, есть сервер Server и шара share. Мы ее хотим смонтировать к себе в /mnt/share

sudo mount.cifs //Server/share /mnt/share -o user=юзер_шары

и при попытке записи некоторых файлов и каталогов получаем:

Невозможно сменить режим доступа целевого файла: Operation not permitted (1)
или вроде этого
Невозможно сменить режим доступа целевого файла: Операция не позволяется (1)

решение - добавить в опции команды noperm

sudo mount.cifs //Server/share /mnt/share -o user=юзер_шары,noperm

пятница, 7 ноября 2008 г.

raid и загрузка драйверов

Очередные хорошо известные грабли при поднятии софт рэйд (soft raid) массива. Старые грабли, но меня они каждый раз "пугают".

Драйвера не вкомпиленные в ядро перестают грузиться с рэйд массива после его поднятия (разделы еще не смонтированы, когда система собирается подгрузить драйвера).
У меня это мышь psmouse и сетевые карты.

Просто дописываем их в modprobe.d

четверг, 6 ноября 2008 г.

lilo: Fatal: Unusual RAID bios device code: 0xFF

Очередные грабли. lilo
(В сети про эту ошибку почти ничего не нашел - google знает 5 ссылок и все мимо)

Когда в райде только один диск, а второй пока значиться неисправным, с такими настройками lilo (сокращено):

boot = /dev/md3 (у вас могут быть другие разделы)
raid-extra-boot = mbr
root = /dev/md3 (у вас могут быть другие разделы)

получил вот такой пендаль:

Fatal: Unusual RAID bios device code: 0xFF

Загрузчик естественно не установился.
Пришлось сделать так:

boot = /dev/sda (или что там у вас)
root = /dev/md3

Теперь лило установилось, загрузилось с райд. И только дополнив райд до полного, делаем

boot = /dev/md3
raid-extra-boot = mbr
root = /dev/md3

- все ок!
Обе MBR обновлены.