Стоковая прошивка на контрольной плате Antminer по умолчанию поддерживает только скрипты CGI, но для некоторых задач удобнее делать скрипты на PHP. Для многих свих проектов я использую именно этот язык программирования. Поскольку PHP обладает всем набором необходимых команд для преобразования и обработки данных. К тому же его можно использовать как вывод в браузер в виде страниц.
В этой статье мы рассмотрим каким образом можно поднять PHP сервер внутри прошивки.
Тема интересная и кто обладает знанием в PHP поймет, как это будет полезно для написания своих прошивок в дальнейшем.
Для примера я взял контрольную плату от Antminer S9 с стоковой прошивкой и открытым SSH.
SSH нам понадобится, чтобы подключиться к корню файловой системы контрольной платы.
Для работы с SSH я взял программу WinSCP. Получить её можно
Контент доступен только участникам форума
Скачиваем и устанавливаем WinSCP. Подключаем контрольную плату к сети и подаём на нее питание.
Через BTCTools сканируем сеть и определяем IP адрес нашей КП.
Контент доступен только участникам форума
Запускаем WinSCP, сразу появится окно Вход
Протокол передачи ставим SCP
Имя хоста ставим IP адрес КП, порт оставляем 22
Имя пользователя root
Пароль root (иногда admin)
Нажимаем Войти
Контент доступен только участникам форума
Появится уведомление о генерации ключа RSA сервера, нажимаем Да
Если всё получилось, мы зашли в корень прошивки.
В левой половине программы папки и файлы на нашем ПК, в правой уже каталоги и файлы в корне прошивки.
Сейчас мы находимся в каталоге /home/root как видим каталог пустой, перейдём на уровень выше, кликнув дважды на изображение папки с двумя точками.
Нас перебросило в каталог /home, переходим ещё выше, снова кликнув изображение папки.
Теперь мы непосредственно в корне файловой системы и видим основные каталоги.
Контент доступен только участникам форума
Не советую тут что либо удалять или редактировать, если для этого нет необходимости.
Зажимаем сочетание клавиш
Контент доступен только участникам форума
и видим открывшееся окно консоли.
Контент доступен только участникам форума
Давайте начнём поднимать PHP сервер.
Первым делом нам надо остановить текущий сервер, благодаря которому мы видим вэб-морду прошивки в браузере. Чтобы остановить сервер, вводим команду:
Контент доступен только участникам форума
и нажимаем Выполнить.
Видим, что Web сервер был остановлен.
Контент доступен только участникам форума
Если мы попробуем зайти на вэб-морду прошивки, то увидим следящее:
Сервер остановили. Теперь удалим конфиг от сервера:
Контент доступен только участникам форума
Далее удалим старую версию каталога opkg:
Контент доступен только участникам форума
Теперь сделаем резервную копию индексной страницы от прошивки:
Контент доступен только участникам форума
Создадим каталог для необходимых файлов установки:
Контент доступен только участникам форума
Получим новую версию opkg:
Контент доступен только участникам форума
Не обращаем внимание на ошибку, нажимаем ОК
Контент доступен только участникам форума
Распакуем opkg в прошивку:
Контент доступен только участникам форума
Наблюдаем в терминале процесс распаковки до появления строки opkg/
Для экономии места архив можно удалить, он нам больше не потребуется:
Контент доступен только участникам форума
Теперь получаем файлы установки новой версии lighttpd:
Контент доступен только участникам форума
Снова нажимаем ОК в окне ошибки.
Распакуем фалы установки в корень:
Контент доступен только участникам форума
Распаковка произойдет быстро, дожидаемся строку lighttpd/
Архив так же удаляем. Место нам надо экономить:
Контент доступен только участникам форума
Произведём установку lighttpd и всех её зависимостей:
Контент доступен только участникам форума
На последнюю ошибку не обращаем внимание, конфиги мы добавим позже.
Контент доступен только участникам форума
Удаляем каталог с установочными файлами:
Контент доступен только участникам форума
Помните про ошибку конфигов? Исправим это. Скачиваем архив со всеми необходимыми файлами:
Контент доступен только участникам форума
Нажимаем ОК в окне ошибки
Распакуем содержимое архива:
Контент доступен только участникам форума
Удалим архив для экономии места:
Контент доступен только участникам форума
Перенесём конфиги в нужные места:
Контент доступен только участникам форума
Удаляем лишнее:
Контент доступен только участникам форума
Перенесем файл запуска сервера и раздадим ему права на запуск:
Контент доступен только участникам форума
Удаляем лишнее:
Контент доступен только участникам форума
Перенесем сами программы сервера в корень прошивки и дадим им права:
Контент доступен только участникам форума
Удаляем лишнее:
Контент доступен только участникам форума
Перенесём тестовый PHP скрипт в каталог www:
Контент доступен только участникам форума
Каталог установки можно теперь удалять из корня:
Контент доступен только участникам форума
Восстанавливаем индексную страницу от прошивки:
Контент доступен только участникам форума
Создадим ярлык нашего сервера в автозагрузку:
Контент доступен только участникам форума
Удалим старый:
Контент доступен только участникам форума
Осталось запустить наш сервер:
Контент доступен только участникам форума
Если терминал вернул Starting Lighttpd Web Server: server. - это значит, что сервер запустился успешно.
Контент доступен только участникам форума
Проверяем поддержку PHP:
Контент доступен только участникам форума
Видим версию PHP
Контент доступен только участникам форума
В браузере переходим в вэб-морду и видим, что web сервер работает
Контент доступен только участникам форума
Дописываем в адрес наш тестовый скрипт /test.php и Вуаля! PHP поддерживается!
Контент доступен только участникам форума
Теперь у нас есть поддержка PHP скриптов в прошивке, дальше уже дело за вами.
Материал подготовил: @Vinogradov
Копирование и распространение с разрешения автора.