Mikrotik RB2011UiAS-2HND-IN — устройство легендарное, но его родная RouterOS не поддерживает принт-серверы. Выход один: OpenWrt. В этой статье я расскажу, как самостоятельно собрать пакет CUPS (Common UNIX Printing System) для этой «железки», если его нет в стандартном репозитории вашей сборки.
Подготовка рабочей среды
Для кросс-компиляции нам понадобится Linux-машина (я использую Ubuntu 24.04). Для начала установим базовый набор инструментов сборки:
1sudo apt-get update2sudo apt-get install build-essential libc6-dev libncurses5-dev libncursesw5-dev \3gawk gettext git zlib1g-dev swig python3-dev command-not-found
Решаем проблему Python 2.7
Старые версии OpenWrt (19.07 и ранее) при сборке активно используют Python 2.7, который в Ubuntu 24.04 уже давно канул в лету. Установим его вручную из репозиториев предыдущих выпусков:
1# Скачиваем необходимые пакеты2wget http://security.ubuntu.com/ubuntu/pool/universe/p/python2.7/python2.7_2.7.18-13ubuntu1.5_amd64.deb \3http://security.ubuntu.com/ubuntu/pool/universe/p/python2.7/libpython2.7-stdlib_2.7.18-13ubuntu1.5_amd64.deb \4http://security.ubuntu.com/ubuntu/pool/universe/p/python2.7/python2.7-minimal_2.7.18-13ubuntu1.5_amd64.deb \5http://security.ubuntu.com/ubuntu/pool/universe/p/python2.7/libpython2.7-minimal_2.7.18-13ubuntu1.5_amd64.deb67# Устанавливаем одной командой8sudo apt install ./libpython2.7-minimal_2.7.18-13ubuntu1.5_amd64.deb \9./libpython2.7-stdlib_2.7.18-13ubuntu1.5_amd64.deb \10./python2.7-minimal_2.7.18-13ubuntu1.5_amd64.deb \11./python2.7_2.7.18-13ubuntu1.5_amd64.deb
Работа с исходниками OpenWrt
Клонируем репозиторий OpenWrt. Для RB2011 лучше использовать ветку 19.07, так как она стабильно работает на архитектуре ar71xx/ath79.
1git clone -b openwrt-19.07 https://github.com/openwrt/openwrt.git openwrt-19.072cd openwrt-19.07
Добавляем CUPS в список пакетов (Feeds)
По умолчанию CUPS может отсутствовать в фидах. Добавим сторонний репозиторий:
1echo "src-git cups https://github.com/TheMMcOfficial/lede-cups.git" >> feeds.conf.default
Исправление ошибок совместимости
При сборке старого SDK на новом GCC (в Ubuntu 24.04) вы неизбежно столкнетесь с ошибкой отсутствия типов в cmake. Нужно внести правку в заголовочный файл.
Проблема: Ошибка компиляции cmWorkerPool.h из-за неопределенности uint64_t. Решение: Откройте файл (путь может немного отличаться в зависимости от версии cmake в SDK): nano build_dir/host/cmake-3.15.1/Source/cmWorkerPool.h
В самое начало файла (после комментариев) добавьте:
1#include <cstdint>
Конфигурация и сборка
Теперь обновляем зависимости и заходим в меню выбора пакетов:
1./scripts/feeds update -a2./scripts/feeds install -a3make menuconfig
В меню нужно выбрать:
- Target System:
Atheros AR71xx/AR913x(для старых ядер) илиAth79(для новых). - Subtarget:
Generic - Target Profile:
MikroTik RB2011UiAS-2HND - Network -> Printing: Найдите
cupsи нажмитеM, чтобы собрать его отдельным модулем (.ipk).
Сборка Toolchain
Это самый долгий этап. Мы собираем кросс-компилятор, который превратит код C++ в понятный для процессора MIPS код.
1# Используем все ядра процессора для ускорения2make tools/install -j$(nproc)3make toolchain/install -j$(nproc)
Финальный рывок: Сборка пакета
Теперь собираем непосредственно CUPS с выводом подробного лога на случай ошибок:
1make package/cups/compile V=s
Результат
После успешного завершения ваш файл .ipk будет находиться в директории: bin/packages/[архитектура]/cups/
Останется только закинуть его на роутер через scp и установить:
1opkg install cups_xxx.ipk
Важно: Не забудьте, что для работы CUPS на RB2011 вам, скорее всего, понадобится внешняя USB-флешка, смонтированная как Overlay, так как встроенной памяти (128 МБ) может не хватить для логов и очередей печати.



