Как и обещал в прошлой статье расскажу, как собрал и настроил свой собственный x86 Wi-Fi роутер с OpenWrt.
![x86 Wi-Fi роутер x86 Wi-Fi роутер](https://habrastorage.org/getpro/habr/upload_files/abb/ab9/8f8/abbab98f8e436f80f2ef5654ceeac301.jpg)
За основу был взят мини-ПК 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 модуль мне вообще бесплатно достался.
![Цена мини-ПК Цена мини-ПК](https://habrastorage.org/getpro/habr/upload_files/dc1/e5c/cb0/dc1e5ccb04dc0c12c6c366abccd42e44.png)
Такая система на долгие годы будет справляться с нагрузкой роутера и не только.
А так же на x86 привычнее устанавливать операционную систему, чем на ARM или RISC-V.
![Порты мини-ПК Порты мини-ПК](https://habrastorage.org/getpro/habr/upload_files/ac8/704/2d7/ac87042d7ddb7db7eb0c035e57f0cb8b.jpg)
Выбор 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 дБ.
![Антенны Антенны](https://habrastorage.org/getpro/habr/upload_files/d30/495/d5b/d30495d5b84a69d34c3eb23cdc93dea7.jpg)
Фотографии Mediatek MT7921K
![Mediatek MT7921K передняя сторона Mediatek MT7921K передняя сторона](https://habrastorage.org/getpro/habr/upload_files/17e/0be/8bd/17e0be8bdb78386bec9940b337bcf8a3.png)
![Mediatek MT7921K задняя сторона Mediatek MT7921K задняя сторона](https://habrastorage.org/getpro/habr/upload_files/0a9/3be/c69/0a93bec69616f79f0fa1ad064ff92afe.png)
Установка антенн и замена Wi-Fi M.2 адаптера
Разобрать мини-ПК не сложно:
Открутить снизу четыре винта
Открутить винт крепления M.2 SSD
Открутить винт крепления M.2 Wi-Fi
Открутить четыре винта крепления материнской платы
Нутро мини-ПК
Фотографии разборки мини-ПК
![Расположение винтов корпуса Расположение винтов корпуса](https://habrastorage.org/getpro/habr/upload_files/675/5ed/94a/6755ed94a404bac2e54a7af1167a3e85.png)
![Расположение винта M.2 SSD Расположение винта M.2 SSD](https://habrastorage.org/getpro/habr/upload_files/c94/d94/46b/c94d9446b41f307bc7aa590618458dff.png)
![Расположение винта M.2 Wi-Fi Расположение винта M.2 Wi-Fi](https://habrastorage.org/getpro/habr/upload_files/a68/375/40c/a6837540ce529ca55a53bf2c4f7df7d5.png)
![Расположение винтов материнской платы Расположение винтов материнской платы](https://habrastorage.org/getpro/habr/upload_files/ce7/131/3f4/ce71313f414ceec5ff4c0d879c8e3ef4.png)
Аккуратное достаем материнскую плату со стороны Ethernet-портов.
Фотографии материнской платы
![Верхняя сторона материнской платы Верхняя сторона материнской платы](https://habrastorage.org/getpro/habr/upload_files/501/996/ff4/501996ff4adb592d7365ad93b5df591d.png)
![Нижняя сторона материнской платы Нижняя сторона материнской платы](https://habrastorage.org/getpro/habr/upload_files/d49/ae7/e7c/d49ae7e7c425976a70b38a51ffaeb26b.png)
Сверлим отверстия для крепления антенн.
Фотографии отверстия под антенны
![Вид на отверстия из корпуса Вид на отверстия из корпуса](https://habrastorage.org/getpro/habr/upload_files/5d8/eab/424/5d8eab4244e74e9263ae26677b525fcb.png)
![Вид на отверстия снаружи корпуса Вид на отверстия снаружи корпуса](https://habrastorage.org/getpro/habr/upload_files/2a1/41d/455/2a141d45584e7aad59e14e0763abac55.png)
Пропустить оба кабеля антенн можно через левую часть материнской платы.
Фотографии пути кабелей антенн
![Места пропускания кабелей антенн Места пропускания кабелей антенн](https://habrastorage.org/getpro/habr/upload_files/164/d4c/bac/164d4cbac34309e11fdbb5eabb2026c1.png)
![Крепления антенн к модулю Крепления антенн к модулю](https://habrastorage.org/getpro/habr/upload_files/675/f2d/197/675f2d1974101f90809489d645611f8f.jpg)
Собираем всё в обратном порядке и для спокойствия изолируем изолентой винты и разъемы антенн, как на фотографиях процесса разборки.
Настройки UEFI
Так как в будущем роутер будет стоять без монитора, то все настройки UEFI надо сделать вначале.
![Страница UEFI Страница UEFI](https://habrastorage.org/getpro/habr/upload_files/630/ee2/05e/630ee205e30f262322e516171a6e12d2.jpg)
Выставить приоритеты загрузки, чтобы в будущем при вставлении USB-флешки
, роутер загружался бы с неё.
Фотография меню загрузки
![Меню загрузки Меню загрузки](https://habrastorage.org/getpro/habr/upload_files/972/9e2/869/9729e28698c321948691309134522c19.jpg)
А так же необходимо поменять поведение при отключении электропитания на S0
, чтобы роутер сам включался при возвращении электропитания.
Фотографии меню чипсета
![Меню чипсета Меню чипсета](https://habrastorage.org/getpro/habr/upload_files/109/2be/105/1092be1053cfd82379251912e058a7e9.jpg)
![Меню PCI Меню PCI](https://habrastorage.org/getpro/habr/upload_files/b13/6a9/994/b136a999475ae39d9998519de8c9ef26.jpg)
Установка OpenWrt на USB-флешку
Берем образ для x86-64 generic-ext4-combined-efi.img.gz. Распаковываем GZ архив. Для установки на USB-флешку я пользуюсь balenaEtcher.
![Установка образа OpenWrt Установка образа OpenWrt](https://habrastorage.org/getpro/habr/upload_files/ff0/aac/81b/ff0aac81bd4d28ddece87376082e8a36.png)
![Завершение установки Завершение установки](https://habrastorage.org/getpro/habr/upload_files/a6d/e15/c26/a6de15c26801c3c46b615c10fd9989c7.png)
Установка OpenWrt на роутер
Вставляем USB-флеш в роутер, а так же подключаем WAN и LAN кабель, WAN кабель левый, LAN кабель правый, если смотреть на порты. Подключаем питание и роутер сам загрузится с USB-флеш.
Теперь мы можем подключиться по SSH. Пароль не требуется.
ssh root@192.168.1.1
Запускаем обновление списка пакетов и скачиваем parted:
opkg update
opkg install parted
Смотрим название SSD диска:
parted -l
![Вывод parted -l Вывод parted -l](https://habrastorage.org/getpro/habr/upload_files/2a3/e5d/91c/2a3e5d91c68b73143f8a114bfac8c733.png)
Запускаем модификацию диска /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
:
![Вывод parted -l Вывод parted -l](https://habrastorage.org/getpro/habr/upload_files/165/10d/d2c/16510dd2ca0830d03d04a5e0b7f0e80f.png)
Установим dosfstools
для форматирования под FAT32
:
opkg install dosfstools
Необходимо отформатировать первый раздел в файловую систему FAT32
, а второй раздел в EXT4
:
mkfs.fat -F 32 /dev/sda1
mkfs.ext4 /dev/sda2
Ещё раз убедимся, что всё правильно отформатировалось:
![Вывод parted -l Вывод parted -l](https://habrastorage.org/getpro/habr/upload_files/35c/1ba/d37/35c1bad3707553f726e78c6656969f76.png)
Теперь необходимо смонтировать разделы /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
![Вывод blkid Вывод blkid](https://habrastorage.org/getpro/habr/upload_files/0db/360/15c/0db36015c2133ef54ff1c8d624aeb498.png)
Для правильной загрузки необходимо поменять номер раздела в настройках загрузчика GRUB
:
vim /mnt_efi_new/boot/grub/grub.cfg
Впишем в файл /mnt_efi_new/boot/grub/grub.cfg
PARTUUID
раздела /dev/sda2
, а так же поменяем время ожидания загрузки timeout
на единицу :
![Файл /mnt_efi_new/boot/grub/grub.cfg Файл /mnt_efi_new/boot/grub/grub.cfg](https://habrastorage.org/getpro/habr/upload_files/e6f/b0b/657/e6fb0b657ea6a824fd043f40cc4f44a5.png)
А теперь скопировать содержимое папки /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
:
![Правка /etc/init.d/boot Правка /etc/init.d/boot](https://habrastorage.org/getpro/habr/upload_files/c53/c55/842/c53c558421df91f5bfaed16eaddf3ce2.png)
Перезагружаем роутер и переходим в раздел настройки Wi-Fi:
![Меню Wi-Fi Меню Wi-Fi](https://habrastorage.org/getpro/habr/upload_files/14b/7c6/c04/14b7c6c0419434f7443541facc361a5a.png)
Нажимаем на кнопку ENABLE
, а потом EDIT
![Расширенные настройки Расширенные настройки](https://habrastorage.org/getpro/habr/upload_files/148/b19/d16/148b19d16e8879348a0c7b8e82176d56.png)
В меню расширенные настройки выбираем код страны US, для большего количества доступных диапазонов частот и мощностей излучения. Сохраняем и применяем настройки.
![Настройки Wi-Fi Настройки Wi-Fi](https://habrastorage.org/getpro/habr/upload_files/cc9/351/f8e/cc9351f8ec8e38890a92e98060138442.png)
Теперь выбираем AX(Wi-Fi 6) режим работы, нужный вам канал, и ширину полосы, так же мощность излучения. Чуть ниже можно выбрать настройки безопасности сети.
![Настройки безопасности Wi-Fi Настройки безопасности Wi-Fi](https://habrastorage.org/getpro/habr/upload_files/5b0/ac1/ee9/5b0ac1ee9f6a25e606b2a30f5caf3a1d.png)
Вывод
Мы смогли настроить x86 Wi-Fi роутер, и поднять на нем Wi-Fi 6 сеть. Так как на нем стоит OpenWrt, то мы можем использовать его как полноценный Linux. Настроить VPN, NAS, Web Server и т.д.
![](https://habrastorage.org/getpro/habr/upload_files/dd9/85e/9e9/dd985e9e914a6ebcecd44f9edffe22ee.png)