Кросс-Компиляция Для Nas

Я хочу рассказать вам, как можно расширить функциональность 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

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.