Как и обещал в прошлой статье расскажу, как собрал и настроил свой собственный x86 Wi-Fi роутер с OpenWrt.
За основу был взят мини-ПК Beelink U59 Pro, если собирать сейчас можно рассмотреть похожий мини-ПК Beelink EQ12 с портами 2.5 Гбит/сек.
Компоненты Beelink U59 Pro:
Intel Jasper Lake N5105, 4 ядра с частотой до 2,90 ГГц
DDR4 2666 МГц 8 ГБ
M.2 SATA 512 ГБ
Gigabit Ethernet два порта
HDMI два порта
USB 3.1 два порта
USB 3.0 Type-C
M.2 Wi-Fi
UPD: Я покупал мини-ПК за 12500. А Wi-Fi модуль мне вообще бесплатно достался.
Такая система на долгие годы будет справляться с нагрузкой роутера и не только.
А так же на x86 привычнее устанавливать операционную систему, чем на ARM или RISC-V.
Выбор Wi-Fi M.2 адаптера и дополнительных антенн
По умолчанию стоит Intel AC3165, но в 2022 году хотелось иметь уже Wi-Fi 6E. Сначала я заказал Intel AX210, но, когда он пришел, оказалось он не умеет раздавать Wi-Fi 5 ГГц, да и в целом не такое большое количество устройств имеет режим раздачи. Изучив все Wi-Fi M.2 адаптеры на сайте пришел к выводу что оптимальным по цене, доступности и возможностям является Mediatek MT7921K. Он поддерживает протокол Wi-Fi 6E. По умолчанию стоят очень слабые антенны, которые не подходят для Wi-Fi роутера, и были куплены антенны на 10 дБ.
Фотографии Mediatek MT7921K
Установка антенн и замена Wi-Fi M.2 адаптера
Разобрать мини-ПК не сложно:
Открутить снизу четыре винта
Открутить винт крепления M.2 SSD
Открутить винт крепления M.2 Wi-Fi
Открутить четыре винта крепления материнской платы
Фотографии разборки мини-ПК
Аккуратное достаем материнскую плату со стороны Ethernet-портов.
Фотографии материнской платы
Сверлим отверстия для крепления антенн.
Фотографии отверстия под антенны
Пропустить оба кабеля антенн можно через левую часть материнской платы.
Фотографии пути кабелей антенн
Собираем всё в обратном порядке и для спокойствия изолируем изолентой винты и разъемы антенн, как на фотографиях процесса разборки.
Настройки UEFI
Так как в будущем роутер будет стоять без монитора, то все настройки UEFI надо сделать вначале.
Выставить приоритеты загрузки, чтобы в будущем при вставлении USB-флешки
, роутер загружался бы с неё.
Фотография меню загрузки
А так же необходимо поменять поведение при отключении электропитания на S0
, чтобы роутер сам включался при возвращении электропитания.
Фотографии меню чипсета
Установка OpenWrt на USB-флешку
Берем образ для x86-64 generic-ext4-combined-efi.img.gz. Распаковываем GZ архив. Для установки на USB-флешку я пользуюсь balenaEtcher.
Установка OpenWrt на роутер
Вставляем USB-флеш в роутер, а так же подключаем WAN и LAN кабель, WAN кабель левый, LAN кабель правый, если смотреть на порты. Подключаем питание и роутер сам загрузится с USB-флеш.
Теперь мы можем подключиться по SSH. Пароль не требуется.
ssh root@192.168.1.1
Запускаем обновление списка пакетов и скачиваем parted:
opkg update
opkg install parted
Смотрим название SSD диска:
parted -l
Запускаем модификацию диска /dev/sda
:
parted /dev/sda
Создаем новую GPT таблицу:
mklabel gpt
Создаем раздел для загрузки и раздел для rootfs:
mkpart EFI fat32 1MiB 261MiB
set 1 esp on
mkpart DATA ext4 261MiB 100%
Сохраняем изменения, написав команду q
. Убедимся, что всё сделали правильно, вызвав parted -l
:
Установим dosfstools
для форматирования под FAT32
:
opkg install dosfstools
Необходимо отформатировать первый раздел в файловую систему FAT32
, а второй раздел в EXT4
:
mkfs.fat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2
Ещё раз убедимся, что всё правильно отформатировалось:
Теперь необходимо смонтировать разделы /dev/sda1
, /dev/sda2
, /dev/sdb1
, /dev/sdb2
:
mkdir /mnt_efi_old
mkdir /mnt_efi_new
mkdir /mnt_ext4_old
mkdir /mnt_ext4_new
mount /dev/sdb1 /mnt_efi_old
mount /dev/sda1 /mnt_efi_new
mount /dev/sdb2 /mnt_ext4_old
mount /dev/sda2 /mnt_ext4_new
А теперь скопировать содержимое папки /mnt_efi_old
в папку /mnt_efi_new
:
cp -a /mnt_efi_old/. /mnt_efi_new
Установим blkid
для вывода PARTUUID
:
opkg install blkid
Для правильной загрузки необходимо поменять номер раздела в настройках загрузчика GRUB
:
vim /mnt_efi_new/boot/grub/grub.cfg
Впишем в файл /mnt_efi_new/boot/grub/grub.cfg
PARTUUID
раздела /dev/sda2
, а так же поменяем время ожидания загрузки timeout
на единицу :
А теперь скопировать содержимое папки /mnt_ext4_old
в папку /mnt_ext4_new
:
cp -a /mnt_ext4_old/. /mnt_ext4_new
Выключаем роутер и вытаскиваем USB-флешку.
Настройка OpenWrt
Остается установить драйвера и настроить Wi-Fi.
Через WebGUI по адресу http://192.168.1.1/ устанавливаем:
luci-theme-material
hostapd-openssl
wpa-supplicant-openssl
kmod-mt7921e
Экспериментальным путем было выявлено, что драйвер Wi-Fi просыпается позже чем нужно, и для корректной загрузки системы необходимо в файле /etc/init.d/boot
убрать оператор if
после /sbin/kmodloader
:
Перезагружаем роутер и переходим в раздел настройки Wi-Fi:
Нажимаем на кнопку ENABLE
, а потом EDIT
В меню расширенные настройки выбираем код страны US, для большего количества доступных диапазонов частот и мощностей излучения. Сохраняем и применяем настройки.
Теперь выбираем AX(Wi-Fi 6) режим работы, нужный вам канал, и ширину полосы, так же мощность излучения. Чуть ниже можно выбрать настройки безопасности сети.
Вывод
Мы смогли настроить x86 Wi-Fi роутер, и поднять на нем Wi-Fi 6 сеть. Так как на нем стоит OpenWrt, то мы можем использовать его как полноценный Linux. Настроить VPN, NAS, Web Server и т.д.