Разбираем и модифицируем прошивку, собираем ядро для HMNHD CE
Все приведенные ниже действия будут выполняться в ОС Debian. Я ставил себе минимальный образ в 40 Мб на Virtualbox и доустанавливал необходимые пакеты. Так же необходимо будет поставить стандартные пакеты кросc-компиляции для Debian (описание установки здесь)
Модифицируем прошивку.
Скачиваем прошивку с оф. сайта, которую будет препарировать.(для примера эту).
# openssl enc -d -aes-128-cbc -in hmnhd-3.1.14.995.tgz -out hmnhd-3.1.14.995-decrypt.tgz -k EMCNTGSOHO
распаковываем:
# tar xzvf hmnhd-3.1.14.995-decrypt.tgz
В итоге мы получим все файлы прошивки. initrd и zImage являются пакетами uboot. apps и oem - обычными образами.
Смонтируем initrd в какую-нибудь папку.
Для начала вычленим архив:
# dd if=initrd of=initrdimg.gz bs=1 skip=64
распакуем:
# tar xzvf initrdimg.gz
монтируем:
# mount -o loop initrdimg /tmp/initrd
Теперь мы можем менять файлы в данном разделе.
После изменения всех файлов делаем umount /tmp/initrd
Пакуем обратно:
# gzip -v6 initrdimg
Далее необходимо создать образ uboot. Для этого нам понадобится mkimage из пакета uboot-evntools:
# apt-get install uboot-mkimage
Соберем образ:
#mkimage -A arm -C gzip -O linux -T ramdisk -d initrdimg initrd.uimg
Этот initrd.uimg мы теперь можем записать непосредственно на диск в NAS (команду выполнять на устройстве)
# dd if=initrd.uimg of=/dev/sda bs=512 seek=16674 (разметку см. здесь)
Если вы захотите собрать прошивку обратно например для восстановления с USB-флешки, то вам необходимо будет посчитать хеш MD5. Для этого создайте скрипт:
img = initrd
md5=$(md5sum $img)
md5=${md5% *}
md5=${md5%}
echo "$md5" > $img.md5
Компиляция ядра.
Скачайте последние исходники. В них есть папка kernel/2.6.31.14, в которой находятся патчи.
Распакуйте исходники ядра и примените к ним указанные патчи. ВАЖНО: первым необходимо применить самый большой патч *1.1g* т.к. с помощью него записываются все библиотеки платформы ox820.
Проблема компиляции ядра в том, что iomega не выложила конфиг файл для hmnhd ce. Пришлось подбирать его самому на основе дефолтного для ox820. Скачать мой конфиг можно здесь.
Как ядро, так и initrd можно непосредственно записать в устройство командой dd, либо через USB-флешку (см. скрипты в initrd)
Комментарии
Отправить комментарий