В очередной раз просматривая объявления о продаже компьютерной техники и всяческой электроники наткнулся на интересного зверя - корпоративный файрвол CheckPoint T-120. Быстренько погуглив, нашел технические характеристики этого устройства. Вот они:
Intel Atom D525 1.80GHz Dual-Core
оперативная память 4 GB (DDR2)
4 x 10/100/1000Base-T RJ45 ports
250 гигабайт жесткий диск (SATA)
Очень даже неплохо, особенно учитывая то, что эта покупка обошлась мне в 4000 тенге, сейчас это чуть меньше $10. Заинтересовала эта железка тем, что внутри почти полноценный компьютер на базе процессора с пассивным охлаждением, крепкий блок питания, памяти достаточно. Единственное, там нет выхода на монитор/клавиатуру. Но есть консольный порт (RS232, разъем правда RJ45). Еще один аргумент к покупке - это то, что на него смогли установить pfSense. В этом случае теоретически можно и другой роутерный софт установить. Душа у меня лежит к OpenWRT. Его и будем ставить.
Консольный Кабель. Теперь вопрос с контролем процесса установки и вообще "Главный вопрос жизни, вселенной и всего такого". Фирменного кабеля - нет, Гугл подсказывает что можно использовать кабель Cisco, которого у меня тоже нет, купить - это совсем плохая идея, стоит как чугунный мост, с АлиЭкспресса - ждать долго. Выход один - ПАЯТЬ ! Достаем ЭПСН-25 и... Идем в гараж/кладовую/склад и берем оттуда кабель для подключения телефона Ericsson к компьютеру через RS232 и патч-корд RJ45. Фирменный кабель содержит 8 проводов, а в кабеле для телефона всего 5, отсутствуют провода CTS/DCD/DSR. Внизу распиновка фирменного кабеля.
Фирменный кабель Cisco.
За всю свою сознательную жизнь на практике я не встретил консольного кабеля, который использует больше, чем RXD/TXD/GND. Была не была, собираем простой кабель по следующей схеме.
Кабель спаяли.
И подключаем его через переходник USB to RS232 к компьютеру.
Проверка работы кабеля. Подключаем все это хозяйство к компьютеру, настраиваем параметры порта: Baud rate = 9600 bps, Data bits = 8, Parity = None, Stop bits = 1, Flow Control = None. Включаем роутер и видим в терминале процесс начальной инициализации (BIOS) и загрузки этого убер девайса.
Установка OpenWRT. Теперь мы будем ставить на этот роутер OpenWRT. Ну как ставить ? Его прошивают либо в флеш-память роутера, либо на жесткий диск или на карту памяти.
Для этого нужно скачать сборку OpenWRT под процессор x86, тип сборки Combined-Ext4. Такая сборка необходима для того, чтобы потом изменить размер разделов на карте памяти/жестком диске.
В кладовых у меня есть пару видов переходников SD Card to SATA, CF Card to SATA. Почему то, SD Card to SATA не всегда определяется BIOS-ом как диск. Используем CompactFlash.
Используем переходник для установки 2.5" жестких дисков вместо 3.5". Немного винтиков и болтиков М3 и получаем такую конструкцию.
Установка OpenWRT на карту памяти. Хорошее руководство можно найти здесь. У нас 64-х битный процессор, и как я упоминал выше, нужна сборка Combined-Ext4, вот ссылка на текущий стабильные билды.
Скачиваем образ, распаковываем архив и записываем на карту памяти файл *.img. В Линуксе - это можно сделать примерно так:
# Unpack image
gunzip openwrt-*.img.gz
# Identify disk (to replace sdX in the following command below)
lsblk
# Write image
dd if=openwrt-21.02.0-x86-64-generic-ext4-combined.img bs=1M of=/dev/sdX
Далее мы вставляем карту памяти CompactFlash в переходник, устанавливаем в роутер и собираем все.
Через сетевой порт Lan1 подключаем к компьютеру или сети, Console - через самодельный кабель к компьютеру. Если после включения питания через некоторое время в окне терминала побежит вывод загрузки системы, значит Вы все сделали верно и все работает как нужно. Да, кстати, нужно сменить скорость терминала на порту на 115600, все остальные параметры без изменений.
Первоначальная настройка OpenWRT. Подключаемся к веб-интерфейсу OpenWRT. IP/mask по умолчанию 192.168.1.1/24, пароль - по умолчанию пустой. Рекомендую сразу поменять пароль администратора. Затем необходимо донастроить сетевой интерфейс - гейт по умолчанию и DNS сервера. Иначе Вы не сможете установить нужные пакеты для изменения разделов.
Теперь мы можем изменить разделы установленного OpenWRT. По умолчанию размеры следующие:
/dev/sda1 is a 16MB ext4 /boot partition where GRUB and the kernel are stored.
/dev/sda2 is a 104MB partition containing the squashfs root filesystem and a read-write f2fs filesystem OR the ext4 root filesystem (depending on what image you have chosen).
Подключаемся через SSH. Процесс изменения разделов очень хорошо описан в руководстве. Сначала необходимо изменить размер Partition, затем размеры в файловой системе.
Изменение разделов/размеров.
Установить fdisk
Запустить fdisk и посмотреть разделы
Записать номер начального сектора /dev/sda2
Удалить раздел /dev/sda2, но не записывать изменения на диск !!!
Создать раздел /dev/sda2, при этом нужно указать начальный сектор, который Вы записали на шаге 3. Последний сектор - по умолчанию (до конца раздела).
Записать изменения на диск.
Hidden text
Welcome to fdisk (util-linux 2.32).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): p
Disk /dev/sda: 7.2 GiB, 7751073792 bytes, 15138816 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xcbad8a62
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 512 33279 32768 16M 83 Linux
/dev/sda2 33792 246783 212992 104M 83 Linux
Command (m for help): d
Partition number (1,2, default 2):
Partition 2 has been deleted.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Partition number (2-4, default 2):
First sector (33280-15138815, default 34816): 33792
Last sector, +sectors or +size{K,M,G,T,P} (33792-15138815, default 15138815):
Created a new partition 2 of type 'Linux' and of size 7.2 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: n
Command (m for help): w
The partition table has been altered.
Syncing disks.
Пример изменения размеров разделов.
Hidden text
opkg update
opkg install fdisk
BOOT="$(sed -n -e "/\s\/boot\s.*$/{s///p;q}" /etc/mtab)"
DISK="${BOOT%%[0-9]*}"
PART="$((${BOOT##*[^0-9]}+1))"
ROOT="${DISK}${PART}"
OFFS="$(fdisk ${DISK} -l -o device,start | sed -n -e "\|^${ROOT}\s*|s///p")"
echo -e "p\nd\n${PART}\nn\np\n${PART}\n${OFFS}\n\nn\np\nw" | fdisk ${DISK}
Скрипт для изменения размеров разделов автоматически.
Следующим шагом будет изменение размеров диска - в руководстве приведен хороший скрипт для выполнения всех действий автоматически.
opkg update
opkg install losetup resize2fs
BOOT="$(sed -n -e "/\s\/boot\s.*$/{s///p;q}" /etc/mtab)"
DISK="${BOOT%%[0-9]*}"
PART="$((${BOOT##*[^0-9]}+1))"
ROOT="${DISK}${PART}"
LOOP="$(losetup -f)"
losetup ${LOOP} ${ROOT}
fsck.ext4 -y ${LOOP}
resize2fs ${LOOP}
reboot
Заключительным шагом - будет перезагрузка роутера. Пусть все хорошо утрясется...
OpenWRT установлен ! Далее можно делать из этого роутера - МегаУберРоутер. У меня на другом роутере, но на базе Intel D410 и 4 гигабайтах ОЗУ - крутится AdGuard и очень даже неплохо убирает рекламу и прочее. При этом загрузка системы в среднем еле превышает 5%.
P.S. чуть в обморок не упал, когда увидел, сколько стоил CheckPoint T-120 в свое время...