К основному контенту
Разбираем и модифицируем прошивку, собираем ядро для 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)




Комментарии

Популярные сообщения из этого блога

C++. Создание динамически подключаемой библиотеки so с помощью CMake

Мини инструкция, т.к. потратил пару часов на разрозненной информации. Библиотека. Обязательно пишем extern "C". Если не указать, то компилятор добавит символы к имени и функция dsym не найдет ничего. #ifdef WINDOWS #define EXPORT extern "C" __declspec(dllexport) #else #define EXPORT extern "C" //__attribute__((visibility ("default"))) #endif // WINDOWS EXPORT int Add(int a, int b) { return a + b; } Программа в которой загружаем библиотеку #ifdef WINDOWS #define IMPORT __declspec(dllimport) IMPORT int Add(int a, int b); #else     #define IMPORT     #include <dlfcn.h> #endif // WINDOWS #include "TestLinuxSharedLib.h" using namespace std; int main() { #ifndef WINDOWS     void* handle;     int (*cosine)(int,int);     //void* cosine;     char* error;     handle = dlopen("./libMySharedLib.so", RTLD_NOW);     if (!handle) {         cout << "not found libMySharedLib.so" &l
Продвинутая настройка и установка дополнительного ПО  на NAS Iomege Home Media Network Hard Drive Cloud Edition Этот пост открывает серию статей по установке дополнительного ПО на NAS   Iomege   Home   Media   Network   Hard   Drive   Cloud   Edition (HMNHD CE). Характеристики устройства можно посмотреть  здесь .  Там же  можно посмотреть начальную разметку дисков и др. сведения необходимые для модификации ПО. ВАЖНО!!! Все описанные действия могут привести к потере доступа к диску и придется восстанавливать доступ по инструкциям  отсюда . Физически испортить устройство описанными действиями вы не сможете, т.к. в устройстве прошивка хранится не во флэш памяти, а непосредственно на самом жестком диске.  Для начала нам понадобится доступ к устройству через ssh. Для его включения необходимо в строке адреса браузера набрать: https://[nas ip]/diagnostics.html и поставить галочку " Разрешить удаленный доступ для поддержки (SSH и SFTP)":
Стандартные способы восстановления ПО HMNHD CE, предусмотренные разработчиком.  Загрузка Linux происходит в несколько этапов. Сначала находится загрузчик, который загружает ядро Linux в память и инициализирует диск initrd. Далее вызывается скрипт linuxrc, в котором монтируются остальные файловые системы и происходит загрузка основной ОС. Разработчики встроили в скрипт linuxrc возможность восстановления с USB флешки. Если у вас не повреждены ядро и диск initrd (не перезаписаны неработающими версиями), то вы можете восстановитель ОС выполнив ряд простых действий. 1. Отформатировать USB флешку в файловую систему FAT. 2. Создать на флешке путь: /emctools/hmnhd_images Далее есть две опции, которые можно использовать как раздельно так и вместе 3.1. С распаковкой из архива. 3.1.1. Скачиваем архив  imager_3.1.14.995.tgz  (предоставленный пользователем  Mijzelf  в  теме  восстановления  устройства   )и записываем его в папку  /emctools/hmnhd_images 3.2. Без распаковки из а