Загрузка сетевого обозревателя (PXE boot) через локальную сеть
Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
Настройка загрузки по локальной сети (PXE boot) на сервере Linux Devuan включает несколько шагов. Вот примерная инструкция, чтобы помочь вам настроить PXE сервер:
### 1. Установка необходимых пакетов
Установите TFTP-сервер и DHCP-сервер (если у вас ещё не настроены):
```bash
sudo apt update
sudo apt install tftpd-hpa isc-dhcp-server syslinux-common
```
### 2. Настройка TFTP сервера
Отредактируйте файл конфигурации `/etc/default/tftpd-hpa`:
```bash
sudo nano /etc/default/tftpd-hpa
```
Пример конфигурации:
```plaintext
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
```
Создайте директорию для TFTP и установите права:
```bash
sudo mkdir -p /var/lib/tftpboot
sudo chown -R tftp:tftp /var/lib/tftpboot
```
Перезапустите TFTP сервер:
```bash
sudo systemctl restart tftpd-hpa
```
### 3. Настройка DHCP сервера
Отредактируйте `/etc/dhcp/dhcpd.conf`:
```bash
sudo nano /etc/dhcp/dhcpd.conf
```
Пример минимальной конфигурации:
```plaintext
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
filename "pxelinux.0";
next-server 192.168.1.10; # IP вашего PXE сервера
}
```
Перезапустите DHCP сервер:
```bash
sudo systemctl restart isc-dhcp-server
```
### 4. Подготовка загрузочных файлов
Скопируйте необходимые файлы для PXE загрузки:
```bash
sudo cp /usr/lib/PXELINUX/pxelinux.0 /var/lib/tftpboot/
sudo mkdir /var/lib/tftpboot/pxelinux.cfg
```
Создайте конфигурационный файл `/var/lib/tftpboot/pxelinux.cfg/default`:
```plaintext
DEFAULT menu.c32
PROMPT 0
TIMEOUT 10
ONTIMEOUT local
MENU TITLE PXE Boot Menu
LABEL local
MENU LABEL Boot from local disk
LOCALBOOT 0
LABEL install
MENU LABEL Install Linux
KERNEL vmlinuz
APPEND initrd=initrd.img
```
Замените `vmlinuz` и `initrd.img` на ваши файлы загрузки.
### 5. Распространение образов
Поместите файлы ядра и initrd в `/var/lib/tftpboot/`.
### 6. Проверка
Перезагрузите устройство и выберите загрузку по сети. Устройство должно получить IP-адрес и начать загрузку с PXE.
---
укажите, какая именно ОС или дистрибутив вы хотите загружать через PXE
### 1. Установка необходимых пакетов
Установите TFTP-сервер и DHCP-сервер (если у вас ещё не настроены):
```bash
sudo apt update
sudo apt install tftpd-hpa isc-dhcp-server syslinux-common
```
### 2. Настройка TFTP сервера
Отредактируйте файл конфигурации `/etc/default/tftpd-hpa`:
```bash
sudo nano /etc/default/tftpd-hpa
```
Пример конфигурации:
```plaintext
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"
```
Создайте директорию для TFTP и установите права:
```bash
sudo mkdir -p /var/lib/tftpboot
sudo chown -R tftp:tftp /var/lib/tftpboot
```
Перезапустите TFTP сервер:
```bash
sudo systemctl restart tftpd-hpa
```
### 3. Настройка DHCP сервера
Отредактируйте `/etc/dhcp/dhcpd.conf`:
```bash
sudo nano /etc/dhcp/dhcpd.conf
```
Пример минимальной конфигурации:
```plaintext
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8;
filename "pxelinux.0";
next-server 192.168.1.10; # IP вашего PXE сервера
}
```
Перезапустите DHCP сервер:
```bash
sudo systemctl restart isc-dhcp-server
```
### 4. Подготовка загрузочных файлов
Скопируйте необходимые файлы для PXE загрузки:
```bash
sudo cp /usr/lib/PXELINUX/pxelinux.0 /var/lib/tftpboot/
sudo mkdir /var/lib/tftpboot/pxelinux.cfg
```
Создайте конфигурационный файл `/var/lib/tftpboot/pxelinux.cfg/default`:
```plaintext
DEFAULT menu.c32
PROMPT 0
TIMEOUT 10
ONTIMEOUT local
MENU TITLE PXE Boot Menu
LABEL local
MENU LABEL Boot from local disk
LOCALBOOT 0
LABEL install
MENU LABEL Install Linux
KERNEL vmlinuz
APPEND initrd=initrd.img
```
Замените `vmlinuz` и `initrd.img` на ваши файлы загрузки.
### 5. Распространение образов
Поместите файлы ядра и initrd в `/var/lib/tftpboot/`.
### 6. Проверка
Перезагрузите устройство и выберите загрузку по сети. Устройство должно получить IP-адрес и начать загрузку с PXE.
---
укажите, какая именно ОС или дистрибутив вы хотите загружать через PXE
Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
связанная тема dhcpd
/etc/dhcp/dhcpd.conf
Проверить статус
/srv/tftp/pxelinux.0
/etc/dhcp/dhcpd.conf
Код: Выделить всё
# ... другие настройки DHCP ...
# Интерфейс, на котором нужно раздавать адреса DHCP и PXE
interface eth0 {
option routers 192.168.1.1;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
# Определяем опции для PXE
option bootfile-name "pxelinux.0";
option root-path "/tftpboot/"; # Путь к директории TFTP
filename "pxelinux.0";
# Важно: указываем опцию для PXE boot server
option tftp-server-name "192.168.1.1"; # IP-адрес вашего TFTP-сервера
# Обязательно укажите хост-имя, которое будет использовать PXE
host example {
hardware ethernet 00:11:22:33:44:55;
fixed-address 192.168.1.100;
}
# ... другие хосты ...
# Поддержка PXE
next-server 192.168.1.1; # IP-адрес вашего TFTP-сервера
filename "pxelinux.0"; # Путь к загрузчику PXE на TFTP-сервере
}
}Код: Выделить всё
service isc-dhcp-server statusКод: Выделить всё
ps aux | grep dhcpdКод: Выделить всё
default menu.c32
timeout 30
prompt 0
label menu
menu "PXE Menu"
kernel /vmlinuz-image-name args="root=/dev/sda1 ro"
initrd /initrd-image-name
boot
title Boot failed
returnRe: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
Посмотреть статус
https://wiki.debian.org/PXEBootInstall
Код: Выделить всё
pgrep -lf tftpdRe: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
Код: Выделить всё
apt install grub-imagebootВот примерный порядок действий и конфигурационный пример для загрузки ISO через memdisk:
1. **Подготовка ISO-образа**
Поместите ISO-образ (например, `ubuntu.iso`) в директорию с файлами PXELINUX, например, `/var/lib/tftpboot/isos/`.
2. **Загрузка memdisk**
В каталоге PXELINUX должен быть `memdisk` — файл загрузочного модуля, обычно его можно взять из пакета Syslinux.
3. **Настройка файла `pxelinux.cfg/default`**
Пример конфигурации для загрузки ISO через memdisk:
```plaintext
DEFAULT iso
PROMPT 1
TIMEOUT 30
LABEL iso
MENU LABEL Boot ISO Image
KERNEL memdisk
INITRD /isos/your-iso-image.iso
APPEND iso
```
4. **Объяснение**:
- `KERNEL memdisk`: указывает, что используется memdisk для загрузки.
- `INITRD /isos/your-iso-image.iso`: путь к ISO-образу.
- `APPEND iso`: говорит memdisk, что нужно загрузить ISO.
5. **Дополнительные настройки**
Для правильной работы убедитесь, что:
- `memdisk` находится в каталоге `/tftpboot`.
- ISO-образ доступен по правильному пути.
- В конфигурации TFTP-сервера разрешены загрузки.
---
**Важно:**
Некоторые ISO-образы могут не работать через memdisk из-за особенностей их структуры. В таких случаях лучше подготовить их как образ виртуальной машины или использовать другие методы, например, подготовить загрузочный образ с помощью `isohybrid` или использовать PXE-образ, специально созданный для загрузки ISO.
Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
структура каталогов
Код: Выделить всё
/var/lib/tftpboot/
├── pxelinux.0
├── menu.c32 (опционально, для меню)
├── ldlinux.c32 (опционально)
├── configs/
│ └── default
└── images/ (если нужны образы или ISO)Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
Код: Выделить всё
apt install genisoimageКод: Выделить всё
# Пример использования mkisofs (Linux)
mkisofs -o boot.iso -b pxelinux.0 -no-emul-boot -boot-load-size 4096 -record-errors -v boot/-b pxelinux.0: Указывает загрузочный файл.
-no-emul-boot: Не эмулировать загрузочный сектор.
-boot-load-size 4096: Размер загрузочного сегмента.
-record-errors: Записывать ошибки в журнал.
-v: Режим verbose (показывает прогресс).
boot/: Каталог с файлами.
Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
необходимые пакеты для пересборки iso образа для его совместимости с mtmdisk
/etc/exports
Перезагрузить экспорт NFS:
или
или
Проверить экспорт NFS
Права доступа:
или
Обеспечьте наличие boot.cat и isolinux.bin в ISO:
Найти isolinux.bin и boot.cat
или
Создавайте ISO с помощью genisoimage или xorriso с правильными параметрами:
Нижеследующие команды нужно выполнять из каталога, где находятся все файлы, необходимые для сборки
Например, команда для создания гибридного ISO:
или
затем выполнить команду (в составе пакета syslinux-utils)
Код: Выделить всё
apt-get install isolinux syslinux-common syslinux syslinux-utils xorriso nfs-kernel-serverКод: Выделить всё
# Экспортируем директорию для Alpine
/os/alpine-standard-3.22.1-x86_64 *(rw,sync,no_subtree_check)
# Экспортируем директорию для Devuan
/os/devuan_daedalus_5.0.1_amd64_netinstall *(rw,sync,no_subtree_check)Код: Выделить всё
sudo exportfs -raКод: Выделить всё
exportfs -rКод: Выделить всё
sudo systemctl restart nfs-kernel-serverКод: Выделить всё
sudo exportfs -vКод: Выделить всё
# Убедитесь, что каталог принадлежит подходящему пользователю и группе:
sudo chown -R nfsuser:nfsgroup /srv/tftp/os/alpine-standard-3.22.1-x86_64
# Установите права доступа:
sudo chmod -R 755 /srv/tftp/os/alpine-standard-3.22.1-x86_64Код: Выделить всё
chown -R nobody:nogroup /srv/tftp/os/alpine-standard-3.22.1-x86_64Найти isolinux.bin и boot.cat
Код: Выделить всё
/usr/lib/ISOLINUX/isolinux.bin
/usr/lib/ISOLINUX/boot.catКод: Выделить всё
/usr/share/syslinux/isolinux.bin
/usr/share/syslinux/boot.cat
Нижеследующие команды нужно выполнять из каталога, где находятся все файлы, необходимые для сборки
Например, команда для создания гибридного ISO:
Код: Выделить всё
genisoimage -o output.iso -b /boot/isolinux/isolinux.bin -c /boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "CustomISO" .Код: Выделить всё
xorriso -as mkisofs -o output.iso -b /boot/isolinux/isolinux.bin -c /boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .Код: Выделить всё
isohybrid filename-hybrid.isoRe: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
проверка статусов для nfs сервера
Для проверки:
или
запустить
Код: Выделить всё
sudo systemctl enable nfs-kernel-server
sudo systemctl start nfs-kernel-server
Код: Выделить всё
systemctl status rpcbind
systemctl status nfs-kernel-server
Код: Выделить всё
sudo ss -ltnp | grep rpcbind
sudo ss -ltnp | grep nfsКод: Выделить всё
rpcinfo -pКод: Выделить всё
/usr/sbin/rpc.mountdRe: Загрузка сетевого обозревателя (PXE boot) через локальную сеть
проверка коннэкта на nfs
Код: Выделить всё
showmount -e localhost