Jump to content
XPEnology Community

Fox_exe

Transition Member
  • Posts

    7
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Fox_exe's Achievements

Newbie

Newbie (1/7)

0

Reputation

  1. Собственно, это я и есть. hda1.tgz вообще не трогал, ядро тож почти без изменений (Только поправил нумерацию портов gpio и сети). Ещё воткнул-таки synobios-пустышку (Отвечает на все запросы DSM параметрами по умолчанию)... В общем, работает. Что интересно - в synobios есть функция получения температуры проца/системы, но DSM не запрашивает эту инфу из него, а вполне корректно лезет сразу в драйвер hwmon (mv_temp вроде) Как я и говорил - портануть DSM на ARM девайсы не проблема. Особенно если проц такойже, как в одном из девайсов Synology.
  2. Да, в ядре хватает изменений. Но это все чистая косметика. Arm сборки (я пробовал DS212j, 214, 414j) заводятся вообще со стоковым ядром от WD (Стоковое ядро + поддержка железа WD (arch/CPU, gpio-led, spi-flash). Никаких доп. правок.). Косяк был только с Samba (Из-за synoacl). Ну и index.cgi отправлял систему в ребут, т.к. не мог получить данные от synobios. Тоесть система спокойно работает на почти стоковом ядре. Из изменений - правки в synoinfo.conf, модули от моего ядра, мелкие правки в скриптах инициализации, пропатченный index.cgi. Synobios вообще отсутствует. Пока ковырял ядро для портирование на другой девайс понял, что изменений там не так уж и много: Алиасы для модулей шифрования (хз, зачем - и так работает) Добавлены либы/драйвера расширенной криптографии OCF Linux Мелкие правки в драйверах устройств, чтобы они определялись так, как надо самой Synology. Много павок в btrfs (По большей части - бэкпорт с более старшей версии ядра). Synoacl (Дополнительный бит доступа) И правки в платформо-зависимых секциях + компоненты Synobios (Доступ к разным данным системы через /sys и /proc). + Правки в драйверах mtd, т.к. у большинства arm все настройки, вроде Mac и серийника хранятся на тойже флешке, что и загрузчик с ядром. + поддержка самой флешки, разумеется.
  3. Собственно, он и не нужен. По крайней мере на ARM... Сама DSM общяется с железом через synobios и моификации в ядре. Модификации в ядре перенести на другое ядро не проблема (При должном знании C++). Synobios можно вообще написать с нуля (Список функций получить легко, список правильных "Ответов" тоже можно подсмотреть). Есть даже готовый модуль-заглушка, в который лиш требуется дописать платформо-зависимые фичи. К примеру - Мне потребовалось лиш подменить нумерацию Gpio в ядре, чтобы оно спокойно загрузилось. Плюсом - написал свой скрипт "updater" (т.к. родной наверняка перезапишит загрузчик, что может кончится весьма плачевно). Всё. Система работает! Даже Synobios спокойно определил девайс как DS213j (WDMyCloud Mirror изначально) При портировании DSM5 на WDMC (gen1) я пошёл немного другим путём - выкинул из ядра Synology всё платформо-зависимое и сравнил оставшееся с ядром WD. Заработало с 5й попытки... Почти полноценно. Причём тут я вообще без Synobios всё завёл - Но пришлось немного поправить загрузочные скрипты и пропатчить inex.cgi (Спасибо Vortex'у), который падал, пытаясь получить данные от synobios. Если чуть проще - Synology в своё ядро добавили только SynoACL (Требуется для Samba, FTP и других файловых служб. Теоритически можно забить, подменив исполняемые файлы указанных служб на собранные вручную из обычных исходников). Всё остальное - поддержка особенностей своего железа. Synobios тут как посредник используется. Программная прослойка. В частости в ARM нет управления питанием. За это отвечает MicroP (Специальный микроконтроллер, управляемый через UART). Онже реализует поддержку спящего режима и WOL. Иногда через него реализуют термоконтроль и управление вентилятором (Если проц сам не умеет). Кароче - теории я набрался по самое нехочу, но вот реализовывать на практике все эти фичи выходит с трудом - я не прогер и C++ знаю лиш на уровне общего синтаксиса с другими ЯП. Нужны прогеры, желательно знакомые с написанием модулей ядра (Хотя и это не особо требуется - по ядру доков море, а примеров того, что мне нужно в сети валом - от RaspberyPI и всяких Arduino. Мне просто знаний самого C++ нехватает для реализации)
  4. Не понимаю, зачем все ковыряют ядро Synology, когда можно взять список изменений (.diff), выкинуть из него платформо-зависимый код и спокойно накотить, что останется на (почти) любую версию ядра. Собственно, с этим я сейчас и эксперементирую. Правда я нефига не прогер, такчто хз, что получится Платформо-зависимый код - это почти 80% всех изменений (То, что в ветке /arch). В лучшем случае оттуда можно оставить gpio либы, чтобы DSM могла обращятсья к вентиляторам, светодиодам и прочей переферии через свои костыли. Хотя на работу системы это не влияет. ocf, crypto-linux - исключительно для arm девайсов и на томже х86_64 нафиг не сдались. (~10% кода) dwc-otg - Вообще используется только Comcerto (arm). Тоесть в сухом остатке - aufs, btrfs (конкретно допилен), да SynoACL (Требуется для Samba, FTP и чего то ещё). Всё остальное можно смело выкидывать на мусор. Ну и, конечноже, всё, что связано с synobios. Хотя код этого модуля частично есть в наличии (synobios dummy module). Можно дописать, добавив все нужные системные вызовы. По факту - оставить внутри лиш "заглушки". В идеале - переписать так, чтобы этот модуль брал все данные из нормальных мест - из /sys например и из стандартных драйверов) *** Вот такой патч получился. Возможно потребуется допилить чегонить ещё.
  5. Забавно, что в сорцах для arm девайсов никакой защиты нет вообще - на WDMyCloud Mirror заставил работать поменяв в ядре буквально 20 строк (под особенности железа). И всё. Ни рамдиск, ни образ самой системы не трогал. Только заменил updater в pat файле, дабы он u-boot не заменил на загрузчик synology. Кстати, инфы по "Взлому" чёт маловато. Может стоит создать темку со всей инфой по особеностям ядра и прочего? Да и переписать synobios тож не помешает, т.к. он отвечает за некоторые "Жлезные" фичи, вроде управления светодиодами, вентилятором и прочей перефирией (Хотя ядро линукса и так всё это умеет и для x86_64 synobios по сути является только прослойкой между фичами ядра и DSM. Вообще я ещё много чего могу рассказать про DSM... Но интересно ли это комуто ещё кроме меня?
  6. Чисто технически - портануть можно. Но весьма геморно (Сейчас портирую на WD MyCloud. Пришлось пол-загрузчика переделать (Ядро + initrd)) Если делать "Правильно" - нужно перенести некоторые патчи ядра SYnology в ядро вашего девайса (Хотя по факту вы только в Synobios уткнетесь). Либо как я - ядро родное, но часть скриптов в initrd перепилена под девайс.
×
×
  • Create New...