Как-то гуляя на авито, я увидел довольно много дешевых (200-1000р) фаерволов, которые 10-15 лет назад брали себе за много денег всякие организации. Сейчас эти девайсы потеряли свою актуальность (скорость работы/поддержка), и сливаются как мусор за копейки на барахолках.
В общем случае такой фаервол представляет из себя:
-ARM/MIPS SoC с linux и u-boot;
-Сколько-то сетевых портов (чаще всего подключены во внутренний управляемый свитч);
-Пару десятков/сотен мегабайт RAM и NAND;
-Иногда бонусами идут USB/WIFI/ADSL;
-Почти всегда есть консольный 8P8C (RJ-45) порт для Cisco совместимого кабеля (туда пишет загрузчик и ОС).
На особо старых девайсах можно увидеть мелкие SPI флешки и несколько десятков мегабайт ОЗУ + вместо u-boot увидеть redboot (или кастомный загрузчик).
По SoC может попасться рандом - как и отличный майнлайн SoC (который есть в OpenWRT таргетах), так и полностью закрытый SoC. По прошивке - чаще всего загрузчик не дает полноценную u-boot консоль + фирмварь подписана ключом вендора, но иногда решаемо - например шитьем своего загрузчика с помощью аппаратного загрузчика SoC (если нет secureboot в SoC).
В инете OpenWRT сборок под такие фаерволы довольно мало (как и вообще какой-либо инфы про них). И я уже было хотел закупить штук 5 рандомных девайсов и попробовать поднять на них OpenWRT, но в последний момент от такой идеи отказался. Причина - на практически всех девайсах дешевле 1500-2000р имеем стомегабитные порты (что в 2026 нафиг не надо). На этом бы все и закончилось, но я увидел Check Point L-50 за 1500р - за такое железо цена подарок. Рассмотрим его подробнее.

Что за девайс

Девайсы серии Check Point L-50 построены на многим знакомой платформе Marvell Kirkwood (она же в Depo A60, только в нём чуть лучше SoC - 88F6282 на 1.6 GHz).
Характеристики:
SoC: Marvell Kirkwood 88F6281 (1.2 GHz, armv5, 1 core);
RAM: 512MB DDR2;
NAND: 512MB (TSOP48);
Сеть: 10x 1Гбит портов (в SoC две сетевых: eth0 - на WAN порт, eth1 - на свитчи с остальными портами, последовательное соединение: eth1 <> sw1(lan1,2,5,6,7) <> sw2(lan3,4,8,dsl,dmz));
USB: 2x 2.0 (в SoC один USB: он в хаб, порты хаба наружу);
Слот SD: SDHC (SDIO);
Слот ExpressCard/34 (USB): можно всунуть древний модем (с USB протоколом);
Питание: 12 В 2.5 А (5.5х2.5).

Другие модели серии:
Check Point L-50W - имеет MiniPCI-e слот + WIFI антенны;
Check Point L-50D - имеет ADSL порт (в OpenWRT ADSL порт не работает);
Check Point L-50WD - имеет одновременно MiniPCI-e слот + WIFI антенны + ADSL порт.

Я же урвал обычный Check Point L-50 - без WIFI и ADSL. Осмотрим:

Перед
Зад
SD слот
Низ

Для разборки надо открутить всего один винтик, но разборка нам не потребуется, ибо для доступа к консоли загрузчика и ОС юзаем serial порт c подписью CONSOLE (по сути обычный COM порт с RS-232 уровнями в непривычном разъеме). Для работы с ним потребуется Cisco совместимый консольный кабель на 8P8C (RJ-45) - на озоне/вб они начинаются от 300р, но будьте внимательны - дешевые кабеля вместо RS-232 уровней (-5..-15/+5..+15 В) могут иметь TTL уровни (0/5 В или 0/3.3 В) - с TTL нам не подойдет. Помимо USB кабелей с преобразователем бывают и пассивные кабеля на обычный COM (разъема DB9):

COM
USB

Подключив serial (параметры 115200n8) - я увидел залоченный вендорский u-boot 1.1.4 (с менюшкой вместо консоли), linux 2.6.22.18, и прошивку Check Point RD-6281-A. Конечно же этот старый сток нам не потребуется, и мы прошьем OpenWRT.

Шьем OpenWRT

Check Point L-50(W/D/WD) - единственная серия Check Point девайсов с официальной поддержкой OpenWRT (на текущий момент), так что портировать ничего не придется - прошьем официальную OpenWRT. Вот страница девайса в OpenWRT вики, там фотки плат и инструкция по прошивке.
По прошивке вкратце: подписи стоковой прошивки не помеха, ибо прошьем нормальный u-boot от OpenWRT через аппаратный загрузчик SoC (по X-MODEM), и далее загрузимся в initramfs образ OpenWRT (с флешки или по tftp), и из него прошьем sysupgrade образ OpenWRT.
По прошивке подробнее (все делаем по serial):
1) Для начала надо сохранить MAC адреса (ибо прошивка нового u-boot их убьет): для этого в стоковом u-boot выбираем пункт "2. Start in debug Mode", и видим маки в строках вида "mac_addr 00:1c:....." (копируем их куда-нибудь). Ну или просто гляньте мак на наклейке на дне устройства, и остальные маки получайте прибавлением к нему единицы;
2) Качаем необходимые файлы: u-boot и initramfs + sysupgrade образы (на примере 24.10.5 потребуются: u-boot.kwb, openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-initramfs-uImage и openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin);
3) Для шитья потребуется linux (можно и livecd, я использовал Debian 13) + потребуется поставить пакет u-boot-tools (от рута apt install u-boot-tools). Выключаем питание, переходим в папку с файлом u-boot.kwb и передаем его в RAM девайса командой (от рута, или добавить себя в группу dialout):

Если все ок, то увидите:

Нажимаем любую клавишу чтобы прервать загрузку.

4) Дальше можно юзать флешку или tftp. Юзаем флешку как более простой путь - форматим её в FAT32 (MBR, один раздел), и кидаем в её корень файлы u-boot.kwb и openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-initramfs-uImage;
5) Вставляем флешку в девайс, шьем u-boot.kwb, маки, и ребутаем девайс. Для этого в консоли u-boot пишем (маки подставить свои):

6) С NAND стартанет u-boot от OpenWRT и зашитыми маками. Нажимаем любую клавишу чтобы прервать загрузку. И грузим с флешки initramfs образ. Для этого в консоли u-boot пишем:

7) Оказавшись в OpenWRT - шьем sysupgrade образ. Для этого подключаемся в LAN (например в LAN1), получаем на компе DHCP от девайса, и из веб интерфейса (по 192.168.1.1) прошиваем файл openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin без галки Keep settings (можно и из консоли через sysupgrade, закинув образ в /tmp через scp -O).

Проверяем результат:

И перед вами причина появления этой статьи - свободно 93 МБ, хотя NAND тут на 512 МБ. Вопрос к портировавшим - какого хрена? 😄

Расширяем корень на всю флешку

Для начала узнаем текущую ситуацию по разметке:

В OpenWRT wiki:

Классно, они решили сделать корень на разделах первого слота прошивки (kernel-1 и rootfs-1), а остальное выкинуть. Вернее "оставить на случай отката на сток". Но такой древний сток уже и даром не нужен, да и ссылка на бекапы стока приводится на этой же странице (и нет проблем восстановить разметку + откатиться на сток при необходимости). Короче, так не пойдет, надо фиксить.

На большинстве роутеров OpenWRT хранит разметку в dts (dtb), и dtb встраивается в ядро в момент сборки, соответственно правка разделов требует пересборки OpenWRT. Есть и более извращенные варианты - границы вендорских разделов не трогаются, но в dts разделы объединяются в единый ubi под rootfs через ubi-concat (привет Smartbox роутерам) - такой способ тоже требует пересборки OpenWRT.

На нашем девайсе разметка тоже в dts, но повезло - в конфиге ядра включен CONFIG_MTD_CMDLINE_PARTS - а значит разметку можно переопределить параметром ядра. Для отжимания всего места в корень нужно оставить только разделы: u-boot + bootldr-env (1 МБ), и ubi (все остальное место).
В ubi разделе на ubi партициях у нас: партиция ядра, партиция sqashfs, overlay rootfs. Соответственно, переразметка не помешает при будущих sysupgrade обновлениях, так как при них затрагивается только раздел ubi.
Идем в u-boot и смотрим текущую картину:

Отлично, даже переменная с разметкой разделов есть. Сейчас она используется только для u-boot, но имя nand драйвера что в u-boot что в linux совпадает (orion_nand), поэтому подправим разметку в прямо в этой перменной, и скормим её в параметры ядра.
Выполняем в u-boot:

Чётко, только теперь мы сломали уже поставленную OpenWRT. Для починки надо форматнуть ubi на весь новый раздел. Самый простой вариант - грузануть initramfs образ с флешки и из него прошить sysupgrade. Вставляем сделанную выше флешку в FAT32 с initramfs образом, и делаем в консоли u-boot:

Стартует initramfs образ из RAM. Видим в логе загрузки, что разделов теперь только три:

Все ок. Идем в веб интерфейс (или в консоль), и снова прошиваем openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin (без Keep settings).
Проверяем результат:

Вот теперь другое дело.
И кстати, если вы еще не шили OpenWRT, но собираетесь это делать + хотите сразу получить полный объем флешки - нет смысла шить OpenWRT дважны. Просто шейте по инструкции выше, но после прошивки маков и до сохранения переменных (saveenv) задайте новую разетку в переменную mtdparts и добавьте её в параметры ядра (в bootargs) согласно инструкциям выше. С OpenWRT закончили.

Ставим Debian, играем с dualboot

Debian 12 на этот девайс впихивается идеально - в его репах даже есть ядро версии 6.1 для нашего SoC - пакет linux-image-marvell.
Debian 13 на этот девайс тоже впихивается без проблем, но поддержка armel (нашей архитектуры) подходит к закату - поэтому marvell ядра в репах уже нет. Но не страшно - соберем свое ядро (благо наш SoC имеет шикарную поддержку в майнлайн linux).
Подготовка корневой ФС выполняется как обычно - скачиваем через debootstrap корневую ФС для armel и ставим пакеты нашего собранного ядра с headers (и dtb берем из OpenWRT). Все это вы уже ни раз видели в прошлых статьях (например про Wifire SnowBox Palm 2/A312).

Варианты установки Debian:
-Полностью на NAND (после установки свободна половина - 250 МБ): Для этого завернем ядро, dtb, корневую ФС - в соотвествующие разделы ubi контейнера (c параметрами NAND, вы это тоже видели в прошлых статьях - например, про Depo A60). Далее прошьем ubi контейнер на NAND и подправим u-boot envs. Если потом станет мало места - всегда сможем докинуть SD/USB для /data.
-На SD/USB: С SD/USB наш SoC грузиться не умеет - значит первым будет стартовать u-boot с NAND, а потом уже грузить ядро с SD/USB. Но опять подстава - OpenWRTшники собрали u-boot без поддержки SD - в банере u-boot напротив MMC: видим пустоту + нет команды mmc. А еще u-boot от OpenWRT иногда странно работает с usb. Короче, соберем-ка новый u-boot. Наш SoC в майнлайн u-boot поддерживается, но девайс - нет. Это не страшно, ибо в репах OpenWRT видим патчи для нашего девайса для u-boot 2020.04. После мелкой адаптации натягивает необходимые патчи на сорцы u-boot 2026.01. Также в конфиге u-boot включаем DM драйвер mmc, команду mmс и прочую mmc обвязку, компилим - и вуаля, SD карта в u-boot видна.
Ну а дальше с Debian все просто - завернем корневую ФС с ядром/dtb в образ диска с ext4 партицией, запишем его на SD + подправим u-boot envs. На usb тоже можно (будут немного другие envs).
-Дуалбут с OpenWRT: Звучит сложно, но bootmenu - это штатная плюшка u-boot. Конечно же OpenWRTшники её в своем u-boot тоже не включили, но у нас же уже сорцы нового u-boot - так что включаем bootmenu в конфиге u-boot и пересобираем. Настраиваем u-boot envs для bootmenu, и итог - OpenWRT стоит на NAND, Debian на SD/USB , красивая менюшка появляется при старте девайса.

Из ОС тоже возможно менять u-boot envs, а значит для перезагрузки в другую ОС доступ по serial не нужен.

В самом Debian кстати тоже потребовался мелкий тюнинг:
-Kernel oops выпадал при старте ОС (при ините usb): На работу не влияет, но неприятно. Проблема в старом стиле dts от OpenWRTшников при описании usb - правим, снова компилим dtb, и проблема ушла.
-Было видно только две сетевых из SoC (вместо кучи портов): Модуль свитчей (mv88e6xxx) не стартует сам - решается принудительным стартом модуля при запуске ОС.
-MAC адреса всех портов были одинаковые: В OpenWRT маки сетевухам присваивал скрипт, который запускался при старте, и с помощью fw_printenv читал маки из u-boot envs. Сделаем также - ставим утилиту для работы с u-boot envs (она в пакете u-boot-tools), задаем в /etc/fw_env.config mtd/офсет/размер/блок u-boot envs, набрасываем мелкий скрипт для этой задачки, и пихаем его в автостарт.
-LAN порты не работали, если не поднят eth1. В девайсе eth0 идет напрямую в WAN порт, а eth1 - вставлен в первый свич, первый свитч вставлен во второй свитч. Порты этих свитчей являются lan портами. Просто выставляем eth1 в UP при старте ОС для работы lan портов.

Все эти образы Debian + нового u-boot, с тюнингом, с мануалами по прошивке для каждого кейса - я подготовил, и скачать все это можете по ссылке.

PS: Заметил уже после написания статьи и создания сборок, что с этим девайсом люди уже подобное делали: вот тема с обсуждениями, вот тема с запуском debian 11 с usb, а вот тема с автоматическим дуалбутом (стоит флешка = грузим debian, не стоит = openwrt).
Но я добавил плюшек - запуск с SD карты, бут менюшку, и debian прямо с NAND. Также замутил более свежий u-boot и debian.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Достигнут лимит времени. Пожалуйста, введите CAPTCHA снова.