23 марта 2025

Установка OpenWRT на старенький IntelNUC

 

Установка OpenWRT на старенький IntelNUC

Написание данной статьи побудило меня чистое любопытство и желание освоить настройку на OpenWRT. Linux и всё что с ним связано, для меня - "тёмный лес", по этому мне пришлось перерыть кучу информации с сайтов и форумов, как наших так и зарубежных. Методом проб и ошибок я десятки раз устанавливал, настраивал, успешно превращал устройство в тыкву и начинал всё заново. В результате многочасовых разборок логики работы OpenWRT и поиска решений я периодически получал вынос головного мозга, красные как у рака глаза и сильное желание нажраться. Только в процессе написания этой статьи мне пришлось несколько раз делать перепрошивку, т.к. забывал зафиксировать (заскринить) какой-то важный момент, а текст без скрина не будет понятен читателю. В начале я собирался уместить всю информацию в одну статью, но потом передумал. Были опасения, что читатель утонет в море информации и не осилит всё за один раз. Будет несколько частей, много информации, скринов, ссылок и отступлений от темы. В принципе данный мануал подойдет под любой мини ПК или старенький ноутбук. На стационарный компьютер я бы не советовал это ставить из за высокого уровня шума и потребления энергии оным. Ну разве что только на виртуальную машину, да и то только ради саморазвития. Заранее прошу прощения, если в тексте вам попадутся не понятные комбинации слов, букв, символов, грамматические и орфографические ошибки. Хоть я и перечитывал статью несколько раз, возможно что-то пропустил. Надеюсь уважаемый читатель переварит мою писанину и выскажет свое мнение в комментариях.

Предыстория

Как-то раз, давным-давно, занесло меня на Митинский рынок. Уже даже не помню чего мне там было надо, в общем увидел на прилавке, среди всякого компьютерного старья IntelNUC. Сказать что он был сильно загажен - это ничего не сказать. Пыльный мох торчал изо всех щелей, но не смотря на это, он был в рабочем состоянии и с родным блоком питания. Внутри он был "пустой", т.е. без памяти, жесткого диска и платы расширения  mini-PCIe.  В общем я сторговался за 900 рублей, но без проверки и возможности возврата в случае чего. Принес домой, разобрал, отмыл от грязи. У меня в закромах была одна планка памяти на 512 Мб от ноутбука. Воткнул её в комп и запустил. Загрузился в BIOS и обновил его с сайта Intel. Потом сделал загрузочную флешку с WinPE и загрузился с неё. В общем малыш был рабочий хоть и слабенький, ведь у него стоит всего на всего Intel Atom CPU E3815 1.46GHz, так что на высокую производительность рассчитывать не приходилось. 

Характеристики IntelNUC DE3815TYKE

  • Процессор  Intel Atom E3815, 1.46 ГГц (Одноядерный) пассивное охлаждение
  • Оперативная память  Нет в комплекте, 1 слот SO-DIMM DDR3L (1.35V) максимум до 8Гб
  • Видео Intel HD Graphics
  • Сеть Gigabit Ethernet
  • Порты 1 x HDMI, 1 x USB 3.0, 2 x USB 2.0, 1 x VGA, 1 х RJ-45, 1 х наушники/микрофон
  • Жесткий диск Нет в комплекте, возможно установить 1 х 2.5" SATA HDD/SSD
  • Блок питания Внешний БП 36Вт

Intel DE3815TYKE

Шло время, ко мне обращались родные и друзья для того чтобы я проапгрейдил им ноутбук (увеличил память и поменял жесткий диск на SSD). После этого оставались старые планки и жесткие диски, кто-то забирал их для своих нужд, а кому-то они и задаром были не нужны. Таким образом я с периодичность апгрейдил свой NUK. Чего я только из него не делал, как не изгалялся, и домашний медиа сервер, и сервер Home Assistant, и регистратор для IP камер, и ТВ приставку. Как на универсальном ПК на нем, в принципе работают все программы, но жутко медленно и уныло. В общем наигравшись, я его забросил окончательно.

Внезапное желание собрать что-то нужное

Последнее время тема прошивки роутеров под OpenWRT стала очень популярна. Это позволяет ускорить работу бытового роутера и расширить его функционал. И тут у меня появилось внезапное желание провернуть подобное со своим NUK'ом. А что, всё равно лежит без дела. Безвозвратно окирпичить его, даже сильно постаравшись не получиться, а опыта поднабраться и дополнительных знаний, совсем не помешает. Для начала решил определиться с конфигурацией подопытного и что он будет выполнять. У компьютера только один сетевой разъем RJ-45 и полноценный роутер из него ну никак не получится. Остановился на том, что это будет этакий дорожный вариант роутера для дачи и поездок в отпуск. За выход в интернет будет отвечать разблокированный и перепрошитый ZTE MF823. Для расширения функционала, в разъем mini-PCIe на Али был куплен двухдиапазонный модуль Intel 7260HMW без Bluetooth за 470₽. 

Intel 7260HMW

Так как на борту уже присутствует eMMC-накопитель, емкостью 4 ГБ, от SATA диска для ОС можно отказаться, а поставить его как дополнительное хранилище под файлы. Читатель резонно может сказать - ведь eMMC медленнее любого современного SSD и будет прав. Я решил пойти таким путем, чтобы узнать будет ли работать эта конфигурация без дополнительных затрат.  Память решил пока поставить 2Гб, в крайнем случае если этого будет мало, в запасе есть планки на 4 и 8 Гб. Вот вроде и всё по железу. 

Как записать прошивку на внутренний накопитель я уже знал, приходилось это проворачивать когда "превращал" NUK в ТВ приставку под управлением LibreELEC. Стоял вопрос как собрать нужную прошивку именно под мои железки. С этим вопросом я и обратился на известный ресурс на букву Хэ, где тут же получил ответ типа: "Ничего у вас не выйдет дорогой товарищ, готовых решений нет и вообще это бессмысленная затея." Ну собственно другого ответа я и не ожидал. Пришлось разбираться самому. У меня есть роутер Asus RT-N56UB1 и у него как раз есть возможность подключать жесткие диски, USB модемы, а сама прошивка называлась AsusWRT, и под него оказывается уже давно есть стабильная рабочая версия OpenWRT. Тогда я и подумал, а что если я сравню пришивки по набору пакетов и просто  накидаю не достающие в прошивку под NUC. Эта затея дала мне некоторую ясность и начальные познания в формировании готового образа для OpenWRT. Правда пришлось еще искать информацию какой пакет за что отвечает, ну да ладно, если кому интересно - вот эта сводная таблица:

Установка OpenWRT на старенький IntelNUC
Методом "тыка" я перебрал все возможные варианты и комбинации, пока не набрел на страничку под названием Package categories на сайте OpenWRT. И в разделе Packages in firmware category нашел всё что искал и даже с запасом, на случай замены модема или wifi модуля. Чуть позже я подробнее остановлюсь на этой теме. И вот однажды, когда я уже начал терять интерес и готов был опять отложить NUC в долгий ящик, случилось чудо, образ собрался без ошибок, в тестовом варианте наконец то запустился на компьютере и ЗАРАБОТАЛ.


На этом лирическая часть заканчивается. Переходим к практике.

Подготовительный этап

Для того, чтобы вам немного передохнуть и подготовиться к серьёзной работе, предлагаю немного поскачивать по ссылкам необходимый софт. Итак, нам понадобится:

  1. Загрузочная флешка/внешний диск размером от 8 Гб с WinPE и всяким полезным софтом. Лично у меня прошло все чисто и гладко со сборкой от  Sergei Strelec. Инструкция по установке на флешку имеется в архиве в файле readme. Вы можете использовать любую другую, которой вы привыкли пользоваться.
  2. Программа balenaEtcher для записи прошивки OpenWRT на внутреннюю память или жесткий диск (SSD). Последние версии у меня почему-то вылетали и по этому советую скачать версию balenaEtcher-Portable-1.10.6.exe Если что, тут лежат все версии: перейти. Эту программу закидываем на загрузочную флешку из пункта один.
  3. Нам понадобится программа для доступа к роутеру по протоколу SSH. Этих программ много, начиная от древней PuTTy и заканчивая Xshell, которую я и рекомендую поставить. На крайний случай в сборке образа OpenWRT уже есть эмулятор терминала ttyd, можно будет воспользоваться им.
    Встроенный эмулятор терминала
        
  4. Еще понадобится программа WinSCP чтобы можно было в удобном и привычном формате редактировать файлы, создавать папки и давать им разрешения.
И самое главное! Нужен компьютер с двумя LAN портами или ноутбук с LAN и WiFi а лучше и то и другое. Почему это так важно? Хоть это и мало вероятно, но может случится так, что ваш модем сразу не удастся запустить и придется искать дополнительные пакеты, а без доступа к интернету это будет проблематично. По этому один LAN порт будет использоваться для соединения с NUK, а второй LAN или WIFI для связи с внешним миром, т.е. для интернета. Думаю что проводная мышь и клавиатура найдется у каждого. Если у вас есть свободный монитор, это также поможет в плане визуализации, понимать как происходит процесс загрузки. Но можно и без него обойтись, как говориться на нет и суда нет.

Железо-софтовая часть подготовлена, переходим к сборке образа. Для это переходим по ссылке на страницу Firmware Selector и в строке поиска вбиваем х86 и далее как показано на скринах


Небольшое отступление по поводу пакетов для физических устройств. Если у вас другая сетевая карта и другой модуль WIFI, то вам нужно пройти сюда
И выбрать пакет под ваше устройство. Например вот пакет для Intel 7260HMW
И заменить или добавить необходимые вам пакеты в подготовленном списке
Для всех стандартных USB модемов я добавил в подготовленный список всё что нашел, так что если у вас только какой-то экзотический модем, вам так же придётся самому найти пакеты под него. Пакет который нужен для дополнительной поддержки многих сетевых устройств уже есть в составе подготовленного списка. 

Выделяем подготовленный список пакетов:
base-files busybox curl ca-bundle dnsmasq dropbear e2fsprogs firewall4 fstools owut auc cfdisk grub2-bios-setup kmod-button-hotplug kmod-nft-offload libc libgcc libustream-mbedtls logd mkf2fs mtd netifd nftables odhcp6c ddns-scripts odhcpd-ipv6only opkg partx-utils ppp ppp-mod-pppoe procd-ujail uci uclient-fetch ttyd adblock gdisk f2fs-tools travelmate urandom-seed urngd comgt-ncm  minidlna wwan f2fs-tools watchcat aircrack-ng airmon-ng dynapoint hcxdumptool hcxtools horst pixiewps reaver wavemon hostapd hostapd-utils iwlwifi-firmware-iwl7260 umbim kmod-iwlwifi kmod-amd-xgbe kmod-bnx2 kmod-dwmac-intel kmod-e1000e kmod-e1000 kmod-fs-vfat kmod-nft-queue kmod-nf-conntrack kmod-igb kmod-igc kmod-ixgbe kmod-r8169 r8169-firmware kmod-tg3 kmod-drm-i915 kmod-fs-ext4 kmod-fs-exfat kmod-bonding kmod-fs-ntfs3 kmod-fs-f2fs kmod-usb-core kmod-usb-ohci kmod-usb-net kmod-usb2 kmod-usb3 kmod-usb-storage-uas usbutils block-mount mount-utils wsdd2 kmod-usb-serial-wwan kmod-usb-serial-ipw kmod-usb-net-cdc-ether kmod-usb-net-rndis kmod-usb-serial-option usb-modeswitch kmod-usb-serial-ipw kmod-usb-storage kmod-usb-storage-extras kmod-usb-storage-uas hdparm luci-app-hd-idle luci luci-ssl luci-app-samba4 luci-app-opkg luci-i18n-base-ru luci-i18n-ddns-ru luci-i18n-firewall-ru luci-i18n-hd-idle-ru luci-i18n-minidlna-ru luci-i18n-package-manager-ru luci-i18n-samba4-ru luci-i18n-travelmate-ru luci-i18n-watchcat-ru luci-mod-admin-full luci-app-ttyd luci-i18n-ttyd-ru luci-app-watchcat luci-i18n-watchcat-ru luci-app-adblock luci-i18n-adblock-ru luci-app-travelmate luci-app-ddns luci-app-minidlna luci-app-opkg luci-app-attendedsysupgrade luci-i18n-attendedsysupgrade-ru
Небольшое отступление по поводу параметра lan_ip_address=192.168.1.1 этот параметр по умолчанию может использовать так же ваш домашний роутер (из коробки по умолчанию это ~90% всех бытовых роутеров), еще такой же адрес может быть у модема (у моего например 192.168.0.1, но был у меня случай когда на модеме и роутере были одинаковые адреса и пришлось устраивать танцы с бубном). По этому во избежание сетевых конфликтов следует указать новому роутеру адрес из другого сегмента например 192.168.10.1 или 192.168.50.1 
Сборка началась...
Все идет как надо... 
Ура! Мы только что скомпилировали свою собственную сборку прошивки. Возьмём с полки пирожок. Если выскочила ошибка на первом же этапе сборки tr-validate_manifest, проверьте в логе сборки, возможно что-то не правильно скопировалось и потерялся пробел или пакет, который вы сами добавили вступил в конфликт с другими пакетами или устарел и уже не поддерживается системой. 
Небольшое отступление по поводу какую прошивку выбрать? Для понимания разделим компьютеры на древние, старые и современные. К древним будем относить компьютеры с x86 архитектурой (Legacy) , в принципе и на них можно накатить прошивку, но в данной статья это не будет описано. Старые компьютеры с архитектурой x86-x64 (Generic) с BIOS без поддержки UEFI. Новые компьютеры с архитектурой х64 тоже (Generic), но в BIOS встроен UEFI и на них встанет прошивка и та и эта. Раздел для восстановления (SQUASHFS) - это когда вы что-то понажимали, всё стало плохо работать, заходите в настройки и делаете сброс на заводские настройки. Себе я поставил прошивку SQUASHFS и именно из-за этого. Зато теперь можно быстро всё сбросить и быстро настроить, а не доустанавливать всё по одному пакету вручную через LuCi или терминал. 
Итак, мы скачали свой образ, теперь его надо распаковать любым архиватором и закинуть на нашу загрузочную флешку из пункта один. Место куда вы её скопируете не имеет никакого значения, главное чтобы вы сами потом не забыли куда.

Прошивка роутера


У нас всё готово чтобы как говорят профи, накатить прошивку. Вставляем в компьютер загрузочную флешку/диск, подключаем монитор, клавиатуру и мышь.

Включаем питание и периодически нажимая клавишу F2 попадаем в BIOS. У разных производителей BIOS, для входа могут быть задействованы другие горячие клавиши, например Del (Delete). Найдите в интернете инструкцию от своего ноутбука/материнской платы и прочитайте эту информацию там.
Проверяем правильно ли установлено время. Если время сбилось, проверяем не было ли ошибок по CMOS батарее. У меня например от долгого бездействия она сдохла и пришлось её оперативно менять. Даем разрешение на загрузку с USB.
Активируем сетевую карту и встроенную память eMMC
Ставим переключатель на Power On. Будет не совсем хорошо, если после кратковременного отключения питания роутер сам не включится и вам придется идти и включать его вручную.
Разрешаем все типы загрузки
Выбираем Windows 8, Windows 10 в качестве загрузочных. Если включите Fast Boot, не забудьте проставить галочки на показ при загрузке кнопок F2, F7, F10 иначе в дальнейшем будет проблемой выбрать загрузку с USB и попасть в BIOS
Тут всё отключаем
Нажимаем F10 чтобы сохранить настройки и перезагрузить компьютер. После перезагрузки периодически нажимаем F10 до появления экрана выбора загрузочного диска. Тут я вкратце расписал для разных типов ПК, возможные примерные варианты отображения информации. Выбираем нашу загрузочную флешку или диск, как в моём случае и жмём Enter
Я себе загрузочный диск собирал на Ventoy, кто делал загрузочный диск с образа Strelec см. следующий скрин

Хочу сразу предупредить на 2 Гб. памяти всё это работает очень медленно, наберитесь терпения
Запускаем программу для работы с дисками. В принципе все они подходят, тут выбор за вами. 
Как я уже говорил, мне пришлось несколько раз проходить все этапы прошивки, т.к. забывал сделать скрин. Вот пожалуйста, сейчас удалю все что целый час настраивал. Всё ради читателя!
Удаляем все разделы с Диска 0


Конвертируем раздел из GPT в MRB иначе будет ругаться balenaEtcher


Диск к прошивке подготовлен. Можно оправиться и перекурить
Запускаем портативную версию balenaEtcher
Выбираем наш самодельный образ 

Выбираем встроенную память. Если вы будете ставить образ на жесткий дик (SSD) выбирайте его.

Началась прошивка
Бывает и такой неожиданный конец, однако как показа практика все записалось
Так и есть, всё прошло отлично. Видимо программный глюк. Обратите внимание, у нас осталось 3.5 Гб незанятой области, в дальнейшем мы её будем использовать под файл подкачки и небольшую область для хранения файлов.  
Теперь очень важный момент, не пропустите его! Обязательно выключаем компьютер через меню Windows. Это важно. Поверьте! Сначала выключаем потом далее по списку.
Вот и всё, а ты боялась. Даже юбка не помялась.

Первое включение


Всё готово к первой загрузке. Это всегда так волнительно. А вдруг не загрузится? Глаза бояться, а руки делают. Отключаем клавиатуру, мышь и извлекаем загрузочную флешку/диск. Монитор можно оставить. Подключаем в любой разъем USB-2 модем. Подключаем сетевой кабель, один конец в роутер другой в домашний компьютер/ноутбук.

Включаем компьютер и созерцаем поток матрицы на экране
Переходим на домашний компьютер/ноутбук. Открываем браузер, вспоминаем какой IP адрес мы указывали в настроечном загрузочном скрипте и вводим его в строке поиска. Вспоминаем пароль и вводим его
Вот это портянка!
 Всё что нужно уже установлено, осталась самая малость - настроить. Крепитесь!
Первым делом идем в раздел Система - Система
Оставляем или меняем имя хоста на своё уникальное. Выставляем часовой пояс. Далее Синхронизация по NTP, Применить. Действия Сохранить, Применить нужно выполнять всегда, после внесения изменений в настройки. Иначе ничего не сохранится. 
Видим изменения в заголовке, поменялось имя хоста 
Установим по умолчанию язык интерфейса и тему оформления по вашему желанию.
Займемся настройкой беспроводной сети. Предварительно можно посмотреть загруженность эфира и выбрать свободный канал. Переходим в раздел Статус - Анализ каналов
Переходим в раздел Сеть - Беспроводная сеть. Для настройки нажимаем Изменить.
Производим настройку частоты, канала, максимальной мощности (на максимум) и код страны.
Во вкладке Защита беспроводной сети выбираем алгоритм шифрования
Закрываем настройки и применяем их.
Теперь нам доступна точка доступа и можно к ней подключаться.
Одна беда и первое разочарование, роутер работает только в каком то одном диапазоне частот или 2.4Ghz или 5Ghz. Что я только не делал, как не ухищрялся и не менял настройки конфигурационных файлов, ничего не помогает. По идее, как я везде читал, несмотря на одно физическое устройство, у нас в списке беспроводных сетей должно быть два устройства radio0 и radio1. Но их нет! Возможно сам модуль не в состоянии одновременно тянуть два канала, может ещё что, не знаю.
При переходе в раздел Сеть - Интерфейсы - вкладка Устройства появился наш беспроводной модуль. 
Создадим для него интерфейс
Назовём его wlan0

Сохраним настройки
Теперь произведем дополнительные настройки
Назначим зоны межсетевого экрана
Перезагрузим роутер
После перезагрузки видим что точка доступа активна и к ней подключены клиенты
Теперь займемся не распределенной (свободной) памятью на eMMC. Устанавливаем, запускаем и настраиваем программу Xshell





Переходим в раздел Система - Монтирование разделов. Нам нужно узнать идентификатор внутренней eMMC памяти. Если вы ставили на жесткий диск или SSD ищем их идентификатор.

Выбираем свободную область Free space клавишами вверх/вниз и жмем New
Вводим размер для диска подкачки. Я задал значение 1G, что соответствует 1 Гб. Жмем Enter
Задаем Тип диска (Type)
Выбираем Linux Swap
Снова выбираем свободную область Free space клавишами вверх/вниз и жмем New
Нажимаем Enter подтверждая что всё оставшееся свободное пространство отдаем под следующий раздел.
Устанавливаем тип файловой системы для нового раздела
Выбираем Linux Filesystem или MBR partition scheme, но потом его нужно будет отдельно форматировать в NTFS. 
Нажимаем Write и применяем настройки разделов.
Переходим в раздел Система - Монтирование дисков. Жмем сначала на Создать config, затем  Монтировать подключенные устройства
Подключаем диск для подкачки. Тот который мы сделали 1 Гб.
Выбираем UUID ориентируясь на размер
Теперь ставим галочки на новых разделах и нажимаем Применить.
Два новых раздела смонтированы и доступны для использования. Если вы захотите подключить внешний USB диск или флешку, они должны монтироваться автоматически и будут доступны в системе.
Теперь сделаем наш диск доступным для внешних пользователей. Переходим в раздел Службы - Сетевые ресурсы (это сервер Samba)
Так же можно расшарить внешний USB/флешку добавив новый пункт, другое название, например Movie и в поле Путь указать его точку монтирования, которую можно посмотреть в разделе Монтирование дисков
Еще можно открыть доступ к монтированным дискам через DLNA (miniDLNA)
И всё у нас теперь чинно и благородно. Как в старые времена. Можно подключать диск с фильмами и смотреть на приставках и телевизорах.
И как бы всё хорошо, но при попытке подключиться к сетевому диску на роутере из под Windows мы получаем такое сообщение с ошибкой
Долго я ломал голову и "ломал" настройки Samba, пока не прочитал у одного умного человека, что Samba тут не причем. Это система Windosw не дает гостевой доступ к системе и с точки зрения безопастности, правильно делает. Но нам то что делать? Придется опять настраивать. Заходим в раздел Службы - Сетевые ресурсы вкладка Настройка шаблона. Находим вот такой параметре map to guest = bad user Это означает, что запросы с неправильным паролем будут отклонены, если такое имя пользователя существует. Если не существует, то такие запросы будут считаться как попытки зайти гостем, а гостей Windows не любит, по этому меняем его на map to guest = never Это означает, что запросы с неправильным паролем будут отклонены. Так же снимаем галочку с параметра Разрешить гостевой доступ. Сохраняем настройки.
Пробуем зайти ещё раз. Ага! Ошибка ушла, но зайти всё равно не получится. Что делать? Копаем дальше...
Чтобы войти, нужно создать пользователя. Запускаем WinSCP. Заполняем форму для входа. Выбираем протоком SCP и подключаемся
  Переходим в папку /etc и находим файл passwd. Нажимаем кнопку Править.
Добавляем в конец файла строчку user1:x:1001:1001:smb user:/dev/null:/bin/false где user1 это пользователь которого вы хотите добавить. Можно использовать любое имя пользователя кроме root. Сохраняем изменения
В той же папке находим файл group. Нажимаем Править
Добавляем в конец файла строчку user1:x:1001:user1 где user1 должно совпадать с именем пользователя которое было указано в файле passwd. Сохранить изменения.
Переходим в программу Xshell, заходим  вбиваем команду smbpasswd -a user1 где user1 это имя только что созданного пользователя и нажимаем Enter. Вводим новый пароль и нажимаем Enter. Вводим пароль повторно и нажимаем Enter. Готово! 
Теперь при входе на сетевой диск из Windows заполняем форму данными нового пользователя 
И вуаля! Вход на сетевой диск открыт
Конечно теперь придется делать авторизацию на ТВ приставке и телевизоре с Android. Но это делается только один раз, так что не напрягает.
  
Продолжение следует...
 


Комментариев нет:

Отправить комментарий