Как настроить с нуля PXE-установку Linux?

Всем доброго!
Есть множество информации о настройке pxe-установки образов Linux, но хочу для себя собрать полноценный ман и заполнить некоторые дыры в познаниях. Собственно, будет хорошо если поделитесь информацией о настройке pxe для установке Linux'ов.:
Как настроить pxe-установщик под Linux?
Как сделать автоматическую установку выбранного образа linux'а?
И может ли это все сочетаться с работающим в сети pxe-установщиков windows?
  • Вопрос задан
  • 43736 просмотров
Решения вопроса 1
RicoX
@RicoX
Ушел на http://ru.stackoverflow.com/
Ничего сложного, только описывать долго, постараюсь кратко с примерами.

В конфиг DHCP добавляем настройку типа:
#PXE boot for Server
subnet XXX.XXX.6.0 netmask 255.255.255.XXX {
     range XXX.XXX.6.20 XXX.XXX.6.254;
     option routers XXX.XXX.6.1;
     option subnet-mask 255.255.255.XXX;
     option domain-name-servers  8.8.8.8;
        next-server XXX.XXX.6.10;  # TFTP server address
        filename "pxelinux.0";   # PXE boot loader filename
}

Ключевое это строки с передачей IP для сервера TFTP и имя файла загрузчика.

Делаем каталог для будущих образов
mkdir -p /usr/tftpboot/images
mkdir /usr/tftpboot/pxelinux.cfg


Устанавливаем tftp-hpa (легко найти для любой системы)
В конфиге ставим флаги:
"-p -s /usr/tftpboot -B 1024 --ipv4"

Скачиваем свежий syslinux (например https://www.kernel.org/pub/linux/utils/boot/syslin...
Свежие версии всегда можно найти тут www.syslinux.org/wiki/index.php/The_Syslinux_Project

Разархивируем
tar tar xjf syslinux-4.04.tar.bz2 -C /tmp
копируем в /usr/tftpboot/ следующие файлы:
chain.c32
ldlinux.c32
libcom32.c32
libutil.c32
memdisk
menu.c32
poweroff.c32
pxelinux.0
pxelinux.cfg
reboot.c32
vesamenu.c32


Так же если планируем использовать кириллицу в меню скачаем шрифты, например эти
ftp://ftp.itrc.hp.com/applications/experteventadmi...
Кодировка меню должна быть в CP866 он же Russian(DOS)
сконвертировать из koi8-r (тандартная кирилическая для фри) можно командой.
iconv -f koi8-r -t CP866 defaultKoi8 -o default

создаем папку с образами
mkdir images
В ней подпапки с нужными системами, в каждую подпапку кидаем нужные для загрузки систем файлы, вот пару примеров:

Установка FreeBSD
Скачиваем образы
x32
fetch mfsbsd.vx.sk/files/images/i386/9/mfsbsd-9.1-RELEAS...
x64
fetch mfsbsd.vx.sk/files/images/amd64/9/mfsbsd-9.1-RELEA...

Установка Debian 7
x32
fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...
fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...
x64
fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...
fetch ftp://ftp.debian.org/debian/dists/Debian7.0.0/main...

Установка CentOS
x32
fetch mirror.mirohost.net/centos/6.4/os/i386/images/pxeb...
fetch mirror.mirohost.net/centos/6.4/os/i386/images/pxeb...
x64
fetch mirror.mirohost.net/centos/6.4/os/x86_64/images/px...
fetch mirror.mirohost.net/centos/6.4/os/x86_64/images/px...

Установка Kali
x32
fetch repo.kali.org/kali/dists/kali/main/installer-i386/...
fetch repo.kali.org/kali/dists/kali/main/installer-i386/...
x64
fetch repo.kali.org/kali/dists/kali/main/installer-amd64...
fetch repo.kali.org/kali/dists/kali/main/installer-amd64...

Далее правим фаил конфига загрузчика:
/usr/tftpboot/pxelinux.cfg/default (Ну или с привязкой к конкретным сервакам, тогда не default)
Вот пример, пути править на свои:
ui vesamenu.c32
PROMPT 0
MENU WIDTH 77
MENU MARGIN 10
MENU PASSWORDMARGIN 3
MENU ROWS 12
MENU TABMSGROW 18
MENU CMDLINEROW 18
MENU ENDROW 24
MENU PASSWORDROW 11
MENU TIMEOUTROW 60
MENU AUTOBOOT Starting Local System in # seconds

MENU PASSPROMPT Enter Password

NOESCAPE 0
ALLOWOPTIONS 0

MENU COLOR SCREEN 44;30 #00FFFFFF #00000000
MENU COLOR BORDER 44;30 #FFFFFFFF #FF000000
MENU COLOR TITLE 1;44;30 #FFFFFFFF #FF000000

MENU COLOR SCROLLBAR 44;30

MENU COLOR HOTKEY 44;30 #FFFFFF00 #FF000000
MENU COLOR UNSEL 44;30 #FFFFFFFF #FF000000
MENU COLOR HOTSEL 1;30 #FFFFFFFF #FF333333
MENU COLOR SEL 7;44;30 #FFFFFF00 #FF333333

MENU COLOR CMDMARK 44;30
MENU COLOR CMDLINE 44;30
MENU COLOR TABMSG 44;30
MENU COLOR DISABLED 44;30
MENU COLOR HELP 44;30

MENU COLOR PWDBORDER 44;30 #FF187CCA #FFFFFFFF
MENU COLOR PWDHEADER 1;44;30 #FF187CCA #FFFFFFFF
MENU COLOR PWDENTRY 5;44;30 #FF187CCA #FFFFFFFF

menu background background.jpg
FONT pxelinux.cfg/Cyr_a8x16.psf
menu title RealWeb PXE boot menu (c)Rico-X

LABEL bootlocal
   menu label ^Загрузка с локального диска
   kernel chain.c32
   append hd0 0
   timeout 150
 TEXT HELP
Загрузка с первого локального жесткого диска,
произойдет автоматически по ситечении таймера.
 ENDTEXT

menu begin
menu title FreeBSD 9.1

label FreeBSD91p2x64
  menu label Установить FreeBSD-9.1 x64
  kernel memdisk
  initrd images/mfsbsd/mfsbsd-9.1-RELEASE-p2-amd64.img raw
 TEXT HELP
После запуска параметры входа:
имя root пароль mfsroot
Для начала установки FreeBSD введите bsdinstall
 ENDTEXT

label FreeBSD91p2x32
  menu label Установить FreeBSD-9.1 x32
  kernel memdisk
  initrd images/mfsbsd/mfsbsd-9.1-RELEASE-p2-i386.img raw
 TEXT HELP
После запуска параметры входа:
имя root пароль mfsroot
Для начала установки FreeBSD введите bsdinstall
 ENDTEXT

label < Назад
 menu exit

menu end

menu begin
menu title Debian

label Debian_7x64
  menu label ^Debian 7 wheezy x86_64 install
  kernel images/debian/linux7_64
  append priority=low vga=788 initrd=images/debian/initrd7_64.gz --
  TEXT HELP
Устанавливает Debian 7 64 в ручном режиме.
  ENDTEXT

label Debian_7x32
  menu label ^Debian 7 wheezy i386 install
  kernel images/debian/linux7_386
  append priority=low vga=788 initrd=images/debian/initrd7_386.gz --
  TEXT HELP
Устанавливает Debian 7 32 в ручном режиме.
  ENDTEXT

label < Назад
 menu exit

menu end

menu begin
menu title CentOS

label CentOS_6.4_x86_64
  menu label ^CentOS 6.4 x86_64 install
  kernel images/centos/amd64/vmlinuz
 APPEND initrd=images/centos/amd64/initrd.img method=http://mirror.mirohost.net/centos/6/os/x86_64/ devfs=nomount ksdevice=link ramdisk_size=100000
  TEXT HELP
Устанавливает CentOS 6.4 x64 в ручном режиме.
Для установки уиспользуется http://mirror.mirohost.net/centos/6/os/x86_64/
  ENDTEXT

label CentOS_6.4_i386
  menu label ^CentOS 6.4 i386 install
  kernel images/centos/i386/vmlinuz
  APPEND initrd=images/centos/i386/initrd.img method=http://mirror.mirohost.net/centos/6/os/i386/ devfs=nomount ksdevice=link ramdisk_size=100000
  TEXT HELP
Устанавливает CentOS 6.4 i386 в ручном режиме.
Для установки уиспользуется http://mirror.mirohost.net/centos/6/os/i386/
  ENDTEXT

label < Назад
 menu exit

menu end

#label Centos6_64
#MENU LABEL CentOS 6 amd64
# KERNEL /memdisk
# APPEND iso
# INITRD images/centos/CentOS-6.4-x86_64-netinstall.iso

LABEL ProxMox
MENU LABEL ProxMox3 install
    KERNEL images/proxmox/linux26
#    APPEND ramdisk_size=102400 vga=791 video=vesafb:ywrap,mtrr splash=verbose url=http://195.114.6.10/images/proxmox/initrd.iso.img
    APPEND ramdisk_size=524288 vga=791 video=vesafb:ywrap,mtrr splash=verbose
    INITRD images/proxmox/initrd.iso.img

menu begin
menu title ^Kali ^Linux

label KaliLinux_x64
  menu label ^Kali Linux x86_64
  kernel images/kalilinux/amd64/linux
  append priority=low vga=788 initrd=images/kalilinux/amd64/initrd.gz --
  TEXT HELP
Дистрибьютив для пинтестирования,
cодержит различные инструменты для проведения тестов.
Русская документация http://ru.docs.kali.org/
  ENDTEXT

label KaliLinux_x32
  menu label ^Kali Linux i386
  kernel images/kalilinux/i386/linux
  append priority=low vga=788 initrd=images/kalilinux/i386/initrd.gz --
  TEXT HELP
Дистрибьютив для пинтестирования,
cодержит различные инструменты для проведения тестов.
Pусская документация http://ru.docs.kali.org/
  ENDTEXT

label < Назад
 menu exit

menu end

LABEL Pmagic
LINUX images/pmagic/bzImage
append noapic initrd=images/pmagic/initrd.img root=/dev/ram0 init=/linuxrc ramdisk_size=100000
  TEXT HELP
LiveCD дистрибьютив для восстановления и проверки систем.
  ENDTEXT

label reboot
  menu label Reboot
  kernel reboot.c32
  TEXT HELP
Перезагрузить компьютер
  ENDTEXT

LABEL poweroff
 MENU LABEL Power off
 KERNEL poweroff.c32
  TEXT HELP
Выключить компьютер
  ENDTEXT


Для загрузки windows нужно использовать специально собранный образ WinPE, который будет монтировать нужные образы с сетевой шары, но описание сборки вменяемого образа займет еще страниц 5 и мне лень уже печатать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Ncla
Всему учусь
Прекрасно! Спасибо! Есть еще один вопрос, все эти дистрибутивы будут устанавливаться через зеркала в интернете, а как можно сделать установку с сервера?
Ответ написан
@ioannsys
Как быть, если уже имеется в сети DHCP сервер?
Ответ написан
@Karpion
DHCP-сервер может выдавать разным машинам разные программы_для_загрузки - ориентируясь на MAC-адрес. Не самая удобная система.

Далее программа_для_загрузки - тоже может принять решение, что ей делать (запускать нужный установщик сразу или спросить юзера). На какие признаки ориентироваться - это как фантазия программиста подскажет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы