воскресенье, 28 августа 2011 г.

Debian и bluetooth 2

Разрабы пакета Bluez опять поменяли формат конфигов. Так что инет полон устаревшей инфы на тему настройки bluetooth адаптеров. Так теперь hcid.conf устарел, и более не нужен. И pin теперь задается посредством bluetooth-agent, а не /etc/bluetooth/pin.

Проверяем, что адаптер вообще работает.
/usr/sbin/hciconfig

hci0: Type: BR/EDR Bus: USB
BD Address: 00:13:65:72:50:E9 ACL MTU: 1021:8 SCO MTU: 48:10
UP RUNNING PSCAN <<-----------
RX bytes:732 acl:0 sco:0 events:28 errors:0
TX bytes:113 acl:0 sco:0 commands:25 errors:0

нас интересует строчка вида "UP RUNNING PSCAN", если адаптер не поднялся будет "DOWN"

Далее сканируем на предмет телефона:
hcitool scan

Scanning ...
5C:5C:A9:6D:8B:3D U8500

Нашли, МАС адрес запомнили.

Иногда адаптеры запускаются в режиме "невидимости" - снова включить "видимость" можно
dbus-send --system --dest=org.bluez /org/bluez/hci0 org.bluez.Adapter.SetMode string:discoverable
или так
hciconfig hci0 piscan
после соединения и пин-кода лучше опять отключить.
hciconfig hci0 noscan

Запрос на соединение и пин код

bluetooth-agent "пин" "МАС"

т.е. что-то вроде

bluetooth-agent 1234 5C:5C:A9:6D:8B:3D

На телефоне тоже выскочит предложение ввести код. Вводим (иногда время ввода ограничено) и устройства с этого момента "спарены"

http://wiki.debian.org/BluetoothUser



Осуществляем проверку надежности передачи пакетов между компьютером и телефоном:

l2ping 00:0F:DE:82:22:87

Просмотр сервисов запущенных на телефоне (зачастую требуется доп. программки вроде Astro и модуля для него bluetooth - который реализует ObexFTP).
sdptool browse

Итак Astro с запущенным модулем bluetooth (с включенной опцией OBEX FTP Server) создал доп. канал:

Service Name: ASTRO_Bluetooth_FTP
Service RecHandle: 0x10007
Service Class ID List:
UUID 128: 00001106-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 16

Монтируем этот канал
obexfs -b "МАС" -B "канал" /media/android
т.е. что-то вроде этого
obexfs -b 5C:5C:A9:7D:8B:3D -B 16 /media/android

и можно теперь использовать /media/android как обычный раздел, копировать, удалять и т.д.

вторник, 23 августа 2011 г.

Debian, Synaptics Touchpad

При старте иксов touchpad гонял курсор как обычная мышка, но отказывался "кликать" коротком нажатии на touchpad.
А всего-то оказалось надо было запустить мышиный драйвер с параметром proto=imps

Для проверки можно из консоли выполнить команды:
modprobe -r psmouse
modprobe psmouse proto=imps

Если все заработало, то можно создать файл touchpad.conf в /etc/modprobe.d/ и поместить в него:
options psmouse proto=imps

Есть правда и другой путь - установить пакет gpointing-device-settings или gsynaptics
Тогда доступны станут прокрутки при касании двумя пальцами (мультитач) и тап в качестве клика.
Для настройки надо запустить gpointing-device-settings и выбирать что приглянется

Про ноут есть немного описания - http://www.fi.muni.cz/~kas/c1020/#touchpad

Debian и список репозиториев

Добавляем в /etc/apt/sources.list

deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free

и апдейтим
apt-get update

понедельник, 22 августа 2011 г.

Debian и MongoDB

добавляем ключ
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

добавляем репозиторий
deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

sudo apt-get update
sudo apt-get install mongodb-10gen

воскресенье, 21 августа 2011 г.

Оптический привод и ошибка Sense Key : Medium Error [current] and Unhandled sense code

Если при монтировании оптических дисков полезли следующие ошибки

Unhandled sense code
Sense Key : Medium Error [current]

пофиксить можно

sudo hdparm -E 0 /dev/sr[01]

вторник, 16 августа 2011 г.

Git - установка и настройка

ставим git и gitosis

Настройка git-сервера

Выполняем инициализацию gitosis-admin репозитория (на сервере):

$ sudo -H -u gitosis gitosis-init < /путь/к/файлу/id_rsa.pub
где id_rsa.pub - ваш публичный кюч.

В ответ будет выдано что-то вроде:
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/

разрешаем выполнение post-update хука:
$ sudo chmod +x /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update

Клонируем конфиги gitosis на локальный компьютер

$ git clone gitosis@ваш_сервер:gitosis-admin.git

репозиторий в каталоге gitosis-admin, в котором в дирректории keydir лежат публичные ключи людей, которые имеют доступ к данному репозиторию.
В качестве имени файла используется его имя из открытого ключа. Что бы добавить человека нужно, просто, добавить его ключ.
файл gitosis.conf - настройка прав доступа для репозиториев
Добавляем ключи (юзеров) и редактируем конфиг на предмет прав и доступа.
затем коммитим изменения и закидываем их на сервер
$ git commit -am "grant new user ...."
$ git push origin master

Создаем и настраиваем новый репозиторий.

$ git clone gitosis@ваш_сервер:gitosis-admin.git

Редактируем gitosis.conf с добавленным репозиторием test-repo, в конфиг добавляем:

[group test-group]
writable = test-repo
members = логин1 логин2 ...

[repo test-repo]
description = Тестовый репозиторий
owner = имя

после правок делаем коммит:
$ git commit -am "Добавлен репозиторий test-repo"
и записываем изменения:
$ git push origin master

репозиторий готов и можно клонировать:

$ git clone gitosis@git.example.org:test-repo.git
да не забыть добавить хотя бы один файлик, иначе будет ругаться на ошибку.

В некоторых версиях git новые репозитории не создаются автоматически и при попытке клонировать выдается что-то вроде

fatal: 'repositories/имя-репо.git': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly

В таком случае репозиторий надо создать принудительно. есть два варианта:
1. создавать прямо на удаленном сервере

Создаем нужный каталог и в нем инициируем git
mkdir /srv/gitosis/repositories/test-repo.git
cd /srv/gitosis/repositories/test-repo.git
git init
chown gitosis.gitosis /srv/gitosis/repositories/test-repo.git -R

2. сначала создать локально, а потом залить на сервер.
mkdir test-repo
cd test-repo
git init
git remote add origin gitosis@YOUR_SERVER_HOSTNAME:test-repo.git
добавим какой-нибудь файлик и закомметим его
git push origin master:refs/heads/master

пятница, 12 августа 2011 г.

Android SDK и Eclipse - настройка

** Устанавливаем Java - sun-java6-jre
** Устанавливаем JDK - sun-java6-jdk

** Скачать свежий SDK http://developer.android.com/sdk/index.html
Распаковать его и запусить ./tools/android

** Доустановить утилиты --
Available packages -> Android Repository -> Android SDK Platform-tools
(в нем содержится нужная утилитка adb)
На "64битной" системе утилита adb откзалась запускаться и выдала что-то вроде:
./adb: error while loading shared libraries: libncurses.so.5
для ее запуска понадобились два пакета "32битных" : lib32ncurses5 и lib32stdc++6



** Доустановить нужные SDK под конкретную версию ОС --
Available packages -> Android Repository -> SDK Platform Android x.x (x.x версия)

** Теперь установить ADT плагин в Eclipse. (если нужно донастроить прокси)
Help > Install New Software > кнопка Add > ввести "ADT Plugin" как Name и Location = "https://dl-ssl.google.com/android/eclipse/" > кнопка OK
выбираем "Developer Tools" и жмем Next и видим список компонентов, которые будут скачены - опять Next. Читаем лиценизию и соглашаемся с ней (чекбокс accept) и жмем Finish. В процессе будет что-то на счет "не доверенных" компонентов, доверяем всем.
Рестартим Eclipse.

** Указываем Eclipse путь к установленному SDK
Window->Preferences-> Android ->Browse - указываем путь к SDK.

Android 2.2 и bluetooth клавиатура.

Есть платная программа Blueinput от teksoft - если не жалко 10 евро она возможно поможет.
Если жалко:
статья на английском http://i-miss-erin.blogspot.com/2009/09/connect-bluetooth-keyboard-in-android.html

** Девайсы необходимо "спарить"
Settings->Wireless&networks->Bluetooth settigs
Включаем Bluetooth и клавиатуру (иногда на ней надо нажать еще хитрую кнопочку с обратной стороны, что бы она начала вещать на все окрестности о себе - как правило всего несколько минуть, затем если не успели - повторить нажатие)
На смарте жмем Scan for device - клавиатура должна появиться в списке Bluetooth devices
Жмем на строчку с названием клавиатуры (Bluetooth Keyboard) и вводим код - любой, к примеру 1234
ОК. Теперь этот же код набираем на клавиатуре и на жмем enter.
Состояние строки под Bluetooth Keyboard измениться на Paired but not connected

Версия для смарта, без применения компьютера
* нужен root на девайс - z4root
* нужен установленный - busybox
* нужен установленный - GScript

Качаем файлы в папку на флэшке - gscript (/mnt/sdcard/gscript)
hciconfig
hcitool
hidd
cp_blueutils.sh

В моем Huaway U8500 уже был в системе hcitool и при замене предложенным, сканирование устройств перестало корректно работать. Поэтому на всякий случай выкладываю и его.

hcitool.orgin_u8500

Если качается стандартным гугл.браузером, то все падает на флэшку в папку download, но программам к имени добавляется суффикс .bin, т.е. было hidd, скачалось hidd.bin. Т.е. надо переименовыват (отрывать у имени .bin) и копировать в нужный каталог.

Opera такими проблемами не страдает, она позволяет сразу выбрать - куда скачивать (выбираем папку gscript) и сохраняет с нормальными именами.

Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем cp_blueutils.sh
Проверяем, есть ли галка на "Needs SU?" - она нам нужна для рута и жмем "Save". В списке скриптов появиться cp_blueutils. Запускаем его на выполнение. На экране должны быть строки о выполнении, типа:

"copy 'hidd' to /system/xbin"

В версии Android ниже 2.2 флэшка (sdcard) монтировалась не в /mnt/sdcard, а в /sdcard
В этому случае надо в скрипте cp_blueutils.sh поправить строку вида:

cd /mnt/sdcard/gscript

отредактировать до вида:

cd /sdcard/gscript

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

"'hidd' already exists in /system/xbin"

Значит все скопировали.
Скачаем еще немного скрптов в папку gscript:

scan.sh
connect.sh
make_bbb.sh (нужен только если хотите в дальнейшем запускать connect из эмулятора терминала)

Затем запускаем GScript. В меню выбираем "Add script". Жмем "Load file" и выбираем scan.sh, затем сохраняем и запускаем его из списка. Если ничего не нашлось, попробуйте активирвоать на клавиатуре магическую кнопочку.
Должно получиться что-то вроде:

Scanning ...
00:22:43:C6:5B:B9 Bluetooth Keyboard

Запоминаем эти хх:хх:хх:хх:хх:хх цифры-буквы, это MAC адрес клавиатуры. Теперь надо в GScript добавить из файла скрипт connect.sh и в нем ИЗМЕНИТЬ строку вида
mac="00:22:43:C6:5B:B9"
на ваши цифры-буквы. Затем сохранить и выполнить.
После этого клавиатура должна заработать.

В дальнейшем запускать только скрипт connect. Остальные в принципе можно удалить, впрочем как и скачанные программы в папке gscript. Если запусить скрипт make_bbb (пердварительно отредактировав в нем MAC адрес, как и в случае со скриптом connect), то в /system/xbin/ появиться файл bbb. Т.е. теперь можно будет из эмулятора терминала набирать su и затем bbb. И клавиатура должна подключиться.



Вторая версия вышеизложенного - работа с компьютера:
--Смарт должен быть рутован (инструкций огромное множество)--
Качаем недостающие программы:
http://androidobex.googlecode.com/files/hciconfig
http://androidobex.googlecode.com/files/hcitool
http://androidobex.googlecode.com/files/hidd

Итак, вся работа будет производиться через утилиту adb которая входит в комплект SDK Android
** Необходимо подключить девайс через usb к компьютеру.
** Так же после этого включить режим отладки: ставим галку в Settings->Aplication->Development->Usb debugging (как это на русском не помню)

** Запускаем adb shell. Сразу оговорюсь, как под виндой это работает не знаю, нет ее у меня, но говорят, что как-то работает.
В ответ на запуск adb shell получаем приглашение $
Вводим "su" и enter для получения root. И вот тут внимательно смотрим на экран, так как при первом запросе su из шела появиться запрос на предоставление рута (10сек) и надо подтвердить.
Если все нормально, $ поменяется на # - root.

** Теперь надо перемонтировать раздел /system для чтения-записи (изначально он монтируется только на чтение)
Частенько разделы /system имеют отличие - system - это всего лишь точка монтирования, а сам раздел выглядит похоже на /dev/block/mtdblockх, где х - номер раздела. Вот этот номер нам и предстоит выяснить. Если бездумно копировать команды инструкций для других моделей, можно смонтировать ошибочно раздел. Ну в общем. я Вас предупредил.
Смотрим, что и куда смонитировано (символ # набирать не надо, он уже отображается на экране):

# mount

в строчках ищем что-то вроде
/dev/block/mtdblock4 /system ... - вот 4 - это и есть наш раздел. У Вас может быть другая цифра!

Перемонтируем раздел:
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock4 /system
# chmod 777 /system/xbin

Выходим из adb shell (или, предположительно, закрываем окно для винды)
# exit
$ exit

** Теперь надо закинуть три скачанных файлика в смарт.

adb push hidd /system/xbin
adb push hcitool /system/xbin
adb push hciconfig /system/xbin

Сделать исполняемыми:
# chmod 755 /system/xbin/hidd
# chmod 755 /system/xbin/hcitool
# chmod 755 /system/xbin/hciconfig



** Теперь пошаманим с программками. Запускаем adb shell

* Получаем root
$ su
#

* Скнируем на предмет наличия клавиатуры и ее MAC адреса (опять же, не забываем, что клавиатура доступна к обнаружению ограниченное время, если не найдется, находим на ней магическую кнопочку и нажимаем). На выходе получим что-то вроде
# hcitool scan
Scanning ...
00:22:43:C6:5B:B9 Bluetooth keyboard
~~~~~~~~~~~~~~~~~
Цифры-буквы и есть MAC адрес

* Пробуем подключить клавиатуру:
# hidd --connect 00:22:43:C6:5B:B9

Должна заработать.
Для удобства можно сделать скрипт вида (вписать свой MAC адрес):

#!/system/bin/sh
hidd --connect 00:22:43:C6:5B:B9

и сохранить в /system/xbin/bbbb
# chmod 755 /system/xbin/bbbb

Теперь открыв на смарте терминал (к примеру Better Terminal Emulator Pro) и в нем
$ su
# bbbb

Должна подключиться клавиатура

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

вторник, 9 августа 2011 г.

Debian, Bind и chroot

Подготавливаем окружение chroot
# mkdir -p /var/chroot/bind9/{etc,dev,var/cache/bind,var/run/bind/run,var/log,var/cache/bind/master,var/cache/bind/slave}
# chown -R bind:bind /var/chroot/bind9/var/*
# mknod /var/chroot/bind9/dev/null c 1 3
# mknod /var/chroot/bind9/dev/random c 1 8
# mv /etc/bind /var/chroot/bind9/etc
# ln -s /var/chroot/bind9/etc/bind /etc/bind
# ln -s /var/chroot/bind9/var/log /var/log/named
# ln -s /var/chroot/bind9/var/cache/bind/master /var/chroot/bind9/etc/bind/master
# ln -s /var/chroot/bind9/var/cache/bind/slave /var/chroot/bind9/etc/bind/slave

Создаём файл /etc/rsyslog.d/bind-chroot.conf следующего содержания
# cat /etc/rsyslog.d/bind-chroot.conf
$AddUnixListenSocket /var/chroot/bind9/dev/log

Редактируем /etc/default/bind9
# cat /etc/default/bind9
# run resolvconf?
RESOLVCONF=yes

# startup options for the server
OPTIONS="-u bind -t /var/chroot/bind9"

Для того, чтобы в логах сервера было указано правильное время с учётом часового пояса
# cp /etc/localtime /var/chroot/bind9/etc/

Что бы коректно отрабатывали скрипты запуска-остановки, надо в /etc/bind/named.conf
include "/etc/bind/rndc.key";

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};

Проверить можно командой
#rndc status
Без этой доработки получали бы при остановке сервиса что-то вроде:
Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: connection refused


Теперь рестартуем rsyslog и стартуем bind9
# /etc/init.d/rsyslog restart
# /etc/init.d/bind9 start

Mysql и переезд на новый сервер

Понадобилось скопировать пользователей и их права на новый сервер
не плохо подошла для этого утилитка mk-show-grants из пакета Maatkit
http://www.maatkit.org

mk-show-grants --separate --revoke --ask-pass > users.sql

единственный неприятный момент, требуется пароль, а когда используется > users.sql вывод приглашения перенаправляется, т.е. надо вводит "вслепую" и enter
А потом из users.sql надо удалить первую строку - Enter password:

и на целевом сервере втянуть users.sql в базу

Debian и bluetooth

apt-get install bluetooth
/etc/init.d/bluetooth start


GUI
apt-get install blueman

запускается через
blueman-manager

воскресенье, 7 августа 2011 г.

Debian и терминал

Хороший терминал rxvt-unicode
aptitude install rxvt-unicode

так же ставим шрифт
aptitude install xfonts-terminus

В .Xresources настраиваем ресурсы терминала:
URxvt.font: -*-terminus-medium-r-*-*-16-*-*-*-*-*-*-u
URxvt.scrollBar: false
URxvt.saveLines: 65535
URxvt.InternalBorder: 0
URxvt.pointerBlank: true
URxvt.loginShell: true
URxvt.background: black
URxvt.foreground: white

Debian и постустановка.

Поставил в экспертном режиме.

смонтировал dvd

установил иксы с легким десктопом -- aptitude install lxde

отключить загрузку иксов при старте
-- редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)
-- update-rc.d gdm disable 3

Добавляем оф. репозитории в /etc/apt/sources.list
deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
и апдейтим их -- aptitude update

что бы монтировать самбовые шары ставим пакет smbfs

ставим icewm и tango-icon-theme для иконок в pcmanfm (файл-менеджер)
создаем файл .xsession и в него пишем:
icewmbg &
icewm

далее, создаем файл ~/.gtkrc-2.0 и в него пишем:
gtk-icon-theme-name = "Tango"

теперь иконки должны заработать.

xxkb
и настройка

пятница, 5 августа 2011 г.

Debian и сглаживание шрифтов

Установим
aptitude install msttcorefonts

В домашнем каталоге создадим файл .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>

вторник, 2 августа 2011 г.

Debian и отключение иксов

Итак, хотим загружаться в консольном режиме без иксов и графики. Уж не знаю зачем так сделали, но в debian при runlevel 2-5 иксы таки грузятся. Что надо сделать, что бы исправить ситуацию:

1. Редактируем /etc/inittab в вид:
id:3:initdefault:
(т.е. запуск в runlevel 3)

2. Удаляем симлинк /etc/rc3.d/S20gdm или /etc/rc3.d/S20kdm - в зависимости, что в виде DE установлено. цифры в S20gdm могут быть другие.
Хотя правильнее будет
update-rc.d gdm3 disabe 3