Я хочу рассказать вам, как можно расширить функциональность NAS-устройств под управлением Linux с помощью uClibc. Вполне возможно, что манипуляции с символическими ссылками и переменными окружения позволят вам добиться успеха там, где uClibc этого не делает. Я не буду рассматривать способы получения root-шелла.
Механизмов слишком много, все зависит от конкретной модели.
На сайт посвященный взлому NAS Обсуждаются различные способы получения root-шелла и приводятся ссылки на сайты сообщества для взлома конкретных моделей.
Цель этой статьи — показать, насколько легко добавить недостающую функциональность в NAS, и указать на некоторые подводные камни.
Прежде чем начать ломать копья, посетите сайт, посвященный вашему устройству — его можно найти в список хакерских сообществ NAS .
Там может быть не только важная информация, но и готовые бинарники, полезные советы и т.п.
В первую очередь нас интересует, как получить рут-шелл.
Второй содержит версии uClibc и ядра.
Сборник источников.
Заходим на сайт производителя.
Там с большой долей вероятности можно скачать файл типа GPL_sources.tgz, в котором будет находиться ядро с конфигом для вашего NAS. Если вам повезет еще больше, там будет исходный код для набора инструментов, среды компиляции для вашего устройства.
В моем случае не было исходников тулчейна.
Более того, на сайт этой чудесной среды Невозможно скачать тулчейн для нужной мне версии uClibc (0.9.26).
Однако существует заметка , где есть не только адрес исходника, но и необходимые патчи.
Если ядра не оказалось на сайте производителя, его всегда можно скачать с ядро.
org .
нам также понадобится модуль-инит-инструменты или модули , если ядро версии 2.6 или 2.4 соответственно.
Подготовка окружения.
Сначала нужно собрать инструментальную цепочку.
В Linux это не составит труда; под BSD вам понадобится gmake. Они говорят , который можно скомпилировать под cygwin, я не пробовал.
Обратите внимание, что в Makefile нужно проставить ARCH:=XXX, где XXX — архитектура вашего NAS и LINUX_SOURCE:=kernel-headers-K.KK.KK.tar.bz2, где K.KK.KK — ядро версия.
Теперь вы можете компилировать программы, которые будут работать на NAS.
Для этого сначала нужно добавить путь к бинарникам тулчейна в PATH, например, $ export PATH=$PATH:~/uclibc-toolchain-src-20040609/gcc-3.3.x/toolchain_i386/bin
Во-вторых, при запуске .
/configure нужно добавить ключ --host=XXX-linux, где XXX — архитектура вашего NAS, например, $ .
/configure --host=i386-linux
Примечание! У моего NAS архитектура i386, у вас скорее всего другая.
Если вы хотите добавить модули ядра (например, драйвер файловой системы или сервер NFS), вам необходимо скомпилировать модуль-init-tools или modutils и само ядро.
Не забудьте установить CC на gcc из цепочки инструментов.
Более того, будьте осторожны, модуль должен быть скомпилирован с той же версией gcc, что и ядро.
Соответственно, может возникнуть ситуация, когда вам понадобятся две тулчейны — одна с gcc для ядра и другая с вашей любимой версией gcc для пользовательского пространства.
Все готово
Теперь вы можете скомпилировать нужные вам программы и запустить их на NAS. Никаких дополнительных манипуляций не требуется.Прежде всего, я хотел сделать ядерный NFS-сервер.
Я собрал модуль ядра и nfs-utils, но запустить все это мне не удалось.
После долгих бесплодных исследований я понял: я скомпилировал модуль не той версией gcc. Мне это сказал Insmod от modutils. До этого я использовал insmod, который предоставляет busybox. Надо сказать, отвратительнейшая вещь.
Он не выдает никакой полезной информации, включая предупреждение о разных версиях gcc. По этой причине я настоятельно рекомендую использовать modutils. Когда я правильно скомпилировал модуль, все заработало! Игра стоит свеч: у меня на NAS Loserspace sama дает 5 МБ/с, Loserspace nfs дает 4,5 МБ/с, а Nuclear nfs 7 МБ/с.
Подозреваю, что загрузка не 100%.
Теги: #linux #Системное администрирование #nas
-
Народный Бренд: Новинки Zte На Mwc 2016
19 Oct, 24 -
Утечка Данных 180 Тысяч Пользователей Fl.ru
19 Oct, 24