Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Ответить
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

Настройка загрузки по локальной сети (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
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

связанная тема dhcpd

/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
/srv/tftp/pxelinux.0

Код: Выделить всё

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
    return
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

Код: Выделить всё

apt install grub-imageboot
Чтобы прописать загрузочный ISO-образ в конфигурацию PXELINUX (`pxelinux.cfg/default`), нужно выполнить несколько шагов, поскольку PXELINUX сам по себе не может напрямую загружать ISO-образы. Обычно для этого используют технику загрузки ISO как файла через memdisk или преобразование ISO в подходящий формат.

Вот примерный порядок действий и конфигурационный пример для загрузки 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.
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

структура каталогов

Код: Выделить всё

/var/lib/tftpboot/
├── pxelinux.0
├── menu.c32 (опционально, для меню)
├── ldlinux.c32 (опционально)
├── configs/
│   └── default
└── images/ (если нужны образы или ISO)
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

Код: Выделить всё

apt install genisoimage

Код: Выделить всё

# Пример использования mkisofs (Linux)
mkisofs -o boot.iso -b pxelinux.0 -no-emul-boot -boot-load-size 4096 -record-errors -v boot/
-o boot.iso: Имя создаваемого ISO-образа.
-b pxelinux.0: Указывает загрузочный файл.
-no-emul-boot: Не эмулировать загрузочный сектор.
-boot-load-size 4096: Размер загрузочного сегмента.
-record-errors: Записывать ошибки в журнал.
-v: Режим verbose (показывает прогресс).
boot/: Каталог с файлами.
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

необходимые пакеты для пересборки iso образа для его совместимости с mtmdisk

Код: Выделить всё

apt-get install isolinux syslinux-common syslinux syslinux-utils xorriso nfs-kernel-server
/etc/exports

Код: Выделить всё

# Экспортируем директорию для 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)
Перезагрузить экспорт NFS:

Код: Выделить всё

sudo exportfs -ra
или

Код: Выделить всё

exportfs -r
или

Код: Выделить всё

sudo systemctl restart nfs-kernel-server
Проверить экспорт NFS

Код: Выделить всё

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
Обеспечьте наличие boot.cat и isolinux.bin в ISO:

Найти 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 или xorriso с правильными параметрами:
Нижеследующие команды нужно выполнять из каталога, где находятся все файлы, необходимые для сборки
Например, команда для создания гибридного 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 .
затем выполнить команду (в составе пакета syslinux-utils)

Код: Выделить всё

isohybrid filename-hybrid.iso
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

проверка статусов для 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.mountd
ya
^-^
Сообщения: 2746
Зарегистрирован: 16 дек 2021, 19:56

Re: Загрузка сетевого обозревателя (PXE boot) через локальную сеть

Сообщение ya »

проверка коннэкта на nfs

Код: Выделить всё

showmount -e localhost
Ответить