Окт 172024
 

openwrt Ну что ж, так как время экспериментов не дает спать спокойно, и хотелось выяснить, что же лучше мне подходит 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 под наши нужды:

https://firmware-selector.openwrt.org/?version=23.05.5&target=x86%2F64&id=generic

Выбираем последнюю доступную версию (в нашем случае 23.05.0)
И раскрываем список «Изменить перечень устанавливаемых пакетов и/или первый загрузочный скрипт»
Вносим изменения в список устанавливаемых пакетов, параллельно при необходимости выпиливая из него то, что не совсем нужно (например драйвера на сетевые intel).

base-files busybox ca-bundle dnsmasq dropbear e2fsprogs firewall4 fstools grub2-bios-setup kmod-button-hotplug kmod-nft-offload libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c odhcpd-ipv6only opkg partx-utils ppp ppp-mod-pppoe procd procd-seccomp procd-ujail uci uclient-fetch urandom-seed urngd kmod-amazon-ena kmod-amd-xgbe kmod-bnx2 kmod-e1000e kmod-e1000 kmod-forcedeth kmod-fs-vfat kmod-igb kmod-igc kmod-ixgbe kmod-r8125 kmod-tg3 luci parted blkid mc dosfstools

В данном случае мы убираем kmod-r8169, так как он будет конфликтовать с нашими драйверами kmod-r8125 и к тому же, будут проблемы с работой портов на скорости 2.5Gb/s. И так же добавим пакеты, которые нам понадобятся в дальнейшем при работе с диском parted, blkid, mc, dosfstools
Нажимаем кнопку «Запросить сборку», и ждем результат. Обязательно не должно быть НИКАКИХ ошибок, в противном случае смотрим логи сборки, и меняем при необходимости состав пакетов.
Так как железо у нас совсем свежее и поддерживает UEFI в полный рост, то нам нужен будет образ COMBINED-EFI с поддержкой EXT4, его мы и скачиваем.
2. На этом шаге все самое простое. Берем balenaEtcher, и записываем образ на флешку, с которой будем загружаться.
Не забываем предварительно настроить BIOS так, чтобы наша коробочка включалась сама при появлении электричества, ну и выставляем приоритет загрузки с флешки.
3. Загружаемся с флешки (изначально пароль на root пустой). Наблюдаем внимательно за процессом загрузки, и смотрим, чтобы появлялись волшебные строчки инициализации наших LAN портов.
Скорее всего, первоначально будет путаница для прошивки, какие порты за что отвечают, и скорее всего методом научного и ненаучного тыка будет сложно определить, куда втыкать WAN, а куда LAN кабель.
Для этого заходим по пути (можно воспользоваться mc, так как мы его добавили в образ):

vim /etc/config/network

И смотрим назначение портов в конфигурации, при необходимости меняем назначение, и правильно подсоединяем провода.
После этого у нас теоретически должен уже появиться интернет на LAN порту, если у Вас все настроено по DHCP.
4. Далее у нас по плану идет настройка возможности загрузки с диска, а не с флешки. Для этого необходимо сконфигурировать наш M.2 накопитель, и клонировать образ флешки.
Запускаем обновление списка пакетов и скачиваем parted (если вдруг забыли добавить его при сборке образа):

opkg update
opkg install parted

Смотрим название SSD диска:

parted -l

В нашем случае:
/dev/sda — флешка
/dev/nvme0n1 — M.2 накопитель
Запускаем модификацию диска /dev/nvme0n1:

parted /dev/nvme0n1

Создаем новую GPT таблицу:

mklabel gpt

Создаем раздел для загрузки и раздел для rootfs:

mkpart
#Указываем параметры нашего раздела BOOT
#Метка раздела
EFI
#Тип файловой системы
fat32
# Начало
1MiB
#Конец
261MiB
# Присваиваем ESP
set 1 esp on
#Создаем раздел ROOT
#Метка раздела
DATA
#Тип файловой системы
ext4
# Начало
261MiB
#Конец
100%

Сохраняем изменения, написав команду q. Убедимся, что всё сделали правильно, вызвав parted -l.
Установим dosfstools для форматирования под FAT32 (если он у вас не добавлен в образ):

opkg install dosfstools

Необходимо отформатировать первый раздел в файловую систему FAT32, а второй раздел в EXT4 (p1, p2 — это разделы диска):

mkfs.fat -F 32 /dev/nvme0n1p1
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:

cp -a /mnt_efi_old/. /mnt_efi_new

Установим blkid для вывода PARTUUID (если он у вас не добавлен в образ):

opkg install blkid

Для правильной загрузки необходимо поменять номер раздела в настройках загрузчика GRUB (можно опять же воспользоваться mc):

vim /mnt_efi_new/boot/grub/grub.cfg

Впишем в файл grub.cfg PARTUUID раздела /dev/nvme0n1p2, а так же поменяем время ожидания загрузки timeout на единицу
Теперь скопировать содержимое папки /mnt_ext4_old в папку /mnt_ext4_new

cp -a /mnt_ext4_old/. /mnt_ext4_new

Если в предыдущих шагах не удалось накосячить, после выключения железки командой HALT и вынимания флешки, мы должны получить загрузку с нашего накопителя.
Если у нас вдруг случилось что-то, и появился Wi-Fi модуль, и нам нужно его оживить, то находим, что это за модуль, его драйвера по аналогии с чипом LAN и устанавливаем:

luci-theme-material
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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)