Запуск CoreElec по сети, через PXE
Ниже — итоговая инструкция в одной редакции, уже с учетом всех правок: OPNsense 192.168.1.1 раздает DHCP/PXE и TFTP, а NFS-сервер с LibreELEC находится на 192.168.1.200. Для Generic x86_64 LibreELEC официально поддерживает сетевую загрузку с pxelinux.0, KERNEL, SYSTEM и NFS для SYSTEM//storage, а в OPNsense Kea есть штатные поля Next server, TFTP server и TFTP bootfile name.
1. Что получится в итоге
Схема загрузки будет такой:
D2500 -> DHCP/PXE на OPNsense 192.168.1.1 -> TFTP на OPNsense 192.168.1.1 -> pxelinux.0 -> KERNEL -> NFS boot/storage на 192.168.1.200
Для повторяемости это хороший базовый вариант: OPNsense делает только сетевую выдачу параметров и начальных файлов, а все данные LibreELEC лежат на отдельном Linux-сервере. LibreELEC в своем руководстве описывает именно такой классический сценарий с DHCP, TFTP и NFS.
2. Что нужно заранее
Нужны:
- OPNsense с адресом LAN
192.168.1.1 - Linux-сервер с адресом
192.168.1.200 - образ LibreELEC Generic x86_64
- файлы
pxelinux.0иldlinux.c32 - клиент Intel D2500, у которого включена загрузка по сети
В каталоге Ubuntu 24.04 netboot для amd64 напрямую доступны pxelinux.0 и ldlinux.c32, а в документации Intel для Desktop Boards указано, что PXE включается через Boot to Network, а F12 может принудительно вызвать загрузку с LAN.
3. Сначала сделай backup конфигурации OPNsense
Перед началом сохрани текущую конфигурацию через:
System -> Configuration -> Backups
OPNsense официально рекомендует использовать именно этот раздел для backup/restore конфигурации.
4. Подготовь NFS-сервер 192.168.1.200
Ниже — вариант под Ubuntu/Debian. Если у тебя другой Linux, логика та же, меняются только команды установки пакета.
Установи NFS-сервер:
sudo apt install nfs-kernel-server
Ubuntu Server documentation использует именно nfs-kernel-server для поднятия NFS-сервера.
Создай каталоги:
sudo mkdir -p /srv/libreelec/storage
В /srv/libreelec/boot должны лежать файлы LibreELEC:
SYSTEM
LibreELEC для network boot использует именно KERNEL и SYSTEM, а также монтирует сетевые boot и /storage по NFS.
Открой /etc/exports и добавь:
/srv/libreelec/storage 192.168.1.0/24(rw,no_subtree_check,async,no_root_squash)
Файл /etc/exports — штатное место для объявления NFS-экспортов; синтаксис и опции экспорта описаны в exports(5) для Ubuntu.
Применить экспорт:
sudo systemctl restart nfs-kernel-server
Команда exportfs -ra перечитывает экспортируемые каталоги, после чего сервис NFS перезапускается. Это соответствует стандартной последовательности настройки NFS на Ubuntu.
Проверка:
Ты должен увидеть оба экспорта:
/srv/libreelec/boot/srv/libreelec/storage
5. Откуда взять pxelinux.0 и ldlinux.c32
Бери оба файла из Ubuntu netboot amd64. В каталоге релиза они лежат готовыми:
pxelinux.0ldlinux.c32
Это подтверждается листингом каталога Ubuntu 24.04 netboot.
6. Установи TFTP-плагин на OPNsense
В OPNsense плагины устанавливаются через:
System -> Firmware -> Plugins
Официальная документация OPNsense прямо указывает, что плагины ставятся из раздела Firmware, а community plugins можно показать отдельной галочкой. Плагин os-tftp присутствует в экосистеме OPNsense и фигурирует в их release notes.
Установи os-tftp.
7. Подготовь TFTP-каталог на OPNsense
Для os-tftp на практике используется каталог:
Это зафиксировано в обсуждении плагина OPNsense и в практическом PXE walkthrough для OPNsense. Если каталога нет, создай его вручную.
Создай структуру:
В итоге на OPNsense должно получиться так:
├── pxelinux.0
├── ldlinux.c32
├── KERNEL
├── SYSTEM
└── pxelinux.cfg/
└── default
Это рабочий базовый вариант для первого запуска LibreELEC по сети. LibreELEC использует pxelinux.0, KERNEL, SYSTEM и pxelinux.cfg/default, а pxelinux.0 и ldlinux.c32 доступны в netboot-наборе Ubuntu.
8. Какие файлы куда копировать
На OPNsense в /usr/local/tftp скопируй:
pxelinux.0ldlinux.c32KERNELSYSTEM
На NFS-сервер в /srv/libreelec/boot скопируй:
KERNELSYSTEM
То есть KERNEL и SYSTEM будут лежать и на TFTP-сервере, и на NFS-сервере. Это удобно для первого, максимально простого варианта запуска. Логика загрузки соответствует документации LibreELEC network boot.
9. Настрой TFTP на OPNsense
После установки плагина открой:
Services -> TFTP -> General
Выставь:
- Enable = включено
- Listen address =
192.168.1.1
В практических примерах для OPNsense PXE/TFTP именно так и делают: TFTP слушает LAN-адрес firewall, а не loopback.
10. Настрой PXE-параметры в Kea DHCP на OPNsense
Открой:
Services -> KEA DHCPv4
На нужной LAN-подсети укажи:
TFTP server: 192.168.1.1
TFTP bootfile name: pxelinux.0
В документации OPNsense Kea эти поля присутствуют штатно: Next server, TFTP server, TFTP bootfile name.
11. Создай загрузочный конфиг LibreELEC
На OPNsense создай файл:
/usr/local/tftp/pxelinux.cfg/default
Содержимое:
PROMPT 0
LABEL LibreELEC
KERNEL /KERNEL
APPEND ip=dhcp boot=NFS=192.168.1.200:/srv/libreelec/boot disk=NFS=192.168.1.200:/srv/libreelec/storage quiet
Параметры boot=NFS=... и disk=NFS=... соответствуют схеме network boot из документации LibreELEC.
12. Опционально: загрузка SYSTEM в RAM
Если хочешь, чтобы LibreELEC после старта скопировал SYSTEM в оперативную память, добавь параметр toram в конец строки APPEND:
PROMPT 0
LABEL LibreELEC
KERNEL /KERNEL
APPEND ip=dhcp boot=NFS=192.168.1.200:/srv/libreelec/boot disk=NFS=192.168.1.200:/srv/libreelec/storage toram quiet
Разработчик LibreELEC в форуме проекта пишет, что toram копирует SYSTEM в RAM и требует примерно 150–200 МБ дополнительной памяти; для систем с менее чем ~2 ГБ RAM использовать это нежелательно.
13. Проверки до первого запуска
С любого хоста в сети проверь TFTP:
Если файл скачивается, TFTP работает.
Проверь NFS:
Если видны /srv/libreelec/boot и /srv/libreelec/storage, NFS работает.
Эти две проверки закрывают две основные точки отказа: начальную сетевую загрузку и доступность экспортов NFS.
14. Настройка клиента Intel D2500
На клиенте зайди в BIOS:
F2при старте- раздел
Boot - включить Boot to Network
- сохранить
F10
Для принудительной сетевой загрузки при POST можно использовать F12. Это описано в официальной инструкции Intel по PXE boot для Desktop Boards.
15. Что будет происходить при старте
Последовательность такая:
- D2500 получает IP по DHCP от OPNsense.
- OPNsense сообщает, что bootfile —
pxelinux.0. - Клиент забирает
pxelinux.0по TFTP с192.168.1.1. - PXELINUX читает
pxelinux.cfg/default. - Загружается
KERNEL. - LibreELEC монтирует
bootиstorageпо NFS с192.168.1.200. - Стартует Kodi.
16. Быстрый блок «если не взлетело»
Если загрузка не пошла, проверяй в таком порядке:
- Скачивается ли
pxelinux.0по TFTP с192.168.1.1. - Есть ли в
/usr/local/tftpфайлыpxelinux.0,ldlinux.c32,KERNEL,SYSTEM. - Правильно ли указан
pxelinux.0вTFTP bootfile name. - Видны ли экспорты
showmount -e 192.168.1.200. - Реально ли лежат
KERNELиSYSTEMв/srv/libreelec/boot. - Совпадает ли путь в
APPENDсо строками в/etc/exports.
Эти проверки напрямую соответствуют цепочке PXE/TFTP/NFS, на которой построен network boot LibreELEC.
17. Финальная шпаргалка
На OPNsense 192.168.1.1:
Enable: yes
Listen address: 192.168.1.1
Services -> KEA DHCPv4
Next server: 192.168.1.1
TFTP server: 192.168.1.1
TFTP bootfile name: pxelinux.0
Файлы на OPNsense:
├── pxelinux.0
├── ldlinux.c32
├── KERNEL
├── SYSTEM
└── pxelinux.cfg/default
Файл /usr/local/tftp/pxelinux.cfg/default:
PROMPT 0
LABEL LibreELEC
KERNEL /KERNEL
APPEND ip=dhcp boot=NFS=192.168.1.200:/srv/libreelec/boot disk=NFS=192.168.1.200:/srv/libreelec/storage quiet
Или с загрузкой SYSTEM в RAM:
PROMPT 0
LABEL LibreELEC
KERNEL /KERNEL
APPEND ip=dhcp boot=NFS=192.168.1.200:/srv/libreelec/boot disk=NFS=192.168.1.200:/srv/libreelec/storage toram quiet
На NFS-сервере 192.168.1.200:
/srv/libreelec/storage
/etc/exports:
/srv/libreelec/storage 192.168.1.0/24(rw,no_subtree_check,async,no_root_squash)