PXE загрузка (организация и использование)
Модераторы: Olej, bellic, vikos
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
PXE загрузка (организация и использование)
К теме такой уже подступали не раз ... но детально она ещё не рассматривалась.
Исходные данные:
- есть работающая инсталляция Linux (не важно какой дистрибутив)...
- с развёрнутой сетью
Задача:
- добавить в эту инсталляцию то, чего не хватает для сетевой PXE загрузки...
- чтобы запускаемые новые рабочие станции (бездисковые, положим) при старте (включении) загружались по PXE с названной выше работающей инсталляции.
- (рабочие станции могут быть как реальные в LAN, так и виртуальные машины в виртуальной сети ... значения это, похоже, не имеет)
Как? ... детально и пошагово.
Исходные данные:
- есть работающая инсталляция Linux (не важно какой дистрибутив)...
- с развёрнутой сетью
Задача:
- добавить в эту инсталляцию то, чего не хватает для сетевой PXE загрузки...
- чтобы запускаемые новые рабочие станции (бездисковые, положим) при старте (включении) загружались по PXE с названной выше работающей инсталляции.
- (рабочие станции могут быть как реальные в LAN, так и виртуальные машины в виртуальной сети ... значения это, похоже, не имеет)
Как? ... детально и пошагово.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Нужные материалы по PXE:
- PXE
1. что IP TFTP-сервера, где лежит загружаемая система, по умолчанию совпадает с адресом DHCP-сервера, откуда получался IP загружаемого хоста ... а значит, что не по умолчанию может и не совпадать.
2. что запрос к DHCP-серверу делается дважды, и что IP этих запросов могут, в принципе, не совпадать.
- PXE
Авторы: Сергей Черепенин, Игорь Чубин
Самые любопытные места я здесь выделил:
pxe — Загрузка PXE-загрузчика. Прошивкой PXE, встроенной в сетевую карту, выполняется загрузка загрузчика pxelinux.
dhcp1 — Получение IP-адреса и адреса TFTP-сервера. Загрузчик pxelinux делает DHCP-запрос и с его помощью получает IP-адрес и адрес TFTP-сервера. По умолчанию адрес TFTP-сервера равен адресу DHCP-сервера.
tftp — Обращение к TFTP-серверу для получения ядра Linux. Загрузчик pxelinux обращается к TFTP-серверу и запрашивает у него ядро Linux (и, при необходимости, образ initrd).
kernel — Запуск ядра Linux. После того как ядро Linux загружено, управление передаётся ему.
dhcp2 — Получение IP-адреса DHCP. Ядро Linux делает запрос DHCP, с помощью которого получает свой IP-адрес, адрес NFS-сервера, на котором находится корневая файловая система, а также путь к местоположению этой файловой системы на диске.
nfs — Монтирование корневой файловой системы. Корневая файловая система монтируется.
init — Вызов процесса init. На корневой файловой системе находится файл /sbin/init, которому передаётся управление.
1. что IP TFTP-сервера, где лежит загружаемая система, по умолчанию совпадает с адресом DHCP-сервера, откуда получался IP загружаемого хоста ... а значит, что не по умолчанию может и не совпадать.
2. что запрос к DHCP-серверу делается дважды, и что IP этих запросов могут, в принципе, не совпадать.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Чем отличаются? - Ничем не отличаются.homecluster писал(а):Похоже что различия всё же есть. Виртуальная сеть отличается от реальной.- (рабочие станции могут быть как реальные в LAN, так и виртуальные машины в виртуальной сети ... значения это, похоже, не имеет)
Т.е. проводами и хабами, конечно, отличаются , но с точки зрения Linux они работают через одну и ту же сетевую подсистему, через протокол TCP/IP, когда система Linux никак не различает интерфейсы на которых это происходит.
На самом деле (если в деталях), там всё сложнее:
- в зависимости от настройки режима сетевого интерфейса виртуальной машины
- виртуальная машины может отправлять IP пакеты в самые разнообразные места
- а). в сетевую систему хост-машины, которая потом будет "маскарадить" эти пакеты в IP реальной LAN (NAT-режим);
- б). непосредственно в LAN на уровне MAC-пакетов Ethernet (сетевой мост);
- в). внутрь сетевой подсистемы хост-машины (внутренняя сеть);
- ... и ещё 2-3 режима настройки, отличающие то, как, с какой адресацией и куда будут направляться IP-пакеты.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Это вы просто не очень сильно понимаете кто, где и как крутитсяhomecluster писал(а):Чем отличаются? - Ничем не отличаются.
Отличается тем что одна крутиться в быстрой памяти а вторая крутиться на сетевых адаптерах и свичах (как минимум) соединённых кабелями на коннекторах.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Поехали дальше ...Olej писал(а):Нужные материалы по PXE:
- Настройка PXE сервера на Linux Ubuntu / Debian
- Setting up a server for PXE network booting - одно из лучших руководств Debian Administration (хоть оно и относится к 2006г.), мне особенно интересно было здесь конфигурирование в качестве DHCP-сервера dnsmasq, а не dhcp3-server (который все переписывают друг у друга ).
- http://www.openkazan.info/Debian-Suse-Fedora-Ubuntu-Linux-PXE-boot - это место интересно тем, что упоминается, хоть и очень кратко, о возможности установки (альтернативно) разных TFTP-серверов:
В частности, и встроенного TFTP в dnsmasq. Это интересный вариант, потому как dnsmasq при этом объединяет "3 в одном флаконе": DNS + DHCP + TFTP - всё, что нужно для организации PXE загрузки со стороны сервера загрузки.atftpd
dnsmasq
tftpd
tftpd-hpa
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Для начала, чтобы не сильно вникать, а посмотреть как это у людей делается, глянем PXE загрузку как она сделана на терминальном хосте кластера: кластер PelicanHPC в VirtualBox.Olej писал(а):В частности, и встроенного TFTP в dnsmasq. Это интересный вариант, потому как dnsmasq при этом объединяет "3 в одном флаконе": DNS + DHCP + TFTP - всё, что нужно для организации PXE загрузки со стороны сервера загрузки.
Кластер PelicanHPC очень неплох для рассмотрения, в нём ещё до запуска кластера (команда/скрипт pelican_setup) уже запущен SSH-сервер:
Код: Выделить всё
bash-4.2$ ssh user@192.168.1.20
user@192.168.1.20's password:
user@pel1:~$ cat /etc/debian_version
6.0.5
user@pel1:~$ who
user tty1 2012-11-07 22:52
user pts/0 2012-11-07 22:52 (:0.0)
user pts/1 2012-11-07 22:52 (:0.0)
user pts/2 2012-11-07 22:58 (192.168.1.5)
Код: Выделить всё
user@pel1:~$ ps -A | grep ssh
7071 ? 00:00:00 ssh-agent
7154 ? 00:00:00 sshd
7188 ? 00:00:00 sshd
7193 ? 00:00:00 sshd
7235 ? 00:00:00 sshd
7240 ? 00:00:00 sshd
user@pel1:~$ ps -A | grep netd
1499 ? 00:00:00 xinetd
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Но ещё результативнее подключиться к нему по SSH с рабочего Linux-компьютера в одной из панелей mc.Olej писал(а): Кластер PelicanHPC очень неплох для рассмотрения, в нём ещё до запуска кластера (команда/скрипт pelican_setup) уже запущен SSH-сервер:
Примерно в такой последовательности:
При этом получаем возможность легко гонять файлы (F5) на/из каталогов кластера на рабочий компьютер.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
До выполнения конфигурации командой pelican_setup, в каталоге TFTP-загрузки лежит только:
Запущен суперсервер xinetd:
Все скрипты инициализации у них лежат вот здесь:
А вот после выполнения конфигурации командой pelican_setup, после чего готово PXE, всё становится интереснее:
По дате хорошо видно, что они дописали конф. файл tftp-hpa:
И это, собственно, единственный разрешённый (disable = no) сервер для xinetd. Сам xinetd перезапущен (PID поменялся, см. выше):
xinetd подымает FTFP сервер:
И запущен dnsmasq, который у них совмещает DNS + DHCP:
Всё, в общем, понятно ... но неожиданностью (для меня) было то, что они при конфигурировании, динамически дописали содержимое TFTP-каталога для PXE-загрузки :
До конфигурирования здесь был только образ файловой системы initrd.img (см. выше).
Ну хитрецы!
Код: Выделить всё
user@pel1:~$ cd /var/lib/tftpboot/
user@pel1:/var/lib/tftpboot$ ls -l
total 10996
-rw-r--r-- 1 root root 11229260 Nov 7 22:52 initrd.img
Код: Выделить всё
user@pel1:~$ ps -A | grep netd
1499 ? 00:00:00 xinetd
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ which pelican_setup
/usr/bin/pelican_setup
user@pel1:/var/lib/tftpboot$ ls -l /usr/bin/pelican*
-rwxr-xr-x 1 root root 9444 Jun 21 10:53 /usr/bin/pelican_boot_setup
-rwxr-xr-x 1 root root 1592 Jun 21 10:53 /usr/bin/pelican_nodes
-rwxr-xr-x 1 root root 8597 Jun 21 10:53 /usr/bin/pelican_restart_hpc
-rwxr-xr-x 1 root root 99 Jun 21 10:53 /usr/bin/pelican_setup
-rwxr-xr-x 1 root root 4320 Jun 21 10:53 /usr/bin/pelican_setup_netdevice
-rwxr-xr-x 1 root root 1012 Jun 21 10:53 /usr/bin/pelican_setup_user
-rwxr-xr-x 1 root root 3386 Jun 21 10:53 /usr/bin/pelican_terminalserver
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls -l /etc/xinetd.d
total 9
-rw-r--r-- 1 root root 798 Mar 24 2008 chargen
-rw-r--r-- 1 root root 660 Mar 24 2008 daytime
-rw-r--r-- 1 root root 549 Mar 24 2008 discard
-rw-r--r-- 1 root root 580 Mar 24 2008 echo
-rw-r--r-- 1 root root 274 Nov 7 23:27 tftp-hpa
-rw-r--r-- 1 root root 727 Mar 24 2008 time
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ cat /etc/xinetd.d/tftp-hpa
service tftp
{
disable = no
id = chargen-dgram
socket_type = dgram
protocol = udp
user = root
wait = yes
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot/
}
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ps -A | grep netd
7571 ? 00:00:00 xinetd
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ps -A | grep ftp
7579 ? 00:00:00 in.tftpd
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ps -A | grep dns
7592 ? 00:00:00 dnsmasq
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls -l /var/lib/tftpboot/
total 13404
-rw-r--r-- 1 root root 11229260 Nov 7 22:52 initrd.img
-rw-r--r-- 1 root root 26816 Nov 7 23:27 pxelinux.0
drwxr-xr-x 2 root root 60 Nov 7 23:27 pxelinux.cfg
-rw-r--r-- 1 root root 2424448 Nov 7 23:27 vmlinuz-2.6.32-5-amd64
Ну хитрецы!
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls /var/lib/tftpboot/pxelinux.cfg/
default
user@pel1:/var/lib/tftpboot$ cat /var/lib/tftpboot/pxelinux.cfg/default
DEFAULT linux
LABEL linux
KERNEL vmlinuz-2.6.32-5-amd64
APPEND initrd=initrd.img nfsroot=10.11.12.1:/live/image ip=dhcp rw noautologin noxautologin union=aufs netboot=nfs boot=live
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Ядро, как я понимаю, при конфигурировании к PXE они копируют отсюда, чтобы ядра терминального и всех остальных хостов совпадали:Olej писал(а):До конфигурирования здесь был только образ файловой системы initrd.img (см. выше).Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls -l /var/lib/tftpboot/ total 13404 -rw-r--r-- 1 root root 11229260 Nov 7 22:52 initrd.img -rw-r--r-- 1 root root 26816 Nov 7 23:27 pxelinux.0 drwxr-xr-x 2 root root 60 Nov 7 23:27 pxelinux.cfg -rw-r--r-- 1 root root 2424448 Nov 7 23:27 vmlinuz-2.6.32-5-amd64
Ну хитрецы!
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls -l /boot/vmlinuz-2.6.32-5-amd64
-rw-r--r-- 1 root root 2424448 May 6 2012 /boot/vmlinuz-2.6.32-5-amd64
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls -l /usr/lib/syslinux/pxelinux.0
-rw-r--r-- 1 root root 26816 Oct 14 2010 /usr/lib/syslinux/pxelinux.0
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: PXE загрузка (организация и использование)
Ну и по NFS разделяется по сети общая файловая система:Olej писал(а):Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls /var/lib/tftpboot/pxelinux.cfg/ default user@pel1:/var/lib/tftpboot$ cat /var/lib/tftpboot/pxelinux.cfg/default DEFAULT linux LABEL linux KERNEL vmlinuz-2.6.32-5-amd64 APPEND initrd=initrd.img nfsroot=10.11.12.1:/live/image ip=dhcp rw noautologin noxautologin union=aufs netboot=nfs boot=live
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ cat /etc/exports
/live/image *(ro,async,no_subtree_check,no_root_squash,fsid=12345)
/home 10.11.12.0/255.255.255.0(rw,no_root_squash,async,no_subtree_check,fsid=54321)
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ls -l /live/
total 2
drwxr-xr-x 10 root root 220 Nov 7 22:51 cow
dr-xr-xr-x 6 root root 2048 Jun 21 11:26 image
Код: Выделить всё
user@pel1:/var/lib/tftpboot$ ps -A | grep nfs
7628 ? 00:00:00 nfsd4
7629 ? 00:00:00 nfsd
7630 ? 00:00:00 nfsd
7631 ? 00:00:00 nfsd
7632 ? 00:00:00 nfsd
7633 ? 00:00:00 nfsd
7634 ? 00:00:00 nfsd
7635 ? 00:00:00 nfsd
7636 ? 00:00:00 nfsd
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей