Linux Network Administration — Бездисковая загрузка. Часть первая, лирическая: pxelinux
Небоскребы, небоскребы,
Стены, лифты, этажи
Расскажу я вам ребята
О восстании машин...
В один прекрасный день я обнаружил, что гора болванок на моём столе выросла до невменяемых размеров, а их затертость переросла в нечто угрожающее. Я понял, что устал каждый раз записывать одно и то же на болванки, тем более, что всё чаще сервера мои приходили без CD-ромов.
Выход был очевиден, прост и прекрасен - pxelinux.
Итак, как говорит нам SYSLINUX-вики, PXELINUX является производным от SYSLINUX, предназначенным для загрузки Linux с сетевого сервера. Как он работает? Для начала немного установочно-настроечной рутины. Описываю для gentoo, но особой разницы для других дистрибутивов, уверен, не будет.
Для следующего блюда нам понадобятся dhcp и tftpd-сервера и пакет syslinux. О подробной настройке рассказывать нет смысла - мануалов в сети предостаточно.
1. устанавливаем dhcpd и tftp сервера и syslinux:
2. правим конфиг dhcpd:
в описание вашей подсети дописывам всего две строчки:
первая указывает на адрес tftp-сервера, на который мы чуть позже положим всё, что нам нужно.
вторая, очевидно, на имя файла на этом сервере, который мы будем грузить.
3. правим конфиг tftpd:
в настройках tftpd нам нужно указать путь к рабочей директории:
4. Копируем бинарник pxelinux'а в директорию tftpd, создаём папку для его конфигов:
При загрузке pxelinux ищет файлы в папке pxelinux.cfg в следующей последовательности:
Т.е. первым делом ищет файл имя которого является мак-адресом вашей сетевой карточки (шестнадцатеричный, нижний регистр с разделителями "-"), далее - по IP адресу, опять же шестнадцатиричному. Чтобы вы не занимались зря ерундой, вместе с syslinux идет замечательная утилитка gethostip:
Если и такой файл не найден, pxelinux убирает последний символ и ищет снова. Дойдя до конца и ниего не найдя, фактически в отчаянии, pxelinux тянется за файликом default. Такая достаточно гибкая схема позволяет вам как делать уникальные конфигурации для отдельных машин, так и для сегментов подсети. Мы рассмотрим конфигурацию с файликом default.
Синтаксис и логика файлов настройки конфигурации pxelinux ровно такие же как и у syslinux, поэтому особенно подробно рассказывать о них опять же не имеет смысла. Расскажу о небольшой вкусности:
для того чтобы получить русское меню, вам нужно:
1. распаковать шрифт для кодировки сp866 внутрь директории tftpd:
2. в конфиге директивой FONT указать имя шрифта:
3. сохранить файл конфигурации в кодировке cp866
voila! у нас меню на русском.
вот мой конфиг default: http://pastebin.com/cKdSkAvb
Как видно из конфига, рядом с pxelinux.0 у меня лежат vesamenu.0 и memdisk, первый - для красоты, второй - для загрузки hiren's boot cd.
Вот и всё. Это была лирическая часть. Она была посвящена pxelinux. В следующих сериях я расскажу вам о gPXE, зачем он нужен, и какие волшебные возможности но нам дарит.
П.С. Вы меня сильно не ругайте, есличо - это моя первая статья вообще-то. Критика приветствуется.
Стены, лифты, этажи
Расскажу я вам ребята
О восстании машин...
В один прекрасный день я обнаружил, что гора болванок на моём столе выросла до невменяемых размеров, а их затертость переросла в нечто угрожающее. Я понял, что устал каждый раз записывать одно и то же на болванки, тем более, что всё чаще сервера мои приходили без CD-ромов.
Выход был очевиден, прост и прекрасен - pxelinux.
Итак, как говорит нам SYSLINUX-вики, PXELINUX является производным от SYSLINUX, предназначенным для загрузки Linux с сетевого сервера. Как он работает? Для начала немного установочно-настроечной рутины. Описываю для gentoo, но особой разницы для других дистрибутивов, уверен, не будет.
Для следующего блюда нам понадобятся dhcp и tftpd-сервера и пакет syslinux. О подробной настройке рассказывать нет смысла - мануалов в сети предостаточно.
1. устанавливаем dhcpd и tftp сервера и syslinux:
#emerge -av dhcp tftp-hpa syslinux
2. правим конфиг dhcpd:
#your_favorite_editor /etc/dhcp/dhcpd.conf
в описание вашей подсети дописывам всего две строчки:
1 2 |
next-server 192.168.0.1; |
первая указывает на адрес tftp-сервера, на который мы чуть позже положим всё, что нам нужно.
вторая, очевидно, на имя файла на этом сервере, который мы будем грузить.
3. правим конфиг tftpd:
#your_favorite_editor /etc/conf.d/in.tftpd.conf
в настройках tftpd нам нужно указать путь к рабочей директории:
INTFTPD_PATH="/var/tftp/"
4. Копируем бинарник pxelinux'а в директорию tftpd, создаём папку для его конфигов:
1 2 |
#cp /usr/share/syslinux/pxelinux.0 /var/tftp/ |
При загрузке pxelinux ищет файлы в папке pxelinux.cfg в следующей последовательности:
1 2 3 4 5 6 7 8 9 10 |
/mybootdir/pxelinux.cfg/01-88-99-aa-bb-cc-dd |
Т.е. первым делом ищет файл имя которого является мак-адресом вашей сетевой карточки (шестнадцатеричный, нижний регистр с разделителями "-"), далее - по IP адресу, опять же шестнадцатиричному. Чтобы вы не занимались зря ерундой, вместе с syslinux идет замечательная утилитка gethostip:
1 2 |
# gethostip 172.16.0.1 |
Если и такой файл не найден, pxelinux убирает последний символ и ищет снова. Дойдя до конца и ниего не найдя, фактически в отчаянии, pxelinux тянется за файликом default. Такая достаточно гибкая схема позволяет вам как делать уникальные конфигурации для отдельных машин, так и для сегментов подсети. Мы рассмотрим конфигурацию с файликом default.
Синтаксис и логика файлов настройки конфигурации pxelinux ровно такие же как и у syslinux, поэтому особенно подробно рассказывать о них опять же не имеет смысла. Расскажу о небольшой вкусности:
для того чтобы получить русское меню, вам нужно:
1. распаковать шрифт для кодировки сp866 внутрь директории tftpd:
gzip --uncompress --to-stdout /usr/share/consolefonts/cp866-8x16.psf.gz > /var/tftp/cp866-8x16.psf
2. в конфиге директивой FONT указать имя шрифта:
FONT cp866-8x16.psf
3. сохранить файл конфигурации в кодировке cp866
voila! у нас меню на русском.
вот мой конфиг default: http://pastebin.com/cKdSkAvb
Как видно из конфига, рядом с pxelinux.0 у меня лежат vesamenu.0 и memdisk, первый - для красоты, второй - для загрузки hiren's boot cd.
Вот и всё. Это была лирическая часть. Она была посвящена pxelinux. В следующих сериях я расскажу вам о gPXE, зачем он нужен, и какие волшебные возможности но нам дарит.
П.С. Вы меня сильно не ругайте, есличо - это моя первая статья вообще-то. Критика приветствуется.