Ну что ж, так как время экспериментов не дает спать спокойно, и хотелось выяснить, что же лучше мне подходит OpenRWT, PfSense или OpenSense. Для этого было заготовлена трех литровая банка кофе, нервов и несколько спокойных вечеров. Поихалы…
Началось все с того, как же лучше установить OpenWRT на мою новомодную железяку, это же не роутер какой то «нищенский», а полноценный боевой с огромным количеством ядер и оперативной памяти. И таки энтузиасты, которые уже проводили подобные эксперименты нашлись, нам осталось только с поправкой на собственные нюансы все поставить.
На всякий случай напомним вводные. Имеем железо в составе:
1. Процессор — Intel N100;
2. DDR5 — 16Gb;
3. SSD M.2 — 256Gb;
4. LAN — 4 Port Realtek RTL8125 (Realtek pcie 2.5 gbe Family).
И да, тот же камень преткновения ждал меня и на этот раз, и на том же месте. По умолчанию наш сетевой чип не поддерживается толком, и надо (забегая вперед) собирать образ инсталляции руками с интеграцией необходимых драйверов.
Штож, приступим.
1. Идем на сайт сборки образа Generic x86/64 под наши нужды:
Выбираем последнюю доступную версию (в нашем случае 23.05.0)
И раскрываем список «Изменить перечень устанавливаемых пакетов и/или первый загрузочный скрипт»
Вносим изменения в список устанавливаемых пакетов, параллельно при необходимости выпиливая из него то, что не совсем нужно (например драйвера на сетевые intel).
В данном случае мы убираем kmod-r8169, так как он будет конфликтовать с нашими драйверами kmod-r8125 и к тому же, будут проблемы с работой портов на скорости 2.5Gb/s. И так же добавим пакеты, которые нам понадобятся в дальнейшем при работе с диском parted, blkid, mc, dosfstools
Нажимаем кнопку «Запросить сборку», и ждем результат. Обязательно не должно быть НИКАКИХ ошибок, в противном случае смотрим логи сборки, и меняем при необходимости состав пакетов.
Так как железо у нас совсем свежее и поддерживает UEFI в полный рост, то нам нужен будет образ COMBINED-EFI с поддержкой EXT4, его мы и скачиваем.
2. На этом шаге все самое простое. Берем balenaEtcher, и записываем образ на флешку, с которой будем загружаться.
Не забываем предварительно настроить BIOS так, чтобы наша коробочка включалась сама при появлении электричества, ну и выставляем приоритет загрузки с флешки.
3. Загружаемся с флешки (изначально пароль на root пустой). Наблюдаем внимательно за процессом загрузки, и смотрим, чтобы появлялись волшебные строчки инициализации наших LAN портов.
Скорее всего, первоначально будет путаница для прошивки, какие порты за что отвечают, и скорее всего методом научного и ненаучного тыка будет сложно определить, куда втыкать WAN, а куда LAN кабель.
Для этого заходим по пути (можно воспользоваться mc, так как мы его добавили в образ):
И смотрим назначение портов в конфигурации, при необходимости меняем назначение, и правильно подсоединяем провода.
После этого у нас теоретически должен уже появиться интернет на LAN порту, если у Вас все настроено по DHCP.
4. Далее у нас по плану идет настройка возможности загрузки с диска, а не с флешки. Для этого необходимо сконфигурировать наш M.2 накопитель, и клонировать образ флешки.
Запускаем обновление списка пакетов и скачиваем parted (если вдруг забыли добавить его при сборке образа):
opkg install parted
Смотрим название SSD диска:
В нашем случае:
/dev/sda — флешка
/dev/nvme0n1 — M.2 накопитель
Запускаем модификацию диска /dev/nvme0n1:
Создаем новую GPT таблицу:
Создаем раздел для загрузки и раздел для rootfs:
#Указываем параметры нашего раздела BOOT
#Метка раздела
EFI
#Тип файловой системы
fat32
# Начало
1MiB
#Конец
261MiB
# Присваиваем ESP
set 1 esp on
#Создаем раздел ROOT
#Метка раздела
DATA
#Тип файловой системы
ext4
# Начало
261MiB
#Конец
100%
Сохраняем изменения, написав команду q. Убедимся, что всё сделали правильно, вызвав parted -l.
Установим dosfstools для форматирования под FAT32 (если он у вас не добавлен в образ):
Необходимо отформатировать первый раздел в файловую систему FAT32, а второй раздел в EXT4 (p1, p2 — это разделы диска):
mkfs.ext4 /dev/nvme0n1p2
Ещё раз убедимся, что всё правильно отформатировалось (в столбце File должны быть указаны файловые системы).
Теперь необходимо смонтировать разделы:
mkdir /mnt_efi_old
mkdir /mnt_efi_new
mkdir /mnt_ext4_old
mkdir /mnt_ext4_new
#Монтируем папки, не забывая сверяться с нашими созданными разделами
mount /dev/sda1 /mnt_efi_old
mount /dev/nvme0n1p1 /mnt_efi_new
mount /dev/sda2 /mnt_ext4_old
mount /dev/nvme0n1p2 /mnt_ext4_new
Теперь скопировать содержимое папки /mnt_efi_old в папку /mnt_efi_new:
Установим blkid для вывода PARTUUID (если он у вас не добавлен в образ):
Для правильной загрузки необходимо поменять номер раздела в настройках загрузчика GRUB (можно опять же воспользоваться mc):
Впишем в файл grub.cfg PARTUUID раздела /dev/nvme0n1p2, а так же поменяем время ожидания загрузки timeout на единицу
Теперь скопировать содержимое папки /mnt_ext4_old в папку /mnt_ext4_new
Если в предыдущих шагах не удалось накосячить, после выключения железки командой HALT и вынимания флешки, мы должны получить загрузку с нашего накопителя.
Если у нас вдруг случилось что-то, и появился Wi-Fi модуль, и нам нужно его оживить, то находим, что это за модуль, его драйвера по аналогии с чипом LAN и устанавливаем:
hostapd-openssl
wpa-supplicant-openssl
#Пример установки драйвера Wi-Fi
kmod-mt7921e
Далее я думаю в настройках Web разберетесь, удачи (а она вам понадобится).
Полезные ссылки:
OpenWrt on x86 hardware
Как собрать свой собственный x86 Wi-Fi роутер
Supplementary Files OpenWRT
Formatting an NVMe SSD in MX Linux: A Step-by-Step Guide