Ipod Nano 2 gen с RockBox через загрузчик iLoader

Вступление





Приветствую Тебя читатель.
Сегодня мы займёмся модернизацией плеера компании Apple - Ipod Nano 2 gen

Совсем недавно, в октябре 2009 года, на сайте альтернативной прошивки rockbox появилась информация о успешном её портировании на плеер Ipod Nano 2-го покаления

Rockbox

Вот выдержка из Википедии:
Rockbox — это свободное программное обеспечение для замены встроенных прошивок цифровых аудио плееров. Проект Rockbox начался в конце 2001 года и был впервые реализован на плеере Archos Studio.
Rockbox предлагает альтернативу встроенному программному обеспечению плеера, во многих случаях без удаления первоначальной прошивки. Внутреннее устройство Rockbox позволяет наращивать функциональность за счёт использования модулей расширения. Улучшение функциональности включает в себя приложения, утилиты и игры. Rockbox может обеспечить (retrofit) воспроизведение видео для плееров, выпущенных в середине 2000-х годов. Также Rockbox содержит управляемый голосом пользовательский интерфейс, подходящий для использования людьми со слепотой или повреждённым зрением.

Как раз у меня сломался мой основной плеер и я подбирал подходящую альтернативу для него.
Не долго думая я пошёл на ebay и заказал за 60$ Ipod Nano 2 gen 8Gb

Ipod Nano 2 gen

Пока плеер ехал в Челябинск я принялся изучать варианты установки.

Разгон Canon 400d до 3200 ISO

Вступление





Сегодня мы займёмся модернизацией известного фотоаппарата Canon EOS 400d с помощью дополнения к прошивки CHDK
CHDK (Canon Hacker’s Development Kit) — резидентная программа для компактных и зеркальных цифровых фотоаппаратов фирмы Canon, базирующихся на процессорах DIGIC, позволяющая значительно увеличить их функциональность и добавляющая недокументированные возможности. Создана сообществом энтузиастов CHDK. Является резидентной программой, но по сложившейся традиции часто называется альтернативной прошивкой.

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

Предыстория





Этим летом в сети появилась информация о успешной расшифровке прошивки Canon EOS 400d.
Как оказалось, для этого великолепно подошёл набор утилит от другой модели - Canon EOS 30d.
И после достижения успешного результата началась кропотливая работа по модернизации внутреннего ПО 400-тки.

Canon 400d

Настройка MySQL 5 для VDS/VPS (Very low memory)

Всем привет!
Сегодня я решил написать статью про оптимизацию MySQL 5.x для запуска и работы в условиях малого объёма ОЗУ.

Проблема стоит особенно остро на VDS/VPS серверах, так как там ОЗУ очень немного.
Конкретно в моём случае я довольствуюсь лишь 64Мб и без дополнительного тюнинга MySQL отказался запускаться вообще.

Почитав некоторое количество форумов, блогов и мануалов я вывел самый минимальный конфиг, при котором MySQL может работать.

Вот он:

Удаление ненужных зависимостей в ArchLinux

Всем привет!

Попался на глаза небольшой рецепт по удалению ненужных зависимостей.

Сначала найдём ненужные файлы и ознакомимся с их списком:
Делается это командой:
pacman -Qdt

Посмотрели?
Пора бы избавиться от этого мусора, командой:
pacman -Rsn $(pacman -Qdtq)

Всё просто и эффективно.
Источник

Wordpress, привязываем к gmail и прочей почте без плагинов

Всем привет!
Это мой первый пост на новом домене, откроем новый сезон публикаций.
Вы можете подписаться на новую RSS ленту по этой ссылке

Вступление:

В связи с переездом на новый домен и переносом постов моего блога в новый блог возникла маленькая проблема.
А именно, нужно было настроить почтовые уведомления о сообщениях.
Поскольку у меня слабенький VDS и ресурсов в нём совсем не много я разумеется отключил всё лишнее.
Включая Sendmail.
И действительно, зачем крутить демона когда его можно заменить лёгкой альтернативой: ssmtp

Проблема:

Она то как раз связана с Wordpress, дело в том что по умолчанию Wordpress использует Sendmail для отправки писем.
А поскольку я его выключил да и в добавок использую Gmail аккаунт то нужно было перенастроить Wordpress именно на Gmail.

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

Wordpress использует для отправки почты phpmailler
А он уже давно умеет посылать почту с использование SSL
Для примера привяжем блог на Wordpress к почте Gmail (Google Apps)

Приступим:

Для начала нужно убедиться, что у Вас есть следующие:
1) Открыт порт 465
2) PHP поддерживает SSL
3) PHP поддерживает отправку почты

Вооружившись любимым текстовым редактором лезем в исходники и правим строки:

1)/wp-includes/pluggable.php
$phpmailer->isMail();

Меняем на

$phpmailer->isSMTP();

2)/wp-includes/class-phpmailer.php
Настраиваем параметры почты, изменяя параметры

var $Host = "smtp.gmail.com";
public $Port = 465;
public $SMTPSecure = 'ssl';
public $SMTPAuth = true;
public $Username = '[username]';
public $Password = '[password]';

На этом всё, сохраняем и пробуем.

Новый Chromium для ArchLinux (PKBUILD)

Всем привет!

Решил с Вами, мои дорогие почитатели моего блога, поделиться свежим самодельным PKBUILD'ом Google Chrome.

Всё началось с того, что ещё вчера я решил поставить этот браузер для своей мамы.
В качестве ОС у неё трудиться ArchLinux.
Так вот, поискав в AUR'е последний билд и не найдя его я сильно расстроился.

Дело в том, что те версии, который там находятся в упор не хотят либо скачиваться, либо запускаться.
Пришлось по одному из шаблонов делать свой PKBULD.
К счастью всё оказалось очень просто и быстро.

Вот ОН:



  1. # Contributor: Christer Edwards <christer@zelut.org>

  2. # PKGBUILD FAQ: http://blog.zelut.org/chromium-browser-faq-arch/

  3. pkgname=chromium-browser-4.0.219.3

  4. pkgver=4.0.219.3~svn20090925r27181

  5. pkgrel=1

  6. pkgdesc="Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all Internet users to experience the web."

  7. url="http://code.google.com/chromium/"

  8. if [ "${CARCH}"'x86_64' ]then

  9. depends=('atk' 'gtk2' 'nss' 'lib32-gtk2' 'lib32-libxdamage'

  10. 'lib32-nspr' 'lib32-openssl' 'lib32-gconf'

  11. 'lib32-dbus-glib' 'lib32-cairo' 'lib32-freetype')

  12. elif [ "${CARCH}"'i686' ]then

  13. depends=('atk' 'gtk2' 'nss' 'gconf' 'cairo' 'freetype2' 'dbus-glib')

  14. fi

  15. arch=('i686' 'x86_64')

  16. license=('BSD')

  17. source=(https://launchpad.net/~chromium-daily/+archive/ppa/+build/1261263/+files/chromium-browser_${pkgver}-0ubuntu1~ucd1~hardy_i386.deb)

  18. md5sums=('5aa5f2c658964b069c26054c9fbbfa2c')

  19. build() {

  20. cd $srcdir

  21. bsdtar xf "chromium-browser_${pkgver}-0ubuntu1~ucd1~hardy_i386.deb" || return 1

  22. bsdtar xf data.tar.lzma -C $pkgdir || return 1

  23. if [ "${CARCH}"'x86_64' ]then

  24. ## create wrapper script

  25. echo '#!/bin/bash' > $pkgdir/usr/bin/chrome

  26. echo 'export PANGO_RC_FILE="/opt/lib32/config/pango/pangorc"' >> $pkgdir/usr/bin/chrome

  27. echo 'export LDPATH="/opt/lib32/lib/:/opt/lib32/usr/lib:/opt/lib32/usr/local/lib"' >> $pkgdir/usr/bin/chrome

  28. echo '/usr/bin/chromium-browser &' >> $pkgdir/usr/bin/chrome

  29. chmod +x $pkgdir/usr/bin/chrome

  30. fi

  31. }



Отдельно с подсветкой синтаксиса: http://pastebin.com/f2cc127d9

Ещё нужно в ручную поставить все зависимости и создать сим. линки:
sudo ln -s /usr/lib/libnss3.so /usr/lib/libnss3.so.1d
sudo ln -s /usr/lib/libnssutil3.so /usr/lib/libnssutil3.so.1d
sudo ln -s /usr/lib/libsmime3.so /usr/lib/libsmime3.so.1d
sudo ln -s /usr/lib/libssl3.so /usr/lib/libssl3.so.1d
sudo ln -s /usr/lib/libplds4.so /usr/lib/libplds4.so.0d
sudo ln -s /usr/lib/libplc4.so /usr/lib/libplc4.so.0d
sudo ln -s /usr/lib/libnspr4.so /usr/lib/libnspr4.so.0

Пробывал его отгрузить в AUR но буквально спустя 10 минут его удалили.

В  письме с причиной удаления значилось, что мне нужно обратиться к автору ветки chromium в AUR и попросить его обновить свой PKBUILD.

Оригинал:
hi, there is already a package EXACTLY the same on
http://aur.archlinux.org/packages.php?ID=24266

don't upload new packages _just_ because is out of date. write in
comments, email the maintainer and ask to update it. if he doesn't do
that, sent an email to aur-general and ask to be orphaned

Поэтому я в своём блоге делюсь с Вами своим первым PKBUILD'ом.

Копирование фото через Picture Transfer Protocol (PTP) в Linux, FreeBSD

Всем привет!

Мне посчастливилось стать обладателем чудесного фотоаппарата Canon EOS 400d.
Сам фотик в качестве накопителя использует карты CompactFlash (CF) формата.
И всё было хорошо, пока я подключил его к ПК.
Оказывает в данной модели для передачи изображений используется протокол PTP

Вот небольшая выдержка из энциклопедии
PTP (Picture Transfer Protocol) – это широко распространенный протокол передачи изображений, который позволяет передавать снимки с фотоаппарата на компьютер, а так же на другие внешние устройства без установки дополнительных драйверов

Для пользователей ОС Widnows проблем нет, подключил и пользуйся как обычным Flash накопителем.
Под Linux такие устройства в качестве накопителя не отображаются.
Пришлось лезть в Google и узнавать способы передачи файлов по PTP протоколу.

К счастью я довольно быстро вышел на проект, который как раз занимается развитием PTP в linux.

Для копирования фото предлагается 2 решения:
    1) С использование утилиты gphoto2

    2) С использование FUSE и gphotofs

Давайте рассмотрим каждый из них.

Способ 1. С использование утилиты gphoto2
Всё очень просто, подключаем камеру, даём команду на копирование всех файлов
Для моего фотоаппарата команда выглядит так:
gphoto2 --camera "Canon EOS 400D (PTP mode)" --get-all-files

Посмотреть поддержку своей камеры можно с помощью ключа --list-cameras
За остальными командами идём в man ghoto2

Способ 2. С использование FUSE и gphotofs
На мой взгляд этот способ намного лучше и легче первого.
Мы просто примонтируем камеру с помощью FUSE и gphotofs в качестве обычного накопителя.

Возможности gphotofs:
You can:
- Traverse directories
- Read the contents of files
- Delete files
- Move files (Read + delete)
- Use 'du' to measure file size
- Mount the filesystem before plugging in a camera.
- Add/Remove directories
- Add (upload) files.
- Get free space information
- This one seems to be very much at the mercy of the camera
manufacturer. I don't know if it'll ever be possible in a
general way.
(Depends on gp_camera_get_storageinfo()).

You cannot:
- Modify files still has some problems.
- Rename files/directories
- Unplug and replug a camera and expect things to keep working.
- The backend gets confused and you'll just get errors when
you try to do anything. Unmount and remount the filesystem
and you'll be back in business.

Для использования FUSE у Вас в ядре должна быть включена поддержка Filesystem in Userspace support

Дальше всё очень просто:
Установив FUSE и gphotofs мы просто даём команду монтирования:
gphotofs <точка монттирования>

И работаем с камерой как с обычным накопителем.
После окончания работы размонтируем девайс командой:
fusermount -u <точка монтирования>

Всё очень просто, быстро и эффективно.

Обработка видео, записанного на miniDV камеру под Linux

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

Сегодня мы рассмотрим вопрос кодирования видео с miniDV видеокамеры.

Задача: Сбросить видео на ПК и пережать его для последующего хранения.

Нам потрбуеться:
1) Ядро с поддержкой FireWire 1394 или v4l (смотря кто как будет скидывать видео)
2) Программа dvgrab (собственно с её помощью мы будем грабить видео с miniDV кассеты из консоли)
3) Программа mencoder (Входит в поставку с видео плеером mplayer)
4) Программа avimerge для склеивания нескольких avi файлов в один (входит в состав transcode)

Грабим видео:

Для начала нам потребуется подключить видеокамеру к ПК.
В случае с FireWire 1394 никаких драйверов нам не нужно, просто подключаем и работаем.
В случае подключения камеры по средствам USB нам нужно определиться с её поддержкой ядром Linux.
Как мы уже знаем, сделать это можно с помощью команды lsusb и затем скомпилировать подходящий модуль ядра.
Я решил упростить себе жизнь и просто купил внешнюю карту FireWire 1394.

Для начала установим пакет dvgrab

Затем нам нужно перемотать miniDV кассету на начало и подключить камеру к ПК.

Теперь перейдём к процессу сграбливания видео:

Утилита dvgrab имеет множество полезных параметров, давайте рассмотрим некоторые из них:

-a, -autosplit - Этот параметр отвечает за нарезку видеофайлов, т.е dvgrab будет резать видео автоматические на куски, между нажатиями на кнопку запись/стоп. Это очень удобно если Вы хотите рассортировать сюжеты.

-f, -format - Позволяет в ручную задать формат видео потока, если параметр не задан, то dvgrab автоматически попытается определить формат данных. Если у Вас hdv камера то нужно обязательно указать этот параметр.

-F, -frames - Количество кадров

-s, -size - Устанавливает лимит на видео файл. По умолчанию установлен размер 1024 мегабайта, что удобно если Вы монтируете DVD диск.

-V, -v4l2 Если Вы планируете скинуть видео через драйвер v4l2

О остальных параметрах Вы можете почитать man dvgrab

В моём случае я воспользовался вот такой конструкцией:
dvgrab --format raw -size 20000 cam.dv

Поскольку размер одной кассеты около 13 Гб, то всё видео будет сохранено одним файлом, это для удобства кодирования.

Кодируем видео:

Да бы не вдаваться в подробности я дам Вам мою конструкцию для перегона видео:

Первый проход:
mencoder cam001.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=1:vqmin=1:vqmax=31 -oac mp3lame -lameopts vbr=2:q=7 -o mpeg4.avi -vf field,scale=768:576 -aspect 4:3

Второй проход:
mencoder cam001.dv -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vhq:vpass=2:vqmin=1:vqmax=31 -oac mp3lame -lameopts vbr=2:q=7 -o mpeg4.avi -vf field,scale=768:576 -aspect 4:3

При таких параметрах 1 час видео занимает около 800 Мб
При необходимости Вы можете изменить битрейд видео и звука для достижения желаемого качества.

Склеиваем видео:

Для склеивания видео в один большой файл мы воспользуемся утилитой avimerge.
Делается это очень просто:
avimerge -o com.avi -i 1.avi 2.avi 3.avi

Где com.avi - это итоговый видео файл, а 1.avi 2.avi 3.avi - это видео файлы, предназначенные для склеивания.

После обработки полученное видео Вы можете нарезать на диск или разместить в интернете.
Из видео хостингов я рекомендую воспользоваться www.veoh.com
На нём нет ограничения как по размеру видеофайла, так и по продолжительности самого видео.

Скачиваем с Rapidshare в консоли и автоматически сбрасываем PPP сессию

Всем привет!

Сегодня я решил выложить свои скрипты для скачивания файлов с Рапиды с помощью wget и с сбросом PPP сессии.

Применение:
Для примера возьмём моего провайдера.
Для выхода в интернет я использую ADSL модем с безлимитным тарифным планом.
При сбросе сессии мне даётся случайный внешний IP адрес.

Идея:
Сделать скачивание с Рапиды через консоль и после каждого скачивания сбрасывать PPP сессию для получения нового IP адреса и не ждать 15 минут.

Оборудование:
Модем у меня StarNet который я успешно перешил в Acorp Lan 120.
Для работы нам потребуется открытый доступ к модему через telnet.
Программа expect, для автоматизации сброса сессии.


Скрипты:

При обрыве соединения ppp0 происходит автоматическое переподключение.
Все скрипты сложить в одну папку.

p1 - Узнаёт PID демона PPPD

Листинг:
Copy Source | Copy HTML

  1. #!/usr/bin/expect -f

  2. log_user 0

  3. spawn telnet 192.168.1.1

  4. expect "BusyBox on router login:" {send "root\r"}

  5. expect "Password:" {send "Admin\r"}

  6. expect "#" {send "ps ax |grep pppd\r"}

  7. log_user 1

  8. send "exit\r"

  9. expect eof



p2 - Убивает PPPD по PID
И модем СРАЗУ автоматически поднимает заново.

Листинг:
Copy Source | Copy HTML

  1. #!/usr/bin/expect -f

  2. set pid [lindex $argv 0]

  3. log_user 0

  4. spawn telnet 192.168.1.1

  5. expect "BusyBox on router login:" {send "root\r"}

  6. expect "Password:" {send "Admin\r"}

  7. expect "#" {send "kill $pid"}

  8. send "exit\r"

  9. expect eof



Поправьте IP модема на свой.

Ещё нам потребуется скрипт DownloadFromRS
Он как раз предназначен для скачивания файлов с Рапиды через консоль, использую wget.

Теперь нам нужно отредактировать скрипт DownloadFromRS
таким образом, что-бы после окончания скачивания он выполнял скрип для сброса PPP сессии.

Листинг модифицированного скрипта:
Copy SourceCopy HTML

  1. #!/bin/bash

  2. ################################################

  3. #Purpose: Automate the downloading of files from rapidshare using the free account

  4. #using simple unix tools.

  5. #Date: 14-7-2008

  6. #Authors: Slith, Tune

  7. #Improvements: Please email them to jwhatson@gmail.com

  8. #Post Feedback and comments to http://emkay.unpointless.com/Blog/?p=63

  9. #Notes: To use curl instead of wget use 'curl -s' and 'curl -s -d'

  10. #Version: 1.2 - Rapidshare has added a wait time in between file downloads. On top of your download

  11. #to start. This has been fixed.

  12. #Added a 'kill time' feature. Specify killTime as an hour of the day and if the time is greater than this.

  13. #the script will end. Useful for using cron to start script at offpeak time and killing it when off speak ends.

  14. ################################################

  15. mirror=dt.rapidshare.com;

  16. ## possible mirrors

  17. # cg.rapidshare.com

  18. # l34.rapidshare.com

  19. # tg.rapidshare.com

  20. # gc2.rapidshare.com

  21. # dt.rapidshare.com

  22. # tl2.rapidshare.com

  23. # l32.rapidshare.com

  24. # l3.rapidshare.com

  25. # gc.rapidshare.com

  26. # l33.rapidshare.com

  27. # tl.rapidshare.com

  28. # cg2.rapidshare.com

  29. killTimeEnable=0

  30. killTime=9

  31. function getOutputFromFreeUserSubmit(){

  32. URL=$(wget -q -O - $line | grep "<form id=\"ff\" action=\"" | grep -o 'http://[^"]*');

  33. output=$(wget -q -O - --post-data "dl.start=Free" "$URL");

  34. }

  35. while read line

  36. do

  37. if [[ $killTimeEnable -eq 1 && $(date +%H) -gt $killTime ]]; then exit; fi;

  38. getOutputFromFreeUserSubmit output; #call getOutputFromFreeUserSubmit, result is stored in $output

  39. posibleWaitTime=$(echo "$output" | grep "try again in about" | grep -o "[0-9]\{1,3\}");

  40. if [ -z "$posibleWaitTime" ]; then #check for zero lenght string

  41. echo "No wait time, likely to be the first file you have downloaded in a while";

  42. else

  43. echo "Waiting $[ $posibleWaitTime+1] minutes (in between file download wait)";

  44. sleep $[ $posibleWaitTime+1]m;

  45. getOutputFromFreeUserSubmit output; #Now we have waited we will try again...

  46. fi

  47. time=$(echo "$output" | grep "var c=[0-9]*;" | grep -o "[0-9]\{1,3\}");

  48. ourfile=$(echo "$output" | grep "document.dlf.action=" | grep -o "http://[^\"]*$mirror[^\\]*");

  49. echo "Waiting $time secs for download of $ourfile";

  50. sleep $time;

  51. wget $ourfile;

  52. ./p1 | grep pppd | grep -v grep | awk '{print $1;}' | xargs ./p2;

  53. sleep 5;

  54. done < input.txt



Осталось сделать файл исполняемым, закинуть нужные ссылки в файл input.txt и запустить скачивание.
Все скрипты должны лежать в одной папке.
Всё очень просто и эффективно.

PS.  Так-же можно сделать обрыв VPN соединения и т.д
Динамический IP - это круто!

Источник:
Статья про скачивание с Рапиды.

Прошивка и обновления GPS навигаторов на базе платформы OS82C (в качестве примера)

Всем привет!

Решил написать у себя в блоге всю информацию о своём навигаторе, которую мне удалось найти и узнать.

Навигатор у меня китайского производства, сделан на базе платформы OS82C

Подробнее о нём Вы можете почитать в моём предыдущим посте. Там же есть ссылка на магазин, где он продаётся.

Я покажу Вам как перепрошить, обновить и восстановить Ваш GPS навигатор, приступим:

Внимание: Любое неосторожное действие может убить Ваш GPS
Хотя восстановить устройство в большинстве случаев можно прямо дома банальной перепрошивкой.
Все файлы и инструкции смотрите ниже.

Начнём с прошивки:

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

На данный момент существует несколько версий прошивки для данного аппарата.
Последняя на текущий момент с английским интерфейсом лежит ТУТ Версия 7DA82C.YF.F.2.26

После скачивания распаковать архиватором и поместить файлы в корень Вашей карты памяти, размером не более 2-х Гигабайт

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

Из известных глюков в этой прошивке:

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

Ещё есть последняя прошивка.
Скачать можно ТУТ

Версия 7DA82C.YF.F.3.12 (7DB82C.YF.F.3.12)

Из минусов - всё меню становится на китайском языке, но клавиатура на английском.
Лично мне - не критично, всё и так понятно.

Из плюсов :
Опять починили установку своих клавиатур, которую они поломали в 7DA82C.YF.F.2.26
Русская клавиатура устанавливается, проверил.
Остальное не смотрел, наверное ещё чего добавили.
Прошивка стала толще на 10 метров.

При прошивке забэкапте содержимое ResidentFlash2

Файлы в архиве:
* GPS.pak
* os82c.img
* Updater.exe
* updater.ini
* YFAutoRun.inf
* YFGo2CE.bld

Из нового:

Появилась система Early warning radar system
Гугл сказал что это система обнаружения радаров, которыми ДПС'ники сканируют скорость машины.
К сожалению проверить я это не могу, машины нету.
Но картинки в проге со всякими ментами, светофорами.
Возможно и вправду китайцы что-то там подкрутили.

Она находитcя в папке ResidentFlash2 и называется Alarm
Интерфейс весь на китайском.
Запускается при старте системы и имеет 98 уровень запуска.
На рабочем столе появляется стрелочка, через неё прога и запускается.

Я её забэкапил на карту памяти и запуск удалил из реестра.

После прошивки выполните Hardware Test
Затем подцепить к ПК с установленным MS ActiveSync

Скачать Registry Workshop

И с помощью него изменить параметр:
HKEY_LOCAL_MACHINE\init => Launch50=YFLoader.exe
Меняем значение YFLoader.exe на explorer.exe

Файл os82c.img удаляем, что-бы аппарат не перепрошивался постоянно.

Перезагружаем устройство, восстанавливаем содержимое ResidentFlash2.

Затем нужно сбросить реестр:

Сам реестр храниться в разделе \regfat
1) Переходим в панель управления => Storage Manager
2) Ищем самый маленький раздел на DSK1
У меня это оказался раздел Part03 (0x11)
Отмонтируем его, форматируем и монтируем обратно.
3) Перезагружаем устройство.

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

Все файлы можно после удалить, если хотите пользоваться разлоченным навигатором, то оставьте файл YFGo2CE.bld

Эта прошивка стоит на текущий момент на моём навигаторе, мне нравиться.

Обновляем системную оболочку:

Последняя на текущий момент версия 4.0.11.24
Качаем последнюю версию ТУТ

Я залил полный комплект, но в нём прошивка старая - 7DA82C.YF.F.2.25 (Последняя - 7DA82C.YF.F.3.12)

В этой оболочке отсутствует поддержка Bluetooth.
Данная проблема решается наложение патча.
После обновления файлы мз архива нужно закинуть в папку /residentflash2/YFAP30/skins/BlackGold_NavReady_CMMB

В новой оболочке очень много изменений:
ALARM (обнаружение радаров)
DTV (Цифровое телевидение)
WinCE (Выход в Windows CE, т.е разлочка)
Office (Word, Excel, PowerPoint, PDFView, ImageViewer)
NES (Эмулятор Денди)
И ещё много чего интересного.

Из минусов:
Нет Русского языка, только Китайский и Английский

Для тех кто решил прошить:

1) В корень карты памяти кидаем файл YFAPP.wzp
Так-же нам потребуется папка ResidentFlash2 из скаченного комплекта.

2) Перезапускаем аппарат и начнётся процесс обновления оболочки (нужно нажать левую кнопку в окне подтверждения)
Если у Вас разлоченный аппарат то Вам нужно запустить оболочку в ручную, она предложит обновиться.

3) После обновления жмём меню WinCE и попадаем в систему, копируем файлы из папки ResidentFlash2 с карты памяти в раздел ResidentFlash2 на устройстве.

4) Удаляем из карты памяти файл YFAPP.wzp и папку ResidentFlash2 и перезапускаем устройство.

Идём дальше:

Сменим заставку на устройстве:

1) Нужно подготовить картинку размером 480x272 pixels.
2) Сохранить её в BMP формате и 24-bit цветом.
Имя задать такое: "Logo82c.bmp".
3) Скопировать картинку в корень карты памяти и перезапустить аппарат, картинка прошьётся в устройство
4) Удалить картинку с карты памяти.

Сброс реестра и форматирование аппарата:

1) Создайте файл Yformat.fmt
2) В текстовом редакторе запишите туда следующий код: 666F726D6174
3) Скопируйте файл в корень карты памяти
4) Перезапустите аппарат
5) Дождитесь окончания форматирования
6) Вы увидите такое сообщение "No OS on SD found" или что-то похожее
7) Выключите аппарат
5) Удалите файл Yformat.fmt из картоки
6) Скопируйте прошивку на карту памяти и прошейте аппарат

Удачных экспериментов.

Источники:
Как всегда, форум 4pda на котором я опубликовал все эти инструкции.
По всем вопросам восстановления и прочим навигаторам писать туда.

Автоответчик и приём факсов в ОС Linux с помощью старого Voice модема

Всем привет!

Завалилось у меня тут несколько Voice модемов.
Два Zyxel Omni 56k com-port и один Acorp Sprinter 56k USB (софт модем)

Я уже про них давно забыл, со времён когда ещё сидел в интернете по Dial UP
Но на этой недели их спокойная и безмятежная жизнь на полке закончилась.

Мне пришла в голову очередная идея:
Сделать автоответчик для дома.

Первое, с чего я решил начать, так это подключение самого модема к серверу.
Для начала решил попробывать завести Soft modem Acorp sprinter 56k USB
Пересобрал ядро, и принялся искать драйвера.
Для начала заглянул на страничку www.linmodems.org и скачал там скрипт scanModem
Он сам определить Ваш модем и предложит скачать подходящий драйвер.
Мне же он предложил подгрузить модуль ядра и попробывать снова.
Пересобирать ядро и возиться с драйверами мне было неохота и я решил поставить Zyxel Omni 56k с COM-port'ом

После подсоединения модема к серверу у меня возник вопрос:
Как же проверить его работоспособность?

Погуглив я наткнулся на программу minicom
Она позволяет Вам общаться с устройствами через COM port
Но почему-то она так и не смогла увидеть мой модем.
Тогда я решил послать AT команды напрямую через COM port
Делается это так:

Для начала ознакомимся с таблицей нумерации COM портов





































Serial PortDOSLinuxI/O PortIRQ
FirstCOM1/dev/ttyS003F84
SecondCOM2/dev/ttyS102F83
ThirdCOM3/dev/ttyS203E84
FourthCOM4/dev/ttyS302E83

По скольку мой модем подключён к первому COM порту я послал на него следущую команду:
echo atdt3333333 > /dev/ttyS0

Эта команда говорит модему сделать звонок на номер 3333333

Услышав щелчок модема я успокоился и понял что модем работает и воспринимает команды.
Но что-то он ни как не хотел работать.

После 2-х часов ковыряний выяснилось что IRQ 4 (прерывание) на котором он работает был занят.
Пришлось подключать сервер к монитору и в BIOS выключить LPT порт.
Как альтернативное решение:  можно было просто сменить IRQ в BIOS.

После этого я установил программы wvdial и с помощью неё окончательно убедился в работоспособности модема.

Следующим шагом был шаг:  Выбор ПО

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

К сожалению в моём Twitter'e такую программу мне никто не подсказал и пришлось искать её самому.
Немного погуглив я сначала наткнулся на программу vgetty и на её потомка mgetty
Быстренько нашёл её в своём репозитории и запустил процесс установки:
USE="fax" emerge mgetty

Спустя некоторое время всё скомпилировалось и я перешёл непосредственно к настройке программы.
Правим /etc/mgetty/voice.conf

port ttyS0 -- Последовательный порт
rings 3 -- Три звонка и поднимается трубка
answer_mode voice:fax:data -- Порядок ответа голос:факс:данные
rec_max_len 30 -- Задаем максимальную длину сообщения у меня 30 секунд.
rec_min_len 2 -- Минимальная длинна сообщения.
port_speed 115200 -- Устанавливаем скорость порта.
backup_message standard.rmd -- Файл приветственного сообщения.
phone_owner root -- Владелец файлов сообщений (root).
phone_group voice -- Группа файлов сообщений (voice).
phone_mode 0660 - Права для файлов сообщений (-rw--rw---).

В /etc/inittab пишим

# starting vgetty
S1:2345:respawn:/usr/sbin/vgetty ttyS0

В принципе уже всё готово.

Осталось записать файл приветствия для автоответчика.
Это можно сделать двумя способами:

1) Записать с помощью микрофона

Подключаем микрофон, даём команду и говорим:
sudo /usr/bin/vm record -m -l ttyS0 -v standard.rmd

Результат можно прослушать так:
rmdtopvf -b standard.rmd | pvftowav > temp.wav && play temp.wav

2) Скачать запись автоответчика в интернете и сконвертировать в формат rmd для своего модема.
Я пошёл именно таким путём

a) Конвертация wav или mp3 файла для последующей обработки

Для этого нам потребуется дополнительная программа - sox

Допустим мы скачали сообщение для автоответчика - message.wav
Тогда конвертация будет выглядеть так:
sox message.wav -r 9600 -c 1 message_new.wav

Если Вы используете mp3 файл, то добавьте ключ -t mp3
sox -t mp3 message.mp3 -r 9600 -c 1 message_new.wav

б) Конвертация wav файла в pvf файл
wavtopvf message_new.wav message_new.pvf

в) Конвертация pvf файла в rmd файл для Вашего типа модема

Для этого нам потребуется утилита pvftormd

Даём следующую команду pvftormd -L и выбираем свой или похожий модем из списка.

Затем выполняем конвертацию.
Конкретно для моего модема команда выглядит так:
pvftormd ZyXEL_Omni56K 4 message_new.pvf standard.rmd

г) Файл standard.rmd помещаем в папку с сообщениями.
По умолчанию она находится тут:
/var/spool/voice/messages/

После этого Вы уже можете звонить себе и проверять результат.

Остался только один интересный вопрос:
Как забирать оставленные сообщения?

Существует несколько способов:

1) Сделать сетевую папку
2) Заходить на сервер и слушать их от туда через скрипт
3) Установить Flash плеер на сервер и через браузер прослушивать сообщения (Придумал сам)

Скрипты для конвертации сообщений в WAV или MP3 я выложу походу описания.

Рассмотрим каждый из них:

1) Тут всё просто, ставите Samba или NFS сервер и открываете доступ в сеть

2) Скрипты, я их честно не проверял, а просто скопировал.

Прослушивание сообщений:
Copy SourceCopy HTML

  1. #!/bin/bash

  2. #--------------------------------

  3. MINC=/var/spool/voice/incoming/

  4. MDIR=/home/$USER/msg

  5. #--------------------------------

  6. clear

  7. case "$1" in

  8. -h|--h|--he|--hel|--help)

  9. echo "
    Copyringts (c) Andrey G-v 2007

    Options:
    -h, --help     Показать справку и выйти
    -v, --version  Показать информацию о версии

    "

  10. exit 1

  11. ;;

  12. -v|--v|--ve|--ver|--vers|--versi|--versio|--version)

  13. echo "ubdate 0.1 "

  14. exit 1

  15. ;;

  16. -*)

  17. echo 1>&2 "$0: Unknown \`$1' option"

  18. echo 1>&2 "Try \`$0 --help' for more information"

  19. exit 1

  20. ;;

  21. esac

  22. clear

  23. echo -en "       \33[33m
    ==============================
    1) Новые сообщения:
    2) Слушать старьё:
    3) Выход:
    ==============================
    Выберите действие :# \33[0m"

  24. read num

  25. case $num in

  26. 1)

  27. if !( [ -d $MDIR ] ); then

  28. mkdir $MDIR ;

  29. fi

  30. cd $MINC

  31. for i in `ls -x1 *.[Rr][Mm][Dd] 2> /dev/null`; do

  32. MSDATE=$(date -r $i +Msg-%d%m%y-%H%M%S.wav)

  33. rmdtopvf -b $i | pvftowav > $MDIR/$MSDATE

  34. done

  35. cd $MDIR

  36. for i in `ls -x1 *.[Ww][Aa][Vv] 2> /dev/null`; do

  37. echo "Играю "$i"..."

  38. play $i

  39. done

  40. rm -f $MINC/*.[Rr][Mm][Dd]

  41. ;;

  42. 2)

  43. clear

  44. cd $MDIR

  45. LSDIR=$(ls -x1 *.[Ww][Aa][Vv] 2> /dev/null)

  46. echo -en "       \33[33m
    ==============================
    $LSDIR
    ==============================
    Имя фаила :# \33[0m"

  47. read PLFILE

  48. #ls -x1 *.[Ww][Aa][Vv]

  49. echo "Играю "$PLFILE"..."

  50. play $PLFILE

  51. ;;

  52. 3)

  53. clear

  54. echo "Не туда попал? :)"

  55. sleep 3

  56. ;;

  57. *)

  58. clear

  59. echo "ОШИБКА! НЕ ВЕРНЫЙ АРГУМЕНТ! :("

  60. exit 1

  61. ;;

  62. esac



Скрипт для уведомления о новых сообщениях на Ваш e-mail :
Copy SourceCopy HTML

  1. #!/bin/bash

  2. MESDIR=`ls /var/spool/voice/incoming/*.[Rr][Mm][Dd] 2> /dev/null | wc -l`

  3. if [ $MESDIR != "0" ]; then

  4. echo Для Вас есть $MESDIR сообщение\(ний\). | mail -s "Есть сообщения на автоответчике" $USER # Имя пользователя

  5. fi



Настраиваем его запуск через Cron и получаем уведомления.

3) Прослушиваем сообщения через Flash плеер прямо в браузере

Для начала нам нужно скачать подходящий Flash плеер.
Я остановил свой выбор на ЭТОМ
Его самый главный плюс - он автоматически генерирует playlist из mp3 файлов в папке.

Скачиваем, распаковываем и настраиваем свой WEB сервер.
Сам же плеер настраивать практически не нужно.
Я просто скопировал его себе в htdocs, удалил папку mp3
Затем сделал символическую ссылку папки /var/spool/voice/incoming в папку с плеером, и переименовал ссылку в mp3

Ещё пришлось дать права на исполнения на некоторые папки.

Затем я написал скрипт, для перегона файлов автоответчика rmd в mp3 формат:
Copy SourceCopy HTML

  1. #!/bin/sh

  2. find /var/spool/voice/incoming -type f -mtime +30 -delete #удаляю файлы старше 30 дней

  3. cd /var/spool/voice/incoming

  4. for i in `ls -x1 *.[RrWw][MmAa][DdVv] 2> /dev/null`; do

  5. dm_date=$(date -r $i +Msg-%d%m%y-%H%M%S)

  6. /usr/bin/rmdtopvf -b $i _tmp.pvf > /dev/null 2>&1

  7. /usr/bin/pvftowav _tmp.pvf $dm_date.wav > /dev/null 2>&1

  8. /usr/bin/sox -t wav $dm_date.wav -t mp3 $dm_date.mp3 > /dev/null 2>&1

  9. done

  10. rm -f *.[Pp][Vv][Ff]

  11. rm -f *.[Rr][Mm][Dd]

  12. rm -f *.[Ww][Aa][Vv]



Его запуск я добавил в Cron с интервалом в 5 минут.

А если открыть WEB сервер в интернет, то можно слушать сообщения где угодно и когда угодно.
Кому интересно, тот может поднять свой Dial IN сервер и стать провайдером модемного интернета :)

Источники:

Настройка телефонного автоответчика под Linux
Настройка vgetty для автоответчика+PPP

Получаем число непрочитанных писем Gmail в статус баре GNU Screen

Всем привет!

Попалась на глаза интересная статейка: Show Unread Gmails in Gnu Screen Status Bar

Решил перевести и разместить у себя в блоге:

Итак, нам потребуется установленный GNU Screen и Wget

Правим свой файл .screenrc
caption always "%{= kw}%-w%{= BW}%n %t%{-}%+w %-= | %1` Unread |"

backtick 1 60 60 /home/Ваша_home_директория/bin/get_gmail

get_gmail - Это скрипт для получения почты, листинг смотрите ниже.

Сейчас создадим необходимые директории
mkdir ~/bin
cd bin/

В этом каталоге создаём скрипт get_mail
Copy SourceCopy HTML

  1. #!/bin/bash

  2. gmail_login="username"

  3. gmail_password="password"

  4. fetch="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom --no-check-certificate )"

  5. line="$(echo "$fetch" | grep 'fullcount')"

  6. unread="$(echo "$line" | sed "s/<fullcount>\(.*\)<\/fullcount>/\1/")"

  7. if [ -z "$unread" ]; then

  8. echo “!”

  9. else

  10. echo$unread

  11. fi



Осталось дать права на запуск
chmod 700 get_gmail

В принципе, это написано в качестве примера использования.
Остальное всё зависит от Вашей фантазии.

Можно например зациклить выполнение проверки писем.
Copy SourceCopy HTML

  1. #!/bin/bash

  2. gmail_login="username"

  3. gmail_password="password"

  4. while [ 1 ]; do

  5. fetch="$(wget --secure-protocol=TLSv1 --timeout=3 -t 1 -q -O - https://${gmail_login}:${gmail_password}@mail.google.com/mail/feed/atom --no-check-certificate )"

  6. line="$(echo "$fetch" | grep 'fullcount')"

  7. unread="$(echo "$line" | sed "s/<fullcount>\(.*\)<\/fullcount>/\1/")"

  8. if [ -z "$unread" ]; then

  9. echo “!”

  10. else

  11. echo$unread

  12. fi

  13. sleep 10m

  14. done



Затем если Вы как я используете оконный менеджер dwm, добавить это в файл ~/.xinitrc.
В скрипте после done нужно поставить знак & (done &)
И получать число непрочитанных писем в его статус баре, с интервалом 10 минут.

Как вариант, можно поправить строчку  mail.google.com/mail/feed/atom накакой-нибудь другой feed и получать письма с определённого лэйбла.

Файлообмен и резервирование данных на Linux сервере с помощью Dropbox

Всем привет!

Опять Босс на работе сгенерировал очередное задание:
Имеем 2 офиса одной фирмы.

Задача:
Организовать файлообмен между ними.

У меня в голове возникло несколько решений этой задачи:

1) VPN туннель.
Такое решение слишком избыточно для простого файлообмена.

Плюсы:
Могут ходить в по сети в другой офис.
Лёгкость работы.
Шифрование данных
Сжатие данных

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

2) FTP
Плюсы:
Простота реализации
Гибкие настройки
Можно работать дома

Минусы:

Сложность работы с FTP, манагеры этого точно не осилят.
Должен кто-то постоянно отгружать данные (Синхронизировать)

3) Подумав ещё немного я вспомнил про проект DropBox.
Особенно про Linux версию, которая может работать в качестве демона.


Плюсы:
Резервирование данных
Возможность отката
Можно работать из дома
Оптимизация интернет трафика
Шифрование данных
Сжатие данных перед отправкой
Абсолютная прозрачность для пользователя.

Минусы:

2 Гига места, но решается покупкой платного аккаунта.
Зависимость от сервиса.

Проанализировав эти три варианта я остановился на сервисе DropBox

Схема файлообмена:

Офис 1 <=> Samba шара <=> DropBox <=> internet <=> DropBox <=> Winodws шара (Офис 2)

Пояснения:

Папку ~/Dropbox я открою по сети через Samba сервер.
Всё что туда будет попадать, автоматически будет синхронизироваться с сервисом DropBox
Во втором офисе я ставлю Windows клиента DropBox и папку так-же открываю в сеть.

PS. Как вариант использования:
Можно например туда базы 1С разместить, и они будут бэкапиться автоматически.
Или просто туда какие-нидуь бэкапы скидывать или важные документы, всё зависит от Вашей фантазии.

Для начала нам требуется зарегистрировать на сервисе.
Сделайте одолжение:
Зарегистрируйтесь по моей реферальной ссылке, это даст мне и Вам дополнительное место (250 Мб)

Вот смотрю рефералы (Спасибо кто по ссылке регистрируется).

Для получения дополнительного места нужно выполнить 3 этапа:
1) Перейти по реферальной ссылке
2) Зарегистрироваться
3) Установить программу клиент Dropbox

Установка клиента DropBox на Linux без GUI

Если у Вас есть GUI на сервере, то для Вас задача существенно упрощается:

Вам просто нужно скачать один из архивов (ссылки ниже)

Например:
wget -O dropbox.tar.gz http://www.getdropbox.com/download?plat=lnx.x86


Разархивировать:

tar zxof dropbox.tar.gz

И перенисти полученные файлы в свою домашнюю директорию
mv .dropbox-dist ~/.dropbox-dist/

Запустить демона.
~/.dropbox-dist/dropboxd &

И заполнить данные своего аккаунта.

Я же работаю через с серверами удалённо через SSH и GUI мне вообще не нужен.

Приступаем:

Качаем подходящий архив для Вашего Linux'a (32 бита или 64 бита)

Поскольку у меня 32-х битная версия Linux, я разумеется выбрал 32-х битную версию

Качаем:
cd /tmp
wget -O dropbox.tar.gz http://www.getdropbox.com/download?plat=lnx.x86

Распаковываем:
tar zxof dropbox.tar.gz

И переносим полученные файлы в свою домашнюю директорию
mv .dropbox-dist ~/.dropbox-dist/

Далее нам потребуется пара программ на python'e

Качаем их:

wget http://dl.getdropbox.com/u/6995/dbmakefakelib.py
wget http://dl.getdropbox.com/u/6995/dbreadconfig.py (не обязателен)

Затем выполняем первую - dbmakefakelib.py
python dbmakefakelib.py

И видим такую строку:
dropboxd ran for 15 seconds without quitting - success?

Значит всё прошло хорошо.

Идём дальше.

Выполняем вторую программу dbreadconfig.py
Она нам нужна, что-бы узнать HostID
python dbreadconfig.py

host_id = 739bfe362f3bb3246da99dc8d20dbe2b
last_revision = None
schema_version = 6

Лично у меня эта программа не запустилась.
Решено было воспользоваться вторым способом: через sqlite
cd .~/.dropbox

Выполняем:
sqlite3 dropbox.db

SQLite version 3.6.11
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

Вводим:
.dump config

И в ответ получаем что-то типа этого:

BEGIN TRANSACTION;
CREATE TABLE config (
id INTEGER PRIMARY KEY,
key TEXT NOT NULL UNIQUE,
value TEXT
);
INSERT INTO "config" VALUES(1,'schema_version','STYKLg==
');
INSERT INTO "config" VALUES(2,'last_revision',NULL);
INSERT INTO "config" VALUES(3,'host_id','VmJjYTZiY9Y2MGY1OGExMjA5ODc0ODU6NWZmMzNhY2VmCnAxCi7=
');
COMMIT;

Нас интересует вот это, у Вас будет своё значение (в примере я исказил свои данные):
VmJjYTZiY9Y2MGY1OGExMjA5ODc0ODU6NWZmMzNhY2VmCnAxCi7=

Это и есть идентификатор Вашего хоста, но он зашифрован по технологии Base64

Ну что ж, расшифруем:

Способ 1:

Используем интернет.
Идём по ЭТОЙ ссылке и вставляем туда наше значение.

Способ 2:

Без соединения с интернетом.
Воспользуемся утилитой base64
Делаем так:
echo "VmJjYTZiY9Y2MGY1OGExMjA5ODc0ODU6NWZmMzNhY2VmCnAxCi7=" > /tmp/enc.txt
base64 -d /tmp/enc.txt

В результате любого способы мы получим например такое значение:
Vbca6bc60f58a120987485р5ff33acef

Отбрасываем буквы V спереди и получаем такое значение:
bca6bc60f58a120987485р5ff33acef

Это и есть на HOSTID

Идём по ссылке:
https://www.getdropbox.com/register?host_id=HOSTID

Это можно сделать с любого ПК подключённого к интернету, не обязательно с сервера.

HOSTID нужно заменить на свой, полученный на предыдущим шаге.
В наше случае будет такая ссылка:
https://www.getdropbox.com/register?host_id=bca6bc60f58a120987485р5ff33acef

Далее просто вводим своё имя и пароль, снизу будет имя Вашего сервера.
После авторизации Ваш хост будет добавлен в список хостов.
Повторите данную операцию для всех ПК, которые будут использовать в файлообмене.

Осталось совсем немного, создать папку Dropbox в своей домашней директории:
mkdir ~/Dropbox

И запустить демона.
~/.dropbox-dist/dropboxd &

Ну и разумеется написать скрипты для автостарта, примеры для Gentoo, Fedora/RedHat, Debian Вы можете посмотреть в Источнике

Всё, теперь можно насаждаться всеми прелестями сервиса DropBox

UPD:
Заметил, DropBox не синхронизирует файлы и папки с русскими именами.
Причём именно Linux клиент, хотя у меня вся система работает в юникоде.
Надеюсь, в будущем профиксят.

Gentoo: Получи SMS когда закончится сборка пакета

Всем привет!

Вот наткнулся на интересную статью для пользователей Gentoo.

Идея: Поставить сборку пакета (или обновление мира) с помощью emerge и получить SMS при выполнении.

Реализация:

Нам потребуется:
mailx client (mail-client/mailx) - это консольное приложение для отправки почты.
MTA (mail transfer agent) агент для mailx (Postfix, Sendmail или ssmtp)

Скрипт: /usr/local/sbin/emobalert
Copy SourceCopy HTML

  1. #!/bin/sh

  2. # Record exit status of emerge–must precede ALL other commands!

  3. [ $? -eq 0 ] && RESULT=”PASS” || RESULT=”FAIL”

  4. # Change next line to your mobile/SMS address

  5. SMS_ADDR=”2015551212@sms.some-mobile.com”

  6. LAST_PKG=”$(tac /var/log/emerge.log | awk$2 == “>>>” {print $4,$5,$6,$7; exit;}’)”

  7. CFG_MODS=”$(find /etc -iname ‘._cfg????_*’ | wc -l)”

  8. mail -s”Emerge Completed” $SMS_ADDR <<-EOM

  9. ${RESULT} ${LAST_PKG}

  10. :::

  11. ${CFG_MODS} config updates pending

  12. $*

  13. EOM



Замените SMS_ADDR на Ваш телефон и SMS шлюз оператора.
И сделайте скрипт исполняемым.

Запуск:

Например вот так:
emerge -uDv world; emobalert

И по окончании сборки Вы получите такое сообщение:
From: root@localhost.localdomain
(Emerge Completed)
PASS (2 of 2) app-crypt/seahorse-2.22.3
:::
0 config updates pending

По моему очень удобно.

Источник

Разработка кластера сервера печати на базе Windows server 2008

Всем привет!

Сейчас у меня очень напряжённое время.
Диплом, собеседование в консульстве, работа ...
Ещё где-то 1.5 недели напряга, Вы можете следить за моими делами в твиттере.

Выкладываю свой курсовой проект, посвященный построению кластера печати на базе ОС Windows server 2008

Моё видео:

http://rutube.ru/tracks/1790402.html?v=476d1263f41d646e301a7b0d985ac21f

Описание построения читаем ТУТ
Само видео записано до момента добавления общего SCSI диска.
Поскольку такового у меня нет и эмулятор его создать не позволяет.
Впрочем там всего-то 2 кнопки остаётся нажать до окончания построения.

Надеюсь что найду время написать что-нибудь интересное.

Загрузчик PLOP - загрузись с чего угодно и где угодно

Всем привет!
Сегодня хочу поделиться с Вами информацией об очень интересном загрузчике - Plop
Вот список того что он умеет:
* CD/DVD boot without BIOS support
* USB boot without BIOS support (UHCI, OHCI and EHCI)
* Floppy boot
* Different profiles for operating systems
* Define up to 16 partitions
* No extra partition for the boot manager
* Hidden boot, maybe you have a rescue system installed and the user should not see that there is another system installed
* Boot countdown
* Hide partitions
* Password protection for the computer and the boot manager setup
* Backup of partition table data
* Textmode user interface 80x50
* Graphic user interface 640x480, 800x600, 1024x786, 1280x1024
* MBR partition table edit
* Start of the boot manager from harddisk, floppy, USB, CD, DVD
* Starting from Windows boot menu
* Starting from LILO, GRUB, Syslinux, Isolinux, Pxelinux (network)
* The boot manager is freeware

Самая любопытная его возможность - загрузка с USB и CD дисков на тех материнских платах, где эта возможность отсутствует (Старые материнские платы).
И что самое интересное, он позволяет получить USB 2.0 скорость на тех материнских платах, на которых эта возможность урезана (касается первых материнских плат, с поддержкой загрузки с USB устройств).

Например Ваша мат.плата выдаёт USB 2.0 скорость в ОС Windows или Linux, но при загрузке с USB работает на USB 1.1 и грузиться ОЧЕНЬ медленно.

Начнём Мы как обычно с установки.

Для начала скачаем последнюю стабильную версию Plop.
В моём случае это версия - plpbt-5.0.3
После распаковки zip архива я советую Вам сперва изучить файл readme.txt, в котором содержаться все инструкции по установке и прочая интересная и полезная информация.

Кратко рассмотрим некоторые варианты установки, благо разработчики позаботились о том, что-бы Plop можно было быстро и легко установить практически на любой носитель информации.

Хотите установить Plop на дискету?
Нет ничего проще, просто выполните:

Для ОС Linux:
dd if=plpbtin.img of=/dev/fd0

Для установки из-под DOS можно воспользоваться утилитой diskimg.com:
diskimg.com with diskimg -d a -w plpbtin.img

Хотите установить Plop на CD диск?
Просто прожгите ISO образ на свой носитель.

Пользователи ОС Windows могут это сделать с помощью бесплатной программы для записи дисков - CDBurnerXP или воспользоваться любой другой программой для записи дисков.

Пользователи ОС Linux могут воспользоваться программой - cdrecord
cdrecord -v dev=devicename iso_image

Установка Plop:

Для ОС DOS:

1) Скачайте plpgenbtldr-0.5.zip
2) Скопируйте файлы plpinstc.com и plpgenbtldr.exe в корень диска C:
3) Переименуйте файл plpinstc.com в plpbt.bin
4) Откройте shell с правами администратора системы
5) Выполните файл plpgenbtldr который создаст файл plpbtldr.bin, это займёт несколько секунд.
Если это займёт больше времени, то значит что-то пошло не так.

Для Windows 2K и XP:
Просто впишите эту строчку в Ваш файл boot.ini:
c:\plpbtldr.bin="PLoP Boot Manager"

Разумеется файл plpbtldr.bin должен быть в корне диска c:

Для Windows Vista:

Просто выполните такую команду:
bcdedit /create /d "Install PLoP Boot Manager" /application bootsector

После выполнения этой команды вы получите номер в { } скобках.
Этот номер зовётся (Called) id

Дальше выполните следующие команды, заменяя id на свой, полученный из предыдущей команды:
bcdedit /set {id} device boot

bcdedit /set {id} path \plpbtldr.bin

bcdedit /displayorder {id} /addlast

Установка для Syslinux, Isolinux, Pxelinux (Network)
Добавьте plpinstc.com в следующие конфигурационные файлы:
* для Syslinux это syslinux.cfg
* для Isolinux это isolinux.cfg
* для Pxelinux это pxelinux.cfg/default

Добавьте следующие строки в эти файлы конфигурации:
label plpinst
kernel plpinstc

Файл plpinstc положите в корень папки с конфигами.

Если же Вам просто нужно запустить Plop без его установки, то впишите такие строчки:
label plp
kernel plpbt

Файл plpbt так-же положите в корень папки с конфигами и в загрузчике выберите пункт plp

Установка с использование LILO:

Скопируйте файл plpinstc.com в папку /boot
В файл /etc/lilo.conf допишите:
image=/boot/plpinstc.com
label=plop-install

Для запуска Plop без его установки:

Скопируйте файл plpbt.bin в папку /boot
Добавьте такие строчки в файл lilo.conf:
image=/boot/plpbt.bin
label=PLoP

И выполните команду lilo для обновления конфигурации.

Установка с использование GRUB / grub4dos

Скопируйте файл plpinstc.com в папку /boot

В файл menu.lst впишите следующие строки:
title PLoP Boot Manager Install
root (hd0,0)
kernel /boot/plpinstc.com

Для запуска Plop без его установки:

Скопируйте файл plpbt.bin в папку /boot

В файл menu.lst впишите следующие строки:
title PLoP Boot Manager
root (hd0,0)
kernel /boot/plpbt.bin

Конфигурирование Plop:
Настройка производится путём патчинья самого загрузчика Plop с помощью утилиты plpcfgbt

Например, если Вам нужно сделать загрузку с usb устройства и без лишних вопросов, то введите такую строку:
plpcfgbt.exe stm=hidden cnt=on cntval=1 dbt=usb plpbt.bin

Полный список опций можно посмотреть в файле 1README.TXT в директории с программой.

А теперь рассмотрим реально полезный пример использования Plop:

Задача:

1) Получить USB 2.0 или близкую к нему скорость на тех материнских, которые работают с USB 2.0 только в загруженной ОС, а на этапе загрузки выдают USB 1.1

2) Загрузиться в PCI USB 2.0 внешнего конроллера.

Решение:

1) Устанавливаем Plop на ваш носитель информации, я решил воспользоваться свой BootFlash с Grub4DOS в качестве загрузчика.
Общая схема загрузки будет выглядеть так:
Grub4DOS (usb1.1) => Plop => Grub4DOS (usb 2.0)

Устанавливаем:
Копируем файл plpbt.bin на Flash накопитель, в папку /boot или в любое удобное для Вас место.
В файл menu.lst пишем:
title Start PLoP Usb driver
find --set-root --ignore-floppies /boot/plpbt.bin
kernel /boot/plpbt.bin

Сохраняем и пробуем.

Так-же можно сделать загрузку iso образа через RAM:
Скопируем ISO образ в корень диска, в файл menu.lst впишем следующие строки:
title Plop RAM
map --mem (hd0,0)/plop/plpbt.iso (hd32)
map --hook
chainloader (hd32)
boot

Сохраняем и пробуем.

2) В этом случае мы просто устанавливаем Plop на наш HDD,CD-ROM диск или дискету и в качестве устройства выбираем USB

Plop автоматически просканирует все USB порты и загрузить Ваш LiveUSB накопитель.

Думаю для ознакомления пока-что достаточно.
Возможно в будущим я продолжу публиковать информацию по этому замечательному загрузчику.

Скрипты для переподключения pppoe соединения на ADSL модеме

Всем привет!

На неделе от безделья написал скрипты для сброса PPPOE сессии на ADSL модеме через ПК
Поскольку у меня нет белого IP адреса я пользуюсь ими для переподключения сессии.
Это позволяет мне качать с файлообменников без задержек и ожидания.

Скрипты написаны для ОС Linux
Требуется программа - expect
На смену IP адреса уходит ~20 секунд.
Тестировалось на модеме StarNet перешитый в Acorp Lan 120


Идея:

При обрыве соединения ppp0 происходит автоматическое переподключение.
Всего 3 скрипта, всё сложить в одну папку.

p1 - Узнаёт PID демона PPPD

Листинг:
Copy SourceCopy HTML

  1. #!/usr/bin/expect -f

  2. log_user 0

  3. spawn telnet 192.168.1.1

  4. expect "BusyBox on router login:" {send "root\r"}

  5. expect "Password:" {send "Admin\r"}

  6. expect "#" {send "ps ax |grep pppd\r"}

  7. log_user 1

  8. send "exit\r"

  9. expect eof



p2 - Убивает PPPD по PID возвращённому скриптом run.sh (смотри ниже)
И модем СРАЗУ автоматически поднимает заново.

Листинг:
Copy SourceCopy HTML

  1. #!/usr/bin/expect -f

  2. set pid [lindex $argv 0]

  3. log_user 0

  4. spawn telnet 192.168.1.1

  5. expect "BusyBox on router login:" {send "root\r"}

  6. expect "Password:" {send "Admin\r"}

  7. expect "#" {send "kill $pid"}

  8. send "exit\r"

  9. expect eof



Скрипт run.sh - Парсит PID от p1 и отсылает его в качестве аргумента p2 который и прибивает PPPD
Листинг:
#!/bin/sh
./p1 | grep pppd | grep -v grep | awk '{print $1;}' | xargs ./p2

Даём права на исполнение и просто делаем: ./run.sh
Всё остальное пройдёт автоматом.
Поправьте IP модема на свой.

Для желающих прикрутить цикл проверки IP:
Пропарсить IP с модема можно на пример так:
ifconfig eth0 | colrm 1 10 | awk -F "[: ]" '$1 ~ /^inet$/{print $3}'

Т.е пишем например скрипт p3 который возвращает ip
Вот готовый:
Copy SourceCopy HTML

  1. #!/usr/bin/expect -f

  2. log_user 0

  3. spawn telnet 192.168.1.1

  4. expect "BusyBox on router login:" {send "root\r"}

  5. expect "Password:" {send "Admin\r"}

  6. expect "#" {send "ifconfig ppp0\r"}

  7. log_user 1

  8. send "exit\r"

  9. expect eof



И парсим его вывод.
Например:
$ ./p3.sh | colrm 1 10 | awk -F "[: ]" '$1 ~ /^inet$/{print $3}'
90.151.225.121

Скрипты можно модифицировать, например:
Можно написать цикл проверки IP адреса если Вас интересует конкретный диапазон IP.

В общем всё зависит от Вашей фантазии.

eee pc 701 включение и выключение WIFI и WEB камеры из Linux

Всем привет!

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

Сегодня небольшая статейка про Eee PC 701, а точнее про WiFi и WEB камеру.

Суть проблемы:
Требуется включать и выключать WiFi и WEB камеру без перезагрузки в OS Linux.

PS. К сожалению ACPI ещё не допилили для обработки HotKey

Решение:

Воспользоваться скриптами.

Приступим:

Для начала пересоберём ядро до версии 2.6.29
Вот мой конфиг:

http://www.mediafire.com/?mlttyjxykcg

Далее пишем скрипты:

wifi.sh и camera.sh

Для WiFI:
Copy SourceCopy HTML

  1. #!/bin/bash

  2. PWR=$(cat /sys/class/rfkill/rfkill0/state)

  3. case $1 in

  4. poweron)

  5. if [[ "$PWR" = "0" ]]; then

  6. echo 1 > /sys/class/rfkill/rfkill0/state

  7. sleep 1

  8. fi

  9. ;;

  10. poweroff)

  11. if [[ "$PWR" = "1" ]]; then

  12. ifconfig wlan0 down

  13. sleep 1

  14. echo 0 > /sys/class/rfkill/rfkill0/state

  15. fi

  16. ;;

  17. esac



Для камеры:
Copy SourceCopy HTML

  1. #!/bin/bash

  2. PWR=$(cat /sys/devices/platform/eeepc/camera)

  3. case $1 in

  4. poweron)

  5. if [[ "$PWR" = "0" ]]; then

  6. echo 1 > /sys/devices/platform/eeepc/camera

  7. sleep 1

  8. fi

  9. ;;

  10. poweroff)

  11. if [[ "$PWR" = "1" ]]; then

  12. echo 0 > /sys/devices/platform/eeepc/camera

  13. fi

  14. ;;

  15. esac



Запускать так:
Для WiFi:

wifi.sh poweron
wifi.sh poweroff


Для камеры:
camera.sh poweron
camera.sh poweroff