Инструкция по сборке ядра для устройств D-Link DSL-xxxT на базе чипсета TI AR7.... ВАЖНО! Данная инструкция расчитана на специалистов в этой области, если вы не уверены или просто заняться нечем и решили поиграться над своим устройством, сразу советую этого не делать. Автор не дает каких-либо гарантий и не может отвечать за ваши действия, поэтому подумайте несколько раз стоит ли вам этим заниматься! Автор так же не будет отвечать на глупые вопросы, как установить патч, почему что то не собираеться и т.п.. 0) Установить Linux, т.к. проще будет вести разработку и все ниже описанные действия описываются только для Linux. Возможно, что все это можно проделать под Windows с установленным Cygwin, но автор этого никогда не делал:)... 1) Необходимо установить кросскомпилятор для MIPS процессоров, типа mipsel. Для этого необходимо скачать CD образ MontaVista Linux Preview Kit с http://www.mvista.com/previewkit/index.html , размер образа около 600Мб, либо можно взять готовый неофициальный мини-дистрибутив кросскомпилятора от MontaVist для mipsel с http://mcmcc.bat.ru/dlinkt/cross_gcc-mipsel.tar.bz2 , который нужно развернуть в главном корневом каталоге /, после расспаковки кросскомпилятор должен будет находится в директории /opt/hardhat/previewkit/mips 2) Скачать выложенные GPL исходники D-Link для устройств DSL-xxxT с ftp://ftp.dlink.ru/pub/ADSL/GPL_source_code , можно выбрать любой, т.к. они полностью одинаковые не смотря на различие в названиях. Они вам могут понадобиться для дальнейших работ или просто для коллекции:)... 3) Взять рабочее переработанное ядро с http://mcmcc.bat.ru/dlinkt/kernel: linux-2.4.17_mvl21_mc.tar.bz2 либо патчи: 00_121104_montavista_2.4.17.patch.bz2 - для родного ядра от MontaVista Linux Preview Kit 01_121104_ti_ar7_dlink_2.4.17.patch.bz2 - для ядра из исходников D-Link с наложеным патчем linux-2.4.17_mvl21-12_05_03.diff.gz 4) Разворачиваем исходники ядра linux-2.4.17_mvl21_mc.tar.bz2 в какое-нибудь удобное для нас место, либо накладываем соответствующие патчи на уже установленные исходники ядра от MontaVista или из исходников D-Link. 5) Собираем 2-е утилиты lzma и tichksum, исходники этих утилит находятся в scripts/lzma и scripts/TI-chksum-0.1. В начале собираем lzma, для этого заходим в директорию scripts/lzma/SRC/7zip/Compress/LZMA_Alone и даем команду make, полученый после компиляции файл lzma копируем в директорию /usr/local/bin, естественно она должна быть прописана в PATH, если ее нет в PATH, то делаем експорт: export PATH=$PATH:/usr/local/bin Следующим этапом собираем утилиту tichksum, заходим в директорию scripts/TI-chksum-0.1 и тоже даем команду make, полученный файл tichksum копируем в директорию /usr/local/bin, куда ранее копировался lzma 6) Делаем експорт в PATH для нашего кросскомпилятора: export PATH=$PATH:/opt/hardhat/previewkit/mips/fp_le/bin Если вы не находитесь в директории исходников ядра, то самое время туда переместиться, как только вы там оказались, даем команды make oldconfig /* Может возникнуть вопрос про MULTIPLEX_LED, ответим NO */ make dep make ram_zimage Если все сделано правильно, то на выходе дожны получить собранное ядро в виде файла ram_zimage.bin в этой же директории, откудова давали эти команды. При необходимости можно собрать модули ядра, если они вам интересны: make modules 7) Над полученным имиджем ядра ram_zimage.bin проделаем следущие операции: dd if=/dev/zero of=block ibs=1024 count=1 cat block >> ram_zimage.bin tichksum ram_zimage.bin На этом можно считать, что кернел имидж прошивки для D-Link DSL-xxxT готов к использованию, теперь его можно спокойно залить через web менеджер управления устройством... 8) Возможно, что после прошивки этого ядра ваше устройство не подыметься, это будет заметно по отсутствию индикации кроме "Power", тут только поможет вариант восстановление работоспособности устройства через сервисный ftp сервер ADAM2, который встроен в это устройство, по этому делу написан мини HOWTO: ---------------- Recovery HOWTO: URL: http://www.dlink.ru/phorum/viewtopic.php?t=6143 Bо всех модемах от D-Link имеется сервисный FTP сервер ADAM2 с ip адресом 10.8.8.8, в линуксе я просто поднял сабинтерфейс eth0:1, от рута естественно: [root@mcmcc root]# ifconfig eth0:1 10.8.8.7 up Далее запустил ftp клиента на ip 10.8.8.8 [igor@mcmcc igor]$ ftp 10.8.8.8 После этого включил модем с нажатым ресетом и затем отпустил, через несколько секунд получил приглашение и проделал все так, как в листинге ниже: Connected to 10.8.8.8. 220 ADAM2 FTP Server ready. 530 Please login with USER and PASS. 530 Please login with USER and PASS. KERBEROS_V4 rejected as an authentication type Name (10.8.8.8:igor): adam2 331 Password required for adam2. Password: adam2 230 User adam2 successfully logged in. Remote system type is UNIX. ftp> debug Debugging on (debug=1). ftp> bin ---> TYPE I 200 Type set to I. ftp> quote MEDIA FLSH ---> MEDIA FLSH 200 Media set to FLSH. ftp> put fs.img "fs.img mtd0" local: fs.img remote: fs.img mtd0 ---> PASV 227 Entering Passive Mode (10,8,8,8,162,0). ---> STOR fs.img mtd0 150 Opening BINARY mode data connection for file transfer. 226 Transfer complete. 1318920 bytes sent in 30.3 seconds (54 Kbytes/s) ftp> quote REBOOT ---> REBOOT 221-Thank you for using the FTP service on ADAM2. 221 Goodbye. ftp> quit ---> QUIT Немного комментариев: debug я включил для наглядности, прежде чем дать команду quote MEDIA FLSH, обязательно стелайте установку в BINARY моду, т.е. команду bin, теперь про таблицу MTD, т.е. партиции на флеш диске: mtd0: fs имидж (для простоты я его перименовал в fs.img, который затем залил в устройство) mtd1: kernel имидж mtd2: сам сервисный ftp сервер ADAM2 mtd3: Environment + config.xml Environment находится в том же месте, где и config.xml, т.е. в начале перед config.xml... Да, кстати, не рекомендую по этой пречине зашивать таким способом config.xml, иначе попортится область environment, в dlink'ах для записи config.xml происходит не на прямую в mtd3, а в устройство /dev/ticfg, которое делает пропуск начального блока в mtd3... (с) McMCC, 2004 -------------- P.S. Мне это приходилось часто делать, когда разбирался с ядром, правда не приходилось нажимать на RESET, т.к. устройство само в таком случае активизировала работу сервисного ftp. Кернел имидж заливается только на mtd1 и не на какое-либо другое устройство!!! ADAM2 являеться неким подобием BIOSа, имеет встроенный ftp сервер, консоль и может работать c BOOTP... Много полезной информации взято отсюда: http://www.akk.org/~enrik/fbox/recovery.txt 9) Основные отличия этого ядра от официального: - Поддержка MPPE - Поддержка PTY устройств 10) Что было сделано в этом ядре: Данное ядро базируется на исходниках от D-Link'а с некоторыми доработками: - Заменен декомпрессор ядра gzip на lzma - Обновлены MTD драйвера и переписан модуль работы с картой памяти флеш диска, до этого было очень медленное чтение и запись - Починена индикация статуса Ethernet - Добавлена поддержка MPPE для PPP =========================== Moscow, 12.11.2004 Mokruchin I.V. aka McMCC mcmcc@mail.ru ===========================