Читалка на linux. Путь в маршрутизаторы Читалка на linux {intro} Недавно, я захотел купить себе электронную книгу. Настроение и средства были, а что ещё надо? Посмотрев новинки, я выбрал ONEXT Touch&Read 001. Не буду вас томить и сразу приведу характеристики этого устройства: Электронная книга ONEXT Touch&Read 001 Экран: Сенсорный емкостный дисплей SiPix 6’’ (600x800 точек), 16 градаций серого Процессор: Samsung 2416 400Mhz Wi-Fi, Интернет-браузер Операционная система: Linux 2.6 Память:128 Мб оперативной памяти, 2 Гб постоянной памяти Интерфейс: Micro USB порт для подключения к ПК и заряда аккумулятора, micro SD разъем с поддержкой SDHC (карт высокой емкости) Аккумулятор: Li-Polymer 1530 mAh (до 10000 страниц без подзарядки) Поддержка форматов книг : FB2, EPUB, TXT, PDF, HTML Поддержка мультимедиа форматов: JPG, PNG, BMP, MP3 Размер: 124х170х8,8 мм Вес: 240 грамм ОС: Microsoft® Windows® 2000, XP, VistaTM, совместима с Microsoft® Windows 7 Через день мне курьер принес эту книгу. Вначале всё было хорошо. Но через день я заметил, что в углу экрана появилась маленькая трещинка. Всё бы ничего, если бы работал сенсорный экран. А он работал через раз. Мне это надоело, и я решил поковырять официальную прошивку 3.0 для этой книги. Скачал ее с сайта разработчика и приступил к детальному анализу. {part one} Только бросив поверхностный взгляд, можно было понять, что это всего лишь набор приложений и настроек. Проковырявшись два часа, я добавил в установочный файл эту строку - chmod 666 /mnt/mmc0p1/mnt/etc/rc.d/init.d/inetd Теперь при подключении к wi-fi точке у книги будет открыт 23 порт и доступ по telnet. Подключаемся и логинимся с данными по умолчанию root/SReader. Первая команда uname –a. И вот результат: Linux Samsung 2.6.21.5-cfs-v19 #183 Mon Dec 20 09:52:27 CST 2010 armv5tejl unknown После этого, еще немного побаловавшись в консоли, я понял, что это busybox v1.7.2. Посмотрев, что висит в процессах, я обратил внимание на интересное приложение - QBookApp. Оно было с параметром qws. Заинтересовавшись, я нашел бинарные файлы в папке /usr/local/qisda/bin. Бегло просмотрев их, я понял, что это как раз то, что нам нужно, – главные файлы читалки. Я запустил файл QBookApp.sh, и в консоль полилась туева хуча информации, а экран электронной книги два раза обновился. Я решил посмотреть, что будет, если я открою какую-нибудь книгу, и нажал в читалке «Продолжить чтение». В консоли началась бешеная загрузка шрифтов. При попытке завершить скрипт в консоли появился текст «Turn off wifi...», и соединение оборвалось. Я попробовал запустить QBookApp –qws без управляющего скрипта. В ответ он ругнулся: [root@Samsung bin]# ./QBookApp -qws ./QBookApp: error while loading shared libraries: libcrengine-arm.so: cannot open shared object file: No such file or directory Тогда я попробовал с теми же параметрами запустить управляющий .sh файл. Эффект был тот же. При попытке завершить скрипт отключался и wi- fi. {part two} Оставив это дело, я обратил внимание на файл proftpd.conf в каталоге /etc. Видимо это был конфигурационный файл FTP сервера. Обратившись к логике, я набрал в консоли proftpd. В ответ он мне выдал ошибку о не существовании группы “nogroup”. Лезть в конфиги мне было лень и я просто создал группу nogroup. Но всё равно он ругнулся: - IPv4 getaddrinfo 'Samsung' error: Name or service not known - warning: unable to determine IP address of 'Samsung' - error: no valid servers configured - Fatal: error processing configuration file '/etc/proftpd.conf' Я забил на это дело и начал копать дальше. Версия linux (busybox) была сильно кастрирована и в ней отсутствовали какие-либо менеджеры пакетов. В ней присутствовала только программа install, котрая могла устанавливать программу из исходников. К сожалению, никаких компиляторов, даже gcc, я не обнаружил. Поизучав систему ещё, я обнаружил модули, загружённые в ядро - mt5921sta_spi, hspi_s3c2443, spi_dev. В корне системы лежал файл linuxrc с правами на исполнение. Заглянув внутрь, я понял, что это очередной bash скрипт. Этот файл был главным, управляющим скриптом, который запускался при старте системы. В нём меня заинтересовали строки с названием QEngineer. Зайдя в папку /qdutil/em/, я заинтересовался файлом configuration.ini. Это был файл настроек. В нем можно было включить и отключить разные параметры (true\false). Видимо эта прошивка была создана не только для электронной книги, потому что в этом файле были настройки не существующих параметров, например Bluetooth или 3G. Путём усердных поисков я нашёл эти комбинации клавиш, которых нет в официальном FAQ. Back + Zoom + power - перепрошивка Back + Refresh + power - рекалибровка тачскрина И непонятное Left + Right + power - включение debug по USB Back + Right + power - запуск сервисного приложения (QEngineer) Я знаю что многим людям у которых были проблемы с экраном или экран не функционировал, помогла рекалибровка экрана. Я не был исключением, и после рекалибровки экрана получил полноценную электронную читалку. Чтобы запустить Qengineer через консоль достаточно просто вызвать команду /qdutil/em/start /qdutil/em/QEngineer Поскольку в системе не установлен не один менеджер пакетов, то для того что бы установить .deb пакет мы напишем маленький bash скрипт. В этом примере мы установим nano т. к. мне редакто vi не по душе. И вот наш скрипт: mount / -o remount,rw wget "http://ftp.us.debian.org/debian/pool/main/n/nano/nano-tiny_2.0.7- 5_armel.deb" wget "http://ftp.us.debian.org/debian/pool/main/s/slang2/libslang2_2.1.3- 3_armel.deb" FILES=$(ls /root/*deb) cd / for NAME in $FILES ; do ar -x "${NAME}" tar zxf data.tar.gz rm debian-binary data.tar.gz control.tar.gz rm "${NAME}" done cd - ln -sf /bin/nano-tiny /bin/nano Таким образом мы получили редактор nano. Доработаем маленько скрипт, и получаем программу для загрузки и установки пакетов. mount / -o remount,rw echo -n "Press enter adress..." read -e AD wget "$AD" FILES=$(ls /root/*deb) cd / for NAME in $FILES ; do ar -x "${NAME}" tar zxf data.tar.gz rm debian-binary data.tar.gz control.tar.gz rm "${NAME}" done cd - Все пакеты я качаю с http://ftp.us.debian.org/debian/pool/main/ для архитектуры armel. Давайте установим что-нибудь полезное, вроде g++ или apache2. Спустя два часа мой ридер превратился в полноценный веб сервер, с нормальным менеджером пакетов apt, и различнми утилитами, вроде aircrack- ng, nmap, etc. Но это всё только в консоле, а что же происходит на экране? На экране у нас обычный Qt. Можно писать, запускать и работать со своими программами. Вот вам маленький hello world: Code: #include <QApplication> #include <QPushButton> int main(int argc, char** argv) { QApplication app(argc, argv); QPushButton btn("Hello World"); btn.setFont(QFont("PMN Caecilia LT", 240, QFont::Bold)); btn.show(); btn.showMaximized(); QObject::connect(&btn, SIGNAL(clicked()), &app, SLOT(quit())); return app.exec(); } Компилируем через g++, и запускаем /qdutil/em/start /tmp/hello. Результат: Что бы запустить телнет сервер достаточно ввести комманду inetd Все в ваших руках — пишите, компилируйте, настраивайте, наслаждайтесь! Никто вам не мешает написать свой браузер на Qt или сделать из читалки роутер (паяльник никто не отменял), вобщем как всегда, где линукс, там и простор для экспериментов! В этой статье мы рассмотрели то, как из обычной читалке на базе линукса, можно сделать компьютер на базе линукс. (с) cyber-punk P.S. http://live.xakep.ru/blog/linux/1239.html - статья на Хакере
Статья понравилась. А вот по поводу читалки в апрельском номере Хакера есть целая статья про подобную вещь от Amazon. Вещь действительно стоящая и цена очень радует + бесплатный интернет почти по всему миру
Лучше планшет. У меня PocketBook 701 на Андроиде. Тут тебе и вай-фай и пдф и джвю и проч. Правда, лучше брать модель получше: у меня тач не ахти какой хороший. Но юзать можно.
Спасибо. Фишка в том что у амазонского ридера встроенная симка и интернет 3г на халяву! Платить не нужно, также можно jailbreak сделать и юзать читалку как модем. http://live.xakep.ru/blog/linux/1239.html - статья на Хакере