Author | Message |
---|
dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 06.10.2009 01:01 | |
| Здравствуйте, в этой теме libroom.net/viewtopic.php?t=11562 я пытался открыть доступ в интернет с устройства через usb. Нашел пару мест, где kindle выходит через амазоновский прокси, вроде решение нашел, но, как на зло, закоментировал слишком много строчек в конфиге Девайс перестал загружаться... Залез в загрузчик и доломал все окончательно Теперь я остался без корневой файловой системы (ядро пишет что не может определить ее тип) и kindle dx превратился в 3,3 Гб флешку. Такое положение вещей мне совсем не нравится (ну а кому бы понравилось?) По сему прошу помощи. Один китайский господин вернул к жизни устройство после тех же самых манипуляций. Даже обещал мне помочь, но месяц назад скрылся и больше не появляется. Действия по восстановлению он описал таким образом: 1. Выяснить пароль от mmc0 2. Из recovery menu экспортировать mmc0 3. Создать новую файловую систему на этом разделе и залить на нее образ от другого устройства.
Таким образом хочу попросить у владельцев "живых" kindle dx пару образов. образ загрузчика (чтобы пароль сгенерировать) и образ корневой фс.
Как образы сделать, если нет ни у кого до сих пор, расскажу. Бэкапы - они всегда нужны (теперь-то я точно знаю) Тем более, что уже не один я такой, кто систему "завалил", а еще сколько будет?
Помогите, люди добрые... |
| | | DrManual Член клуба The eBook
Joined: 28 Dec 2006 Posts: 458
Location: Москва
| Posted: 06.10.2009 13:06 | |
| Пишите как сделать "образ" если не сильно тернисто - постараюсь |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 06.10.2009 20:29 | |
| О, спасибо!
1. Нужно Включить usbnetwork Здесь http://www.mobileread.com/forums/attachment.php?attachmentid=31008&d=1 245552146 лежит update в котором, есть busybox После установки этого update в корне вашего раздела, доступного по usb появится каталог usbnet В каталоге есть файл usbnetwork - это скрипт который запускает сервисы ssh и telnet. В скрипте нужно поменять HOST_IP - на любой ip адрес, KINDLE_IP на адрес в той же подсети Пример: HOST_IP=192.168.1.1 KINDLE_IP=192.168.1.2 по желанию можно закоментировать (# в начале строки) запуск telnet
скрипт будет выглядеть вот так
Code: | #!/bin/sh
# Tweak these to match your setup HOST_IP=192.168.1.1 KINDLE_IP=192.168.1.2
U=/mnt/us R=$U/usbnet
# Check if we already have ethernet gadget driver running lsmod | grep g_ether > /dev/null && exit 2
# Unload mass storage gadget and load ethernet one rmmod g_file_storage || exit 1 modprobe g_ether host_addr='EE4900000000' dev_addr='EE1900000000' || exit 1 ifconfig usb0 ${KINDLE_IP} || exit 1 route add default gw ${HOST_IP}
# start telnet & ssh daemons #$R/busybox telnetd $R/dropbear
exit 0
|
Сохраняем файл и Перезагружаем устройство.
Нажимаем HOME. В поиске (можно любую клавишу нажать, выползет поисковое меню) набираем строку ;debugOn нажимаем ввод ищем еще раз только теперь `usbNetwork (знак ` - это не то же самое что ') нажимаем ввод
Подключаем устройство к компьютеру через usb После этого у Вас дожен обнаружиться новый сетевой интерфейс. Дальше, в зависимости от операционной системы, либо устройство найдет драйверы (как это делает linux и MacOS) либо нужно подсунуть драйвер (для Windows XP у меня где-то есть) На новом сетевом интерфейсе забиваем вручную адрес, который указали в HOST_IP Далее через любой эмулятор терминала (опять надо знать какая ОС: в *nix тут и говорить нечего, в Windows самый популярный Putty http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe) заходим на kindle
ssh 192.168.1.2 пользователь, естесстно, root пароля нет.
Если видим такую вот картинку
Code: | ################################################# # N O T I C E * N O T I C E * N O T I C E # ################################################# Rootfs is mounted read-only. Invoke mntroot rw to switch back to a writable rootfs. #################################################
|
Значит все получилось
Чтобы вернуться в нормальный режим (когда при подключении открывается fat раздел с книгами) просто перезагрузитесь.
Это была самая трудная часть
Если это Вас не испугало, буду писать дальше. И еще, сориентируйте меня, пожалуйста, по поводу "нужно писать подробнее" или "быстро и по существу"
Last edited by dr_g100k on 09.10.2009 10:32; edited 1 time in total |
| | | DrManual Член клуба The eBook
Joined: 28 Dec 2006 Posts: 458
Location: Москва
| Posted: 07.10.2009 15:30 | |
| Извините, но мои кривуки точно такие манипуляции не осилят. Жаль, что потратили столько времени. Но может более рукастые откликнуться. |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 09.10.2009 10:27 | |
| Эх, жаль. Буду ждать кого-нибудь ещё. Если кто-то зайдёт по ssh покажите, пожалуйста, здесь вывод команды mount Дальше смогу написать только после этого. |
| | | boroda Developer
Joined: 03 Jul 2003 Posts: 6203
Location: США
| Posted: 09.10.2009 15:26 | |
| dr_g100k
Сделайте лучше update script, это будет намного проще запустить. Я бы все для вас сделал, но на руках нет KDX.
Возьмите обычный шрифтовый апдейт, исправьте в нем update.sh, чтобы все, что вам нужно, дампить в /mnt/us
Таким образом пользователям нужно будет всего лишь выполнить псевдо-апдейт, а это большинство из них уже умеет.
У меня с того времени, когда игрался с KDX, остался дамп (там вывод файл-системы, плюс df-k, /proc/mounts, /proc/mtd, /proc/filesystems). Надеюсь, пригодится.
Code: | /proc/filesystems nodev sysfs nodev rootfs nodev bdev nodev proc nodev sockfs nodev pipefs nodev anon_inodefs nodev futexfs nodev tmpfs nodev inotifyfs nodev devpts ext3 nodev ramfs msdos vfat nodev nfs nodev rpc_pipefs nodev fuse fuseblk nodev fusectl ----------------------------- ----------------------------- /proc/mtd dev: size erasesize name mtd0: 00020000 00010000 "Bootloader1" mtd1: 00380000 00010000 "Kernel1" mtd2: 00008000 00002000 "BoardId" mtd3: 00020000 00010000 "Bootloader2" mtd4: 00380000 00010000 "Kernel2" mtd5: 00010000 00010000 "BootEnv" mtd6: 00020000 00010000 "Diags" mtd7: 00006000 00002000 "Vectors" mtd8: 00010000 00010000 "unused0" ----------------------------- ----------------------------- /proc/mounts rootfs / rootfs rw 0 0 /dev/root / ext3 rw,noatime,nodiratime,data=ordered 0 0 proc /proc proc rw 0 0 sysfs /sys sysfs rw 0 0 tmpfs /dev tmpfs rw 0 0 devpts /dev/pts devpts rw 0 0 rwfs /mnt/rwfs tmpfs rw 0 0 shm /dev/shm tmpfs rw 0 0 rwfs /var tmpfs rw 0 0 /dev/mmcblk0p2 /var/local ext3 rw,sync,data=ordered 0 0 fsp /mnt/us fuse.fsp rw,nosuid,nodev,user_id=0,group_id=0 0 0 /dev/loop/0 /mnt/base-us vfat rw,noexec,noatime,nodiratime,fmask=0022,dmask=0022,codepage=cp437,ioch arset=iso8859-1,utf8 0 0 ----------------------------- df -k before remount ----------------------------------- Filesystem 1k-blocks Used Available Use% Mounted on /dev/mmcblk0p1 408685 320763 71498 82% / tmpfs 63576 28 63548 0% /dev rwfs 32768 272 32496 1% /mnt/rwfs shm 63576 0 63576 0% /dev/shm rwfs 32768 272 32496 1% /var /dev/mmcblk0p2 33494 4211 27554 13% /var/local fsp 3560252 26940 3533312 1% /mnt/us /dev/loop/0 3560252 26940 3533312 1% /mnt/base-us -----------------------------------
|
|
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 09.10.2009 20:40 | |
| boroda wrote: | dr_g100k
Сделайте лучше update script, это будет намного проще запустить. Я бы все для вас сделал, но на руках нет KDX.
Возьмите обычный шрифтовый апдейт, исправьте в нем update.sh, чтобы все, что вам нужно, дампить в /mnt/us
Таким образом пользователям нужно будет всего лишь выполнить псевдо-апдейт, а это большинство из них уже умеет. [/code] |
Я уже подумал об этом, мне не хватало данных. Спасибо за дамп.
Теперь я знаю откуда начинать искать.
Ушел писать скрипт. |
| | | Nifty Искушенный участник форума
Joined: 07 Aug 2008 Posts: 59
| Posted: 11.10.2009 05:47 | |
| У меня есть KDX и usbnetwork установлен, и полный дамп fs есть, и сделал я его до того как начал ковырять девайс
Если еще надо - пишите, помогу чем смогу. |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 12.10.2009 10:25 | |
| Nifty wrote: | У меня есть KDX и usbnetwork установлен, и полный дамп fs есть, и сделал я его до того как начал ковырять девайс |
О, здОрово. Теперь меня жизнь научила, что при попадании нового устройства в руки первым делом нужно делать полный дамп
Чтобы по 10 раз скрипт не отлаживать, выложу его после того как восстановлю систему.
Но, сначала нужно выяснить пароль от mmc0
Выдерните, мне пожалуйста, загрузочное ядро
Code: | dd if=/dev/mtd/1ro of=image bs=1024 count=3584 dd if=image of=img.gz bs=1 skip=$((0x32a0)) gunzip img.gz dd if=img of=initramfs.cpio.gz bs=1 skip=$((0x14a40))
|
Не знаю каким образом человек выяснил смещения (если кто знает, просветите)
Если всё правильно, то, по идее, этот образ можно будет запустить через qemu-arm |
| | | Nifty Искушенный участник форума
Joined: 07 Aug 2008 Posts: 59
| Posted: 12.10.2009 21:41 | |
| dr_g100k wrote: | Не знаю каким образом человек выяснил смещения (если кто знает, просветите)
Если всё правильно, то, по идее, этот образ можно будет запустить через qemu-arm |
Подозреваю, что он просто искал в дампе сигнатуры gzip архивов
ЗЫ: добрался до kdx, ковыряюсь... |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 13.10.2009 09:45 | |
| Образы все получил, БОЛЬШОЕ СПАСИБО Nifty
Сегодня попробую 2 варианта восстановления: 1. Через скрипт, который создаст заново файловую систему на корневом разделе и запишет все файлы 2. Попытаюсь экспортировать устройство mmc0, а дальше вручную создам файловую систему и перепишу файлы Хотел попробовать первый вариант вчера ночью, но под рукой не оказалось linux, а ни Снежный леопард, ни Солярис не умеют создавать файловые системы ext2, так и пришлось ставить ubuntu на макбук. |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 14.10.2009 11:49 | |
| Как я выяснил пароль от коневого раздела. Для начала распаковал образ initrmfs, который предоставил Nifty внутри есть /bin/recovery-util - это как раз та программка, которая выполняет следующие действия: recovery menu 1. Открывает в мир mmc0 (корневой раздел) 2. Стирает mmc0 3. Инициализирует, размечает и форматрует флешку. 4. Открывает в мир fat раздел 5. Совершает update коренвого раздела при наличии rootfs.tar.gz на fat разделе
Удивительно, что в initramfs нет способа создавать файловые системы ext2, зато есть mkdosfs так что в случае пункта 3 recovery menu отформатируется только fat раздел. Мне это не совсем понятно, но сэкономленные байты разработчиками амазона отметают возможность п.1 из моего прошлого поста. Остаётся выяснить пароль у recovery-util. Запускаю программу в терминале (№1) через эмулятор qemu-arm параметры: -L initramfs каталог с распакованной initramfs -g 1234 сервер отладчика localhost:1234
Code: | $ qemu-arm -L initramfs -g 1234 -cpu arm1136 initramfs/bin/recovery-util
|
В другом терминале (№2) запускаю gdb надо только найти (или собрать) gdb, который умеет работать с arm elf, тот который для x86 не подойдёт
Вывод писать не буду, только ввод.
Code: | $ gdb (gdb) b * 0x128d8 (gdb) b * 0x128e8 (gdb) continue
|
Здесь я поставил точки останова на входе в функцию получения серийного номера и функцию проверки пароля
В терминале №1 вхожу в recovery menu, выбираю Export mmc0 ввожу чего-нибудь и нажимаю ввод. Программа остановилась на первой точке в терминале №2
Смотрю адрес, на который указывает регистр процессора r0 и вписываю по этому даресу серийный номер kindle dx это тот который на задней крышке с B004 начинается.
Code: | (gdb) info reg - Выяснить на какую ячейку указывает r0 (к примеру там 0x12311) (gdb) set{char}0x12311='B' - Записать по этому адресу (gdb) set{char}0x12312='0' ... ит.д. весь номер (gdb) x/sw 0x12311 - проверяю, нет ли ошибки (gdb) continue
|
С gdb имел дело впервые, так что если есть возможность записать строку сразу, а не каждый char в отдельности, поделитесь, пожалуйста. Я сначала решил {char*} но gdb мне сказал, что если хочешь указатели, будь добр найди мне malloc
Далее программа останавливется на 2 точке. Сравнение введенного пароля с эталонным, на который указывает регистр sp
Code: | (gdb) info reg - Адрес в регистре sp (к примеру 0x43212) (gdb) x/sw 0x43212
|
В появившейся строчке пароль, начинается он всегда на fiona, а дальше 4 шестнадцатиричные цЫфры. |
| | | igorsk Developer
Joined: 12 Jan 2007 Posts: 619
| Posted: 14.10.2009 12:05 | |
| Выложи recovery-util, посмотрю, как генерируется пароль. |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 14.10.2009 16:42 | |
| igorsk wrote: | Выложи recovery-util, посмотрю, как генерируется пароль. |
ОК домой вот попаду. по ldd ещё библиотека нужна, её тоже скину.
Добавлено спустя 3 часа 55 минут 33 секунды:
recovery-util |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 15.10.2009 10:06 | |
| Сегодня, в 03:24 мой kindle dx, после 2ух месячного молчания, вновь произнёс "Wellcome to kindle" голосом некоего Тома. УРА! (Голос, я, кстати, сразу поменял на Саманту ) Пришлось, правда, поковыряться. Первым делом отформатировал корневой раздел (после того как открыл mmc0 через usb) Разделов оказалось аж 4 штуки, ядро искало корень на первом, поэтому отформатировал 1
Code: | # mkfs.ext3 /dev/sdc1 - Форматирую # mount /dev/sdc1 /mnt - Монтирую # mkdir -p /mnt/mnt/{us,base-us,rwfs} - Небыло в архиве, так что сделал сам # cd /mnt && tar -vxf ~/rootfs.tar.gz - Распаковал образ
|
После перезагрузки стартовые скрипты отформатировали, подключили и настроили все остальные разделы. Но вот /etc/rc5.d/S95framework ну никак не желал стартовать и уводил устройство в циклическую перезагрузку. Мало того, логов он никаких не выдавал (или я их не смог найти) удалил этот скрипт, система показала login Это уже что-то. Ещё одно устройство: /dev/fb/0 отказывалось работать создал его заново, заработало
Code: | # mknod c /dev/fb/0 29 0
|
Потом запустил вручную конечный скрипт framework
Code: | # /opt/amazon/ebook/bin/start.sh start
|
На экране устройства появился юзергайд Восстановил загрузочный скрипт, и, не долго думая и выясняя почему же на старте скрипт не срабатывал, я сделал factory reset Закрутилось, завертелось и на экране появилось письмо Thank you.
Всем спасибо, готов ответить на Ваши вопросы. |
| | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 18.10.2009 23:07 | |
| Скрипт, который вытаскивает файловую систему лежит Здесь. У меня вытаскивалась около часа. Запускать только через Update Your Kindle, через перезагрузку не работет. Уважаемые господа, у кого зарегистрированный kindle dx, не могли бы закинуть куда-нибудь образ вашей системы для анализа? |
| | | REALexMSG Член клуба The eBook
Joined: 01 Sep 2005 Posts: 23302
Location: Москва, Россия
| | | | dr_g100k Зрелый участник форума
Joined: 15 Aug 2009 Posts: 31
| Posted: 19.10.2009 09:54 | |
| REALexMSG wrote: | dr_g100k я могу вытащить - только если не сложно по шагам действия опишите... |
О, замечательно! Подключаете kindle через usb к компу. бросаете в корень открывшегося раздела вот этот файл, отключаете устройство. потом нажимаете Home потом menu выбираете Settings ещё раз нажимаете menu выбираете Update Your Kindle ждёте около часа (очень долго, я по началу подумал что всё зависло). Когда устройство САМО перезагрузится подключаете его по usb в корне вместо того файла, который вы скопировали появится файл rootfs.img.gz размер 300~400 мегабайт. одну копию себе сохраните (мало ли чего). Потом мне в личку постучитесь, я скажу куда файл выложить. |
| | | Nifty Искушенный участник форума
Joined: 07 Aug 2008 Posts: 59
| Posted: 19.10.2009 11:05 | |
| dr_g100k wrote: | О, замечательно! Подключаете kindle через usb к компу. бросаете в корень открывшегося раздела вот этот файл, отключаете устройство. ................. |
Тьфу, и почему я не догадался здесь спросить |
| | | REALexMSG Член клуба The eBook
Joined: 01 Sep 2005 Posts: 23302
Location: Москва, Россия
| | | |
| You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
© Libroom, 2021
|