Enigma изнутри |
Содержание Шпаргалки по внутренностям Энигмы:
Как посмoтреть лог эмулятора
Первейшим помощником при настройке эмулятора/кардсервера/клиентаCS является его же лог запуска/работы.
В подавляющем большинстве случаев лог подопытного софта можно посмотреть, запустив его ручками в телнет-сессии, но такой способ не очень удобен (и, как правило, эму нужно сначала "убить" - а это не всегда тривиально) и часто неприемлем по ряду причин - в общем, тут требуется отдельная статья FAQ.
Ниже будет рассмотрена имплементированная во многих современных эму/CS возможность просмотра лога по протоколу UDP.Вкратце - специальным образом настроенный софт непрерывно "пуляет" протокол своей работы на UDP порт по некоему адресу (IP) - назовем его клиентом лога. Клиент лога - компьютер, на котором запущена соотвествующая программа, принимающая сообщения с этого самого UDP порта и интерпретирующая его в обычные текстовые сообщения - искомый лог.
Плюсы такого способа - лог передается непрерывно, посмoтрeть его можно в любой момент, запустив на клиентском компьютере программу-логгер, при этом с дримбоксом не нужно устанавливать телнет-сессию и вообще вмешиваться в его работу. Он просто должeн быть on-line. Кстати, таким образом очень удобно смотрeть лог на удаленном (очень удаленном) дримбоксе - например, помогая кому-то настраивать его долбаный шаринг.Сразу о программе-логгере для Windows машин (юниксоиды и сами с усами как смотреть лог от к примеру того же syslogd - тут все также) - называется 3CSyslog - 3com Syslog Message Daemon. Качать тут: http://support.3com.com/software/utilities_for_windows_32_bit.htm
Распаковать, инсталлировать, запустить и пользоваться - никаких настроек не требуется.Настройка "подопытного софта" обычно сводится к правке его конфига с целью включения возможности UDP-логгинга.
Примеры.
mgcamd - файл mg_cfggbox - файл gbox_cfg# Log options # 00 Off (default) # 01 Network # 02 console # 03 both L: { 01 } 666.666.666.666 514evocamd - файл camd_cfg# Trace/Debug # xx yz ; xx=00 no konsole output # xx yz ; xx=01 konsole output # xx yz ; y=0 debug output (don't use) # xx yz ; y=1 no debug output # xx yz ; z=0 ouput to konsole # xx yz ; z=1 output to /var/tmp/debug.txt # xx yz ; z=2 Output to UDP (to capture with gboxt) Z: { 00 12 } 666.666.666.666 514camd3 - файл camd3.config# To use UDP log # 00 disabled # 01 enabled L: { 00 } 666.666.666.666 514newcs - файл newcs.xml# Log(optional): 0 - keine Ausgaben, 1-Datei, 2 - Console, 4 - UDP(syslog), 3 - Console+Datei, 5 - UDP+Datei, 6 - UDP+Console, 7-UDP+Console+Datei; Default ist 2; LOG=4 # Host fьr UDP-logging LOG_HOST=666.666.666.666 # Port fьr UDP-logging(optional); Default ist 514 LOG_PORT=514<debug>
<level>spam</level>
<type>all</type>
<output>udp</output>
<logfile></logfile>
<console_options></console_options>
<file_options></file_options>
<udp_host>666.666.666.666</udp_host>
<udp_port>514</udp_port>
<udp_options>all</udp_options>
<tcp_port>3001</tcp_port>
<tcp_options></tcp_options>
</debug>Замечания.
1. Я нарочно выбрал недопустимый IP- адрес 666.666.666.666 - как дополнительный сигнал к тому, что настраивая свoй софт нужно не забыть подставить свое значение - IP компа, на котором будет просматриваться лог. В некоторых эму/CS допустимо использование не IP, а имени DNS.
2. В примерах указан стандартный UDP-порт syslog - 514. Дело в том, что не все программы-логгеры (в том числе и предложенная выше) позволяют логировать по другому порту.
В целях потакания паранойе (пардон - для повышения секретности) - нужно конечно изменить этот порт на более другой (значением на несколько порядков больше) и использовать софт, позволяющий настраивать этот самый порт.3. Ну и как всегда - при редактировании конфигов не забывайте, что строки, начинающиеся со знака диеза - # - являются комментариями и на работу софта никак не влияют.
Например, строка
#LOG_PORT=514
в камд3 может остаться закомментированной: будет использовано значение по-умолчанию - 514, что нам и нужно. Если же нужен другой порт - недостаточно изменить 514 на что-то другое, нужно не забыть убрать ведущий #
В файлах xml (см. newcs) комментарии выделяются так:
<!-- your comment here -->Автор: ВаняШ
http://allrussian.info/Планировщик заданий cron
Cron позволяет выполнять любые команды как по расписанию единоразово, так и с определенной периодичностью, заданной пользователем.
Примеры применения:
1. Восстановление ВПН соединения после обрыва провайдером в определеное время
2. Выключение, перезагрузка и пр. в определенное время
3. Синхронизацию системного времени тоже можно делать автоматически с заданным промежутком... и т.д.
Задания для Cron'а хранятся в /var/spool/cron/crontabs/root
Про синтаксис Crontab-файла (в нашем случае root) можно почитать тут http://athena.vvsu.ru/docs/unix/man/crontab.html http://www.codenet.ru/webmast/php/cron.php
Для включения Cron'а в Энигме в меню в Экспертных настройках снимите галку с пункта Disable Start Cron. После добавления задания в /var/spool/cron/crontabs/root для вступления его в силу желательно перезагрузить ресивер.Автор: Rhezus
http://satavto.by/forumИзменяем имидж для своих нужд
Небольшие ограничения: все нижесказанное делалось в отношении 7700. (Mutant 200S) Для 8000 (Relook 400S) все тоже самое с небольшими изменениями. Желающие могут сделать универсальное решение. Можно все сделать через make файл. Но меня что-то напрягало. ;) Я расскажу как, а кому надо сделают как им удобнее. Все под линукс.
Немного теории: Обычно выкладывают имиджи в виде двух файлов: kernel_root.img и db.img В начале присутствует usb_ или serial_ в зависимости от варианта заливки. По USB(сети) или COM-порту. В нашем случае за исходный берем usb_ имиджи. Serial тоже можно, но потребуется некоторая переделка. В результате получим и usb_ и serial_.
kernel_root представляет собой образ, совмещающий в себе ядро и файловую систему root. kernel нас не интересует, остается без изменений, нам нужен root.
root представляет собой файловую систему squashfs с компрессией LZMA. не совсем стандартное решение, изначально squashfs использует gzip. Соответственно понадобятся патчи.
db - файловая система jffs2. Поддержка этой системы в ядре обычно есть, но тонкость заключается в том, что в нашем случае образ сделан для big endian среды (процессор ppc), а интел системы изначально little endian. Соответственно потребуется конвертация.
Шаг 1. Распаковка имиджей.
Откусывает заголовок имиджа:
dd if=usb_kernel_root.img of=kernel_root.be.flash bs=4096 skip=1
В результате получаем файл kernel_root.be.flash.
Выкусываем root:
dd if=kernel_root.be.flash of=root.be.flash bs=64k skip=18
Получаем файл root.be.flash - файл образа файловой системы squashfs с компрессией lzma. Требуется распаковать. Об этом чуть позже. Число 18 имеет отношение к платформе. Для relook400s это число 20. Откуда берутся - могу рассказать отдельно, кому интересно.
Теперь о db.
Откусваем заголовок:
dd if=usb_db.img of=db.be.flash bs=4096 skip=1
Получаем файл db.be.flash. Конвертируем из big endian в little endian. Если у вас вдруг не x86 платформа с поддержкой big endian то конвертировать не надо. ;)
jffs2dump -b -e db.le.flash db.be.flash
Получаем файл db.le.flash. Его уже можно монтировать.
Грузим необходимые модули:
modprobe mtdcore
modprobe jffs2
modprobe mtdram
modprobe mtdchar
modprobe mtdblock
Создаем директорию:
mkdir ./db
Монтируем:
dd if=db.le.flash of=/dev/mtd0
mount -t jffs2 /dev/mtdblock0 ./db
Результат: В каталоге db получаем содержимое файловой системы db, которая монтируется в /var. Вносим необходимые изменения.
Теперь необходимо распаковать squashfs образ:
./unsquashfs-lzma -dest ./root root.be.flash
Образ распакуется в папку root. Тоже можем править по своему усмотрению. все что проделали в виде исполняемого файла с необходимыми бинарниками в аттаче. Где взять исходники и патчи - расскажу отдельно. Спрашивайте.
Внимательно следим чтобы не было ошибок после каждой команды. Необходимые пакеты ставим. Могу написать какие пакеты ставил я. У меня Debian (sid)
После всего надо упаковать.Шаг 2. Сборка имиджа после изменений.
Упаковываем root:
./mksquashfs-lzma ./root root.flash -be -all-root
Упаковываем db:
./mkfs.jffs2 -d ./db -b -e 65536 -o db.flash
Выкусывем kernel. Ядро то нам понадобится... :)
dd if=usb_kernel_root.img of=kernel_root.be.flash bs=4096 skip=1
dd if=kernel_root.be.flash of=part_kernel_root.flash bs=64k count=18
Фиксим размер раздела:
./appendbin -bs=0x2000 part_root.flash root.flash 448
Числа 18 и 448 для мутанта. Для relook400 20 и 528.
Собираем имидж DB:
./mkdnimg -make usbimg -vendor_id 0x00444753 -product_id 0x6c6f6f6b -hw_model 0x00010000 -hw_version 0x00010000 -start_addr 0xffce0000 -erase_size 0x002f0000 -image_name db -input db.flash -output usb_db.new.img
В результате получим usb_db.new.img
Собираем kernel_root
dd if=part_root.flash of=part_kernel_root.flash bs=8k seek=144 count=448
(для 400s - не 144 и 448, а 160 и 528, -start_addr 0xffda0000
-erase_size 0x00230000)
Собираем имидж kernel_root:
./mkdnimg -make usbimg -vendor_id 0x00444753 -product_id 0x6c6f6f6b -hw_model 0x00010000 -hw_version 0x00010000 -start_addr 0xff840000 -erase_size 0x004a0000 -image_name db -input part_kernel_root.flash -output usb_kernel_root.new.img
Получаем usb_kernel_root.new.img
Обращаю внимание, что в и для DB и для kernel_root для 400s:
-hw_model 0x00040000
-hw_version 0x00010001
-erase_size 0x00560000
Делаем serial имиджи:
./mkdnimg -make serialimg -model_name relook100s -input usb_db.new.img -output serial_db.img
./mkdnimg -make serialimg -model_name relook100s -input usb_kernel_root.new.img
-output serial_kernel_root.img
Для 400s: -model_name relook400
Вот и все. Здесь необходимые бинарники и скрипт с командами...Автор: S_N_G
http://www.satavto.by/forum/topic3782.htmlКак развернуть "чужой" имидж или для чего эти загадочные skip для мультибута
Идея мультибута существует достаточно давно. Поддержка загрузки нескольких имиджей со встроенного жесткого диска или из сетевого ресурса по NFS присутствует практически во всех последних версиях загрузчика u-boot. Часто нужно модифицировать корневую файловую систему или просто посмотреть что там внутри без прошивки аппарата. Об этом очень подробно описано здесь.
Но вопрос как "выкусить" эту файловую систему из имиджа? Ответ очень простой - поискать по строчке sqsh в файле образа и удалить все лишнее. Что собственно мультибут и делает для равертывания имиджа на диск. Величина смещения от начала файла имиджа и есть значение skip в блоках. Оставшееся количество блоков это есть count. А bs соответственно размер блока.
Вот небольшой скрипт для автоматизации действий. Сделав небольшие изменения в этом скрипте вы с легкостью узнаете параметры мультибута и что там писать в соответствующих параметрах. Хотя можно и без изменений, если размер блока 64 байт вас устраивает.
#!/bin/sh coarseoffset=0 fineoffset=0 ddskip=0 found="" img=$1 while test $coarseoffset -le 8388608 do echo $coarseoffset ddskip=`expr $coarseoffset / 64` dd if=$img of=test.img skip=$ddskip bs=64 count=256 2> /dev/null found=`grep -n sqsh test.img` if [ "$found" != "" ] then found=1 break fi coarseoffset=`expr $coarseoffset + 16384` done if [ $found -eq 1 ] then echo found echo $coarseoffset while test $fineoffset -le 16384 do echo $fineoffset dd if=test.img of=test1.img skip=$fineoffset bs=1 count=4 2> /dev/null found=`grep sqsh test1.img` if [ "$found" != "" ] then found=1 break fi fineoffset=`expr $fineoffset + 64` done fineoffset=`expr $fineoffset + $coarseoffset` echo $fineoffset ddskip=`expr $fineoffset / 64` rm -f test1.img test.img echo $ddskip dd if=$img of=rootfs.sqfs bs=64 skip=$ddskip fiВот пример работы скрипта
[redcore]$ ./unpack usb_all.UNOFFICIAL.PLi-Helenite.RELOOK.400S.img 105472+0 записей считано 105472+0 записей написано скопировано 6750208 байт (6,8 MB), 0,559015 c, 12,1 MB/c [redcore]$ ll rootfs.sqfs -rw-r--r-- 1 maxs nemo 6750208 Ноя 19 12:26 rootfs.sqfs [redcore]$ ./unsquashfs-3-lzma rootfs.sqfs Reading a different endian SQUASHFS filesystem on rootfs.sqfs created 579 files created 100 directories created 201 symlinks created 0 devices created 0 fifos [redcore]$ ll squashfs-root/ итого 56 drwxr-xr-x 2 maxs nemo 4096 Сен 18 23:14 bin drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 dev drwxr-xr-x 3 maxs nemo 4096 Окт 5 02:44 etc drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 hdd drwxr-xr-x 7 maxs nemo 4096 Окт 5 02:44 lib drwxr-xr-x 10 maxs nemo 4096 Июл 9 03:00 mnt drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 proc drwxr-xr-x 3 maxs nemo 4096 Сен 15 19:48 root drwxr-xr-x 2 maxs nemo 4096 Окт 5 02:44 sbin drwxr-xr-x 9 maxs nemo 4096 Июл 9 03:00 share drwxr-xr-x 2 maxs nemo 4096 Сен 18 23:07 sys drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 tmp drwxr-xr-x 2 maxs nemo 4096 Июл 9 03:00 var drwxr-xr-x 14 maxs nemo 4096 Окт 5 02:44 var_init [redcore]$Автор: redcore
Использованы материалы сайта http://www.satavto.by/forum/index.php