Как-то гуляя на авито, я увидел довольно много дешевых (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).
Характеристики:
SoC: Marvell 88F6281 (1200MHz, armv5, 1 core);
RAM: 512MB DDR2;
NAND: 512MB (TSOP48);
Сеть: 10x 1Гбит портов (в SoC две сетевых: 1я сетевая - на WAN порт, 2я сетевая - на управляемый свитч с 8 LAN + 1 DMZ портами);
USB: 2x 2.0;
Слот 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. Осмотрим:




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


По serial (параметры 115200n8) меня встретил залоченный вендорский u-boot 1.1.4 (с менюшкой вместо консоли), linux 2.6.22.18, и прошивка Check Point RD-6281-A.
Но сюрприз -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):
#для USB кабеля имя будет ttyUSBх, где х - 0,1,2...
kwboot -B 115200 /dev/ttyUSB0 -b u-boot.kwb -p -t
#или если нет эффекта, попробуйте так:
kwboot -B 115200 /dev/ttyUSB0 -b u-boot.kwb -a -t
#для COM кабеля имя будет ttySх, где х - 0,1,2...
Если все ок, то увидите:
Detected kwbimage v0 with NAND boot signature
Patching image boot signature to UART
Sending boot message. Please reboot the target…/
Sending boot image header (512 bytes)…
25 % […. ]
Done
Sending boot image data (636260 bytes)…
0 % […………………………………………………………….]
...
...
100 % [. ]
Done
Finishing transfer
[Type Ctrl-\ + c to quit]
U-Boot 2020.04 (Dec 17 2025 - 21:08:22 +0000)
Check Point L-50
SoC: Kirkwood 88F6281_A1
Model: Check Point L-50
DRAM: 512 MiB
NAND: 512 MiB
MMC:
Loading Environment from NAND… *** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Net:
Error: ethernet-controller@72000 address not set.
Error: ethernet-controller@76000 address not set.
No ethernet found.
Hit any key to stop autoboot:
Нажимаем любую клавишу чтобы прервать загрузку.
4) Дальше можно юзать флешку или tftp. Юзаем флешку как более простой путь - форматим её в FAT32 (MBR, один раздел), и кидаем в её корень файлы u-boot.kwb и openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-initramfs-uImage;
5) Вставляем флешку в девайс, шьем u-boot.kwb, маки, и ребутаем девайс. Для этого в консоли u-boot пишем (маки подставить свои):
usb start
mw 0x0800000 0xffff 0x100000
fatload usb 0 0x0800000 u-boot.kwb && nand erase 0x0 100000 && nand write 0x0800000 0x0 0x100000
setenv eth1addr 00:1c:7f:76:cc:90
setenv ethaddr 00:1c:7f:76:cc:91
setenv lan1_mac_addr 00:1c:7f:76:cc:92
setenv lan2_mac_addr 00:1c:7f:76:cc:93
setenv lan3_mac_addr 00:1c:7f:76:cc:94
setenv lan4_mac_addr 00:1c:7f:76:cc:95
setenv lan5_mac_addr 00:1c:7f:76:cc:96
setenv lan6_mac_addr 00:1c:7f:76:cc:97
setenv lan7_mac_addr 00:1c:7f:76:cc:98
setenv lan8_mac_addr 00:1c:7f:76:cc:99
setenv dmz_mac_addr 00:1c:7f:76:cc:9a
setenv dsl_mac_addr 00:1c:7f:76:cc:9b
saveenv
reset
6) С NAND стартанет u-boot от OpenWRT и зашитыми маками. Нажимаем любую клавишу чтобы прервать загрузку. И грузим с флешки initramfs образ. Для этого в консоли u-boot пишем:
usb start
fatload usb 0 0x0800000 openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-initramfs-uImage
bootm 0x800000
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 МБ. Вопрос к портировавшим - какого хрена? 😄 Давайте узнаем. На девайсе:
cat /proc/mtd
dev: size erasesize name
mtd0: 000c0000 00020000 "u-boot"
mtd1: 00040000 00020000 "bootldr-env"
mtd2: 07900000 00020000 "ubi"
mtd3: 00800000 00020000 "kernel-2"
mtd4: 07100000 00020000 "rootfs-2"
mtd5: 07900000 00020000 "default_sw"
mtd6: 01800000 00020000 "logs"
mtd7: 00100000 00020000 "preset_cfg"
mtd8: 00100000 00020000 "adsl"
mtd9: 07a00000 00020000 "storage"
df -h
..
/dev/root 3.8M 3.8M 0 100% /rom
...
/dev/ubi0_2 93.9M 40.0K 89.1M 0% /overlay
overlayfs:/overlay 93.9M 40.0K 89.1M 0% /
...
В OpenWRT wiki:


Классно, они решили сделать корень на разделах первого слота прошивки (kernel-1 и rootfs-1), а остальное выкинуть. Вернее "оставить на случай отката на сток". Но такой древний сток уже и даром не нужен, да и ссылка на бекапы стока приводятся на этой же странице (и нет проблем восстановить разметку и откатиться на сток при необходимости). Короче, так не пойдет, надо фиксить.
На большинстве роутеров OpenWRT хранит разметку в dts (dtb), и dtb встраивается в ядро в момент сборки, соответственно правка разделов требует пересборки OpenWRT. Есть и более извращенные варианты - границы вендорских разделов не трогаются, но в dts разделы объединяются в единый ubi под rootfs через ubi-concat (привет Smartbox роутерам) - такой способ тоже требует пересборки OpenWRT.
Но нам повезло - в конфиге ядра включен CONFIG_MTD_CMDLINE_PARTS - а значит разметку можно поправить параметрами ядра. Для отжимания всего места в корень нужно оставить только разделы: u-boot + bootldr-env (1 МБ), и ubi (все остальное место).
В ubi разделе на ubi партициях у нас и партиция ядра, и партиция sqashfs, и overlay rootfs. Соответственно, переразметка не помешает при будущих sysupgrade обновлениях, так как при них затрагивается только раздел ubi.
Идем в u-boot и смотрим текущую картину:
=> printenv
...
bootcmd=ubi part ubi; ubi read 0x800000 kernel; bootm 0x800000
...
mtdparts=mtdparts=orion_nand:0xc0000@0x0(u-boot)ro,0x40000@0xc0000(bootldr-env),0x7900000@0x100000(ubi),0x800000@0x7a00000(kernel-2),0x7100000@0x8200000(rootfs-2),0x7900000@0xf300000(default_sw),0x1800000@0x16c00000(logs),0x100000@0x18400000(preset_cfg),0x100000@0x18500000(adsl),-@0x18600000(storage)
...
Отлично, даже переменная с разметкой разделов есть. Сейчас она используется только для u-boot, но имя nand драйвера что в u-boot что в linux совпадает (orion_nand), поэтому подправим разметку в прямо в этой перменной, и скормим её в параметры ядра.
Выполняем в u-boot:
setenv mtdparts mtdparts=orion_nand:0xc0000@0x0(u-boot)ro,0x40000@0xc0000(bootldr-env),-@0x100000(ubi)
setenv bootargs console=ttyS0,115200 ${mtdparts}
saveenv
Чётко, только теперь мы сломали уже поставленную OpenWRT. Для починки надо форматнуть ubi на весь новый раздел. Самый простой вариант - грузануть initramfs образ с флешки и из него прошить sysupgrade. Вставляем сделанную выше флешку в FAT32 с initramfs образом, и делаем в консоли u-boot:
usb start
fatload usb 0 0x0800000 openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-initramfs-uImage
bootm 0x800000
Стартует initramfs образ из RAM. Видим в логе загрузки, что разделов теперь только три:
....
[ 1.086895] 3 cmdlinepart partitions found on MTD device orion_nand
[ 1.093206] Creating 3 MTD partitions on "orion_nand":
[ 1.098369] 0x000000000000-0x0000000c0000 : "u-boot"
[ 1.292812] 0x0000000c0000-0x000000100000 : "bootldr-env"
[ 1.299750] 0x000000100000-0x000020000000 : "ubi"
....
#проверим и в ОС
root@OpenWrt:~# cat /proc/mtd
dev: size erasesize name
mtd0: 000c0000 00020000 "u-boot"
mtd1: 00040000 00020000 "bootldr-env"
mtd2: 1ff00000 00020000 "ubi"
Все ок. Идем в веб интерфейс (или в консоль), и снова прошиваем openwrt-24.10.5-kirkwood-generic-checkpoint_l-50-squashfs-sysupgrade.bin (без Keep settings).
Проверяем результат:

Вот теперь другое дело.
И кстати, если вы еще не шили OpenWRT, но собираетесь это делать + хотите сразу получить полный объем флешки - нет смысла шить OpenWRT дважны. Просто шейте по инструкции выше, но после прошивки маков и до сохранения переменных (saveenv) задайте новую разетку в переменную mtdparts и добавьте её в параметры ядра (в bootargs) согласно инструкциям выше. С OpenWRT закончили.
Теперь пару слов про Debian.
Debian 13 на этот девайс тоже впихивается без проблем. Варианты:
-Полностью на NAND (после установки свободно около 250 МБ);
-Раздел /boot на NAND, а / на SD или USB;
-Все на SD или USB.
Но Debian 14 будет уже не впихнуть - в нем проект откажется от архитектуры armel (наш ARMv5 SoC как раз оно). Так что делать сборки Debian под этот девайс не вижу смысла. Да и на таком железе я больше предпочитаю OpenWRT.
