- PXE загрузка — загружаем LiveCD Ubuntu
- Где может понадобиться PXE?
- Ответ
- Что необходимо для PXE
- Настройка DHCP
- Windows server 2008R2
- DHCP сервер dnsmasq
- DHCP сервер ISC-DHCP-SERVER
- TFTP сервер
- Настройка tftpd-hpa
- Где взять файлы для загрузки
- Создание меню в PXE
- Добавить комментарий Отменить ответ
- PXE — грузим всё! Осваиваем мультизагрузку по локальной сети
- Содержание статьи
- Xakep #201. Как стать киборгом
- Что будем реализовывать?
- Собираем все в кучу и взлетаем
- Syslinux. Ставим загрузчик
- Раздел Linux. Готовим на примере Ubuntu 14.04
- Тонкие клиенты / Thinstation Linux
- Acronis
- Windows PE
- Заключение
- Александр «Plus» Рак
PXE загрузка — загружаем LiveCD Ubuntu
PXE загрузка может показаться чем-то сложным на первый взгляд, однако! Собрать систему которая бы реализовывала загрузку можно минут за пять.
Где может понадобиться PXE?
Наверно те, кто сталкивался с частой установкой операционных систем могут заметить, что каждый раз необходимо готовить флешку, конечно можно изготовить флешку с которой будет грузиться все что угодно, но флешек размер ограничен, а что если необходимо установить операционную систему на 10 или скажем 100 компьютеров?
Ответ
Вот тут и поможет загрузка по сети. Какие возможности открываются при этом? Можно загрузить множество систем одновременно на различном количестве ПК не использую физический носитель для загрузки, скорость загрузки остается вполне не плохой, приятным бонусом может стать возможность автоматизации, особенно если вы выполняете сервисное обслуживание.
Еще одно применением загрузки по сети может являться создание тонких клиентов, для этих целей очень подходит операционная система Linux.
Что необходимо для PXE
Первое что необходимо — это локальная сеть, действительно, у нас ведь загрузка через сеть.
Еще нам понадобиться ПК, сервер или роутер чтобы выдавать ip адреса и настройки, в общем DHCP сервер.
Я рассмотрю вариант на Windows 2008R2, isc-dhc-server и dnsmasq, как наиболее часто используемые.
Также нам понадобится tftp, samba и nfs сервера — tftp для первоначальной загрузки все начинается с нее.
В общем то и все что нужно. Все эти службы могут быть установлены как на одном физическом сервере так и на нескольких серверах, сут от этого не поменяется.
Настройка DHCP
Windows server 2008R2
Тут все просто: добавляем две опции в параметры области сети
Первая опция — адрес сервера на котором установлен tftp сервер.
Вторая — имя файла через который будет осуществлятся загрузка, по сути он является ядром сетевой загрузки.
DHCP сервер dnsmasq
Добавляем строку в конфигурационный файл
DHCP сервер ISC-DHCP-SERVER
В секцию описания зоны добавляем название файла (pxelinux.0) для загрузки
и адрес TFTP сервера
TFTP сервер
В качестве TFTP сервера могут использоваться служба tftpd, tftpd-hpa или встроенный tftp сервер в dnsmasq,
стоит отметить что tftpd и tftp в dnsmasq не подходят для загрузки систем у которых пути к файлам имею обратный слеш «\» так как они не поддерживают автозамену путей на лету, поэтому если планируется загружать WinPE то стоит использовать tftpd-hpa.
Настройка tftpd-hpa
Открываем файл /etc/default/tftpd-hpa
nano / etc / default / tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME = «tftp»
TFTP_DIRECTORY = «/srv/tftp»
TFTP_ADDRESS = «:69»
TFTP_OPTIONS = «—secure -c -v»
Где взять файлы для загрузки
Для простой загрузки нам понадобится всего два файла — это pxelinux.0 и конфигурационный файл pxelinux.cfg
pxelinux.0 — загрузчик из пакета syslinux, взял версию 4.06, остальные версии не получилось завести.
Первый файл готов, теперь необходимо решить что будем грузить.
Самое простое что можно загрузить — это меню и выполнить загрузку с первого жесткого диска. (Самое бесполезное использование загрузки по сети)
Для этого скопируем необходимые компоненты из syslinux
Скопируются целая куча модулей, нам нужны будут не все, не используемые выявим в процессе настройки.
И так, составляем конфигурационный файл default в каталоге /srv/tftp/pxelinux.cfg/
default — конфигурационный файл который грузится по умолчанию, можно создать конфигурационные файлы по шалону и если ни к одному шаблону не применится правило, то загрузится файл default, но об этом позже, и так, открываем файл
Сохраняем, попробуем загрузиться на клиенте, устанавливаем в БИОС PXE ROM enable (или подобную настройку, часто находится во вкладке advenced) и ставим сетевой адаптер первым в списке загрузке во вкладке boot, сохраняем и перезагружаем
Вводим название пункта (у меня написано hdd) и начинается загрузка с жесткого диска.
Двигаемся дальше, а то загрузка с диска, которая в общем-то загружается и родным способом нормально в целом не несет много пользы, попробуем загрузить liveCD Ubuntu.
Эта система удобна тем что в ней есть режим casper, который позволяет запустить систему без установки.
Скачиваем свеженький образ дистрибутива с официального сайта:ubuntu.ru
помещу его в свой каталог с образами
/images/iso
Образ не обязательно распаковывать, я его просто монтирую.
Создадим каталог для наших образов для PXE загрузки:
/ images / ubuntu-16.04.4-desktop-amd64.iso / srv / tftp / linux / ubuntu / 16.04 /
Затем переходим в каталог /srv/tftp/linux/ubuntu/16.04/casper и ищем как записано ядро и образ памяти
В данном случае ядро называется vmlinuz.efi, а образ памяти initrd.lz, запоминаем эту информацию и правим конфигурационный файл /srv/tftp/pxelinux.cfg/default
Для образа с Ubuntu 18.04 пришлось вносить изменения в строку APPEND, необходимо добавить параметр toram
Как успели заметить тут есть параметр nfs, эту службу необходимо настроить:
в файл конфигурации /etc/exports я вношу строку:
И перезапускаю nfs
Готово, можно попробовать загрузиться
Создание меню в PXE
Чтобы каждый раз не вводить имя образа можно либо прописать автозагрузку определенного образа, либо создать графическое меню.
Создается автозагрузка следующим образом, добавляем параметр default с названием метки:
Графическое меню очень полезно когда у нас множество различных образов, тут нам поможет создать модуль vesamenu.c32
Хороший мануал по настройке меню предвствлен на сайте syslinux
Привожу пример своих настроек цветов, добавляю вначале в /srv/tftp/pxelinux.cfg/default
default vesamenu.c32
ALLOWOPTIONS 0
PROMPT 0
FONT psf / Cyr_a8x16.psf
MENU BACKGROUND back2.jpg
MENU TITLE Boot PXE from Jake Dog ` s
MENU RESOLUTION 800 600
MENU COLOR border 30 ; 40 #000000ff #000000ff none
MENU COLOR title 1 ; 36 ; 40 #ffff6801 #ff010003 std
MENU COLOR unsel 37 ; 40 #ff000000 #00000000 none
MENU COLOR hotkey 1 ; 37 ; 40 #ffffffff #00000000 std
MENU COLOR sel 0 ; 37 ; 40 #c0ff6801 #ff010003 none
MENU COLOR scrollbar 30 ; 40 #ff000000 #ff000000 std
MENU COLOR help 30 ; 40 #ffff6801 #ff010003 none
MENU COLOR timeout_msg 37 ; 40 #ffff6801 #ff010003 none
MENU COLOR timeout 1 ; 37 ; 40 #ffff6801 #ff010003 none
MENU WIDTH 40
MENU MARGIN 1
MENU ENDROW -1
MENU HELPMSGROW 32
MENU HELPMSGENDROW -1
MENU TIMEOUTROW 12
MENU HSHIFT 0
MENU VSHIFT 0
Обращаю внимание что коды цветов идут после решетки! причем первые два — это прозрачность, остальные RGB формат, все значения HEX.
Устанавливаю картинку разрешением 800×600 так как указал параметр MENU RESOLUTION 800 600, если его не указать то будет разрешение 640×480
В итоге получилась такое симпатичное загрузочное меню
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
PXE — грузим всё! Осваиваем мультизагрузку по локальной сети
Содержание статьи
Сегодня автоматизируется все больше задач, для максимальной отдачи серверов все шире используют виртуализацию. Но устанавливать операционки по-прежнему приходится. Каждый делает это по-своему: у кого-то полные карманы различных образов на все случаи жизни, кто-то по старинке носит с собой «барсетку» с дисками, а то и две. Как правило, администраторы выполняют эту работу с невеликим удовольствием. Давай посмотрим, как сократить время на тривиальные задачи, как научить компьютеры устанавливать системы самостоятельно, вообще без участия админа, используя при этом только локальную сеть.
Итак, сегодня мы научимся: устанавливать Windows и Linux по сети, грузить небольшие ISO-образы, полезный софт (всяких там Касперских, Акронис, WinPE, мемтесты), разворачивать тонкие клиенты и рулить ими. Чтобы, например, бухгалтер, работающая с 1С по RDP, не прибила тебя за то, что у нее слетела винда, а отчет нужно было подготовить еще вчера. Или скупой начальник, который не хочет обновлять свой комп, восхитился твоим профессионализмом, когда увидит, как на стареньких компах летает Windows 8. В достижении наших коварных целей нам поможет сервер, предоставляющий загрузку по сети (PXE).
Xakep #201. Как стать киборгом
У любого системного администратора в заначке есть универсальный USB-диск для экстренной реанимации компьютера. Согласись, было бы куда лучше иметь ту же функциональность, используя одну лишь сетевую карту. Нельзя при этом не отметить возможность одновременной работы с несколькими узлами сразу. Итак, исходя из наших потребностей у нас есть два пути решения: использовать PXE или LTSP.
LTSP нам не очень подходит: он призван грузить по сети ОС, установленную на самом сервере, что позволяет использовать приложения сервера LTSP. Это не совсем то, что нам нужно. PXE — инструмент для загрузки компьютера по сети без использования локальных носителей данных, так же как и LTSP. PXE позволяет организовать мультизагрузочное меню загрузки, аналогичное универсальному «USB-реаниматору».
Главное меню загрузки PXE, графический режим
Что будем реализовывать?
Началось все с необходимости иметь под рукой инструмент для удаленной установки Ubuntu/Debian Server по сети, с возможностью загрузки Live CD маленькой системы, вроде SliTaz или Kolibri OS.
Как говорится, аппетит приходит во время еды: намеченное не успели реализовать, а к плану добавился еще ряд «хотелок». В итоге список получился весьма внушительным.
- Тонкие клиенты на базе Thinstation Linux.
- Раздел Linux.
- Установка Ubuntu 14.04 x86.
- Установка Ubuntu 14.04 x64.
- Установка Ubuntu 12.04 x86.
- Установка Ubuntu 12.04 x64.
- Загрузка SliTaz Live CD.
- Раздел Windows.
- Установка Windows 2012.
- Установка Windows 7.
- Acronis.
- Windows PE с пакетом полезного ПО.
- Acronis True Image.
- Legacy BIOS.
- UEFI.
- Acronis Disk Director.
- Legacy BIOS.
- UEFI.
- Касперский Rescue v 10.
- ERD Commander от 5 до 8 через ISO-образ.
- Memtest.
Собираем все в кучу и взлетаем
В качестве дистрибутива для сервера выбор пал на Ubuntu Server 14.04.2 LTS. Можно остановиться на любой другой ОС, разница будет только в синтаксисе. Итак, приступим. Нам потребуется TFTP, DHCP (необязательно установленный на этом же сервере, в роли DHCP-сервера может выступить роутер), сервис для организации сетевой файловой системы NFS. Рассматривать будем только те настройки, которые нас интересуют в рамках темы. Первым делом установим все необходимое, предварительно сделав все обновления:
Параметр -y означает, что на все вопросы отвечаем согласием. Настройка TFTP сводится к правке пары строк в соответствующем месте:
Обрати внимание, параметр TFTP_DIRECTORY=»/var/lib/tftpboot» указывает место расположения корневого каталога TFTP-сервера. После сохранения перезапускаем удобным для себя способом:
Далее настроим DHCP-сервер. Приведу простую конфигурацию файла /etc/dhcp/dhcpd.conf:
Данная конфигурация говорит о том, что DHCP-сервер работает в локальной сети 192.168.0.0/24. Клиенту присваиваются адреса из диапазона 192.168.0.150–192.168.0.200, им будут присвоены параметры шлюза — 192.168.0.1, DNS-сервера — 192.168.0.2 и 192.168.0.5. Класс pxeclients, а именно параметр filename — это имя файла загрузчика, расположенного в корневой папке TFTP-сервера, в нашем случае /var/lib/tftpboot/pxelinux.0, на сервере с адресом 192.168.0.10.
Syslinux. Ставим загрузчик
В качестве загрузчика будем использовать Syslinux. Последнюю версию можно взять здесь. Распаковываем и кладем в /var/lib/tftpboot следующие файлы: ldlinux.c32, libcom32.c32, pxelinux.0 и lpxelinux.0 и каталог boot, в который складываем chain.c32, ldlinux.c32, libcom32.c32, libcom32.elf, libutil.c32, linux.c32, memdisk, menu.c32, vesamenu.c32 (menu.c32 — только текстовое меню, vesamenu.c32 позволяет украсить меню, например добавив фон). Файл меню загрузки по умолчанию должен находиться в /var/lib/tftpboot/pxelinux.cfg/default и иметь вид
На этом этапе загрузчик должен работать и иметь единственный пункт меню «Загрузка с первого жесткого диска». Далее необходимо создать подменю. Чтобы не путаться и не городить огромные файлы, рекомендую вынести подпункты в отдельные файлы меню, например так:
Все, что относится к разделу меню Install/Boot Linux, вынесем в отдельный файл /var/lib/tftpboot/linux. Аналогично выносятся другие пункты меню. Остальные параметры загрузки рассмотрим при добавлении каждого пункта/продукта.
Раздел Linux. Готовим на примере Ubuntu 14.04
Первым пунктом ставим возврат в предыдущий раздел меню. Далее будет установка Ubuntu 14.04 i386 и amd64. Скачиваем образ Ubuntu 14.04 mini.iso, распаковываем, находим прямо в корне два файла: linux и initrd.gz. Напомню, что корневой каталог сервера для загрузки — это каталог TFTP-сервера /var/lib/tftpboot . Исходя из этого, располагаем файлы внутри tftpboot. В случае с установкой Ubuntu, например, в images/linux/ubuntu14/i386 для x86 и в /images/ubuntu14/amd64 для x64 архитектур соответственно. Заметь, пути указаны относительно каталога FTFP-сервера. Здесь можно задавать параметры для установки, для автоматизации процесса установки. Например, задать параметр установки в качестве окружения рабочего стола при установке Debian KDE: append desktop=kde . Следующим шагом запустим маленький SliTaz. Грузить ISO-образы будем через memdisk. Из листинга сверху видно раздел slitaz, memdisk у нас расположен в каталоге boot, сам образ — в каталоге images. Параметры аналогичны тем, что используются в мультизагрузочных дисках.
Тонкие клиенты / Thinstation Linux
Следующим шагом научим запускать тонкие клиенты. Образ Thinstation Linux можно скачать готовый в виде сборки, можно взять конструктор для сборки и собрать самостоятельно. Можно качнуть с GitHub. Будь готов, что в последнем случае для подготовки образа потребуется около 3 Гбайт свободного места и времени в районе часа. Подготовка образа из Git хорошо описана в статье на сайте quaded.com. Я взял сборку с сайта nixts.org. В образе, который мы используем, много «ненужных» файлов, потому что там сразу и загрузчик, и дефолтные конфиги. Берем ядро и образ файловой системы (initrd и vmlinuz), которые складываем, например, в /var/lib/tftpboot/images/thinstation/ . Файлы конфигураций ( thinstation.conf.network , thinstation.hosts , thinstation.conf-user ) располагаем в корневом каталоге TFTP-сервера! Thinstation позволяет при загрузке учитывать MAC-адреса, IP-адреса, определять имя и группировать клиентов, в зависимости от параметров регулировать загрузку, например уводить на разные RDP- или VNC-серверы, сессии. Это позволяет, например, наклепать кучу виртуалок с десктопными операционными системами и посадить каждого клиента на отдельную виртуалку. Для каждого клиента можно также отдельно задавать настройки доступа к локальным устройствам: принтерам, флешкам, дискам, приводам и так далее. В общем, каждый ограничен только своей фантазией, благо вариантов использования с описанием настроек в сети навалом.
Acronis
Продукты Acronis загружаются аналогично инсталляторам Linux-систем. Скачал в Сети первый попавшийся образ Acronis, исключительно в научных целях. Распаковал. Нас интересуют только два каталога: ADD12 и ATI2015. Внутри каждого каталога видим по два файла с одинаковым именем и разным расширением. Это сделано для загрузки на 32-битных и x64-системах. Если открыть файл menu.lst того же образа, можно посмотреть, что чему соответствует. Для удобства складываем True Image и Disk Director аналогичным образом. Создаем папку acronis в рабочем каталоге ( /var/lib/tftpboot ). В него копируем ADD12 и ATI2015 со всем содержимым. Для удобства продукты Acronis выносим в отдельный раздел меню, так же как и раздел Linux. В pxelinux.cfg/default добавляем:
Файл acronis приводим к такому виду:
Windows PE
Windows-образы грузить несколько сложнее. В реализации загрузки практически любого WinPE-образа с любым содержимым внутри нам поможет загрузчик WIMBoot. WIMBoot — это системный загрузчик WIM-образов по сети. Довольно хорошо о самом продукте рассказывается на сайте, там же есть ссылка на скачивание. На сайте Microsoft есть инструкция по созданию WIM-образов. Образ, с которым я работал, был щедро вручен мне нашим системным администратором с продуктами Акронис. Назывался он Acronis_WinPE_Sergei_Strelec_25.11.2013.iso . Распаковав его, увидел в папке source заветный образ acronis.wim . Для WIM-образов для большего порядка использую отдельный каталог wim. Чтобы не путаться, внутри сделал еще один каталог winpe. В него копируем acronis.wim . Еще нам потребуются два файла из каталога BOOT этого же образа: BCD, BOOT.SDI и файл BOOTMGR из корня образа. На этом образ можно закрыть, удалить, больше он не пригодится. Переходим к подготовке загрузчиков (WIMBoot и syslinux). Распаковываем куда-нибудь архив wimboot-latest.zip . Копируем загрузчик WIMBoot на сервер TFTP, для удобства в каталог boot. Поскольку образ содержит Windows PE и различное программное обеспечение, в том числе и Acronis, то отнести можно в любой раздел меню. Я расположил его в главном меню. Итак, в файл pxelinux.cfg/default вносим изменения:
Заключение
На этом всё. В следующей статье мы научимся подготавливать и добавлять Windows-образы, сетевой установке в ручном и автоматическом режимах. Добавим Kaspersky Rescue v10, ERD Commander, именуемый MSDaRT. Разберемся, как запускать диагностические утилиты на примере memtest, а также покажем, как украсить меню загрузки.
Александр «Plus» Рак
Участник сообщества OmskLUG. Инженер отдела электронного взаимодействия МКУ «Информационно-технического управления».