Сегодня автоматизируется все больше задач, для максимальной отдачи серверов все шире используют виртуализацию. Но устанавливать операционки по-прежнему приходится. Каждый делает это по-своему: у кого-то полные карманы различных образов на все случаи жизни, кто-то по старинке носит с собой «барсетку» с дисками, а то и две. Как правило, администраторы выполняют эту работу с невеликим удовольствием. Давай посмотрим, как сократить время на тривиальные задачи, как научить компьютеры устанавливать системы самостоятельно, вообще без участия админа, используя при этом только локальную сеть.

Итак, сегодня мы научимся: устанавливать Windows и Linux по сети, грузить небольшие ISO-образы, полезный софт (всяких там Касперских, Акронис, WinPE, мемтесты), разворачивать тонкие клиенты и рулить ими. Чтобы, например, бухгалтер, работающая с 1С по RDP, не прибила тебя за то, что у нее слетела винда, а отчет нужно было подготовить еще вчера... Или скупой начальник, который не хочет обновлять свой комп, восхитился твоим профессионализмом, когда увидит, как на стареньких компах летает Windows 8... В достижении наших коварных целей нам поможет сервер, предоставляющий загрузку по сети (PXE).

Главное меню загрузки PXE, текстовый режим
Главное меню загрузки PXE, текстовый режим

У любого системного администратора в заначке есть универсальный USB-диск для экстренной реанимации компьютера. Согласись, было бы куда лучше иметь ту же функциональность, используя одну лишь сетевую карту. Нельзя при этом не отметить возможность одновременной работы с несколькими узлами сразу. Итак, исходя из наших потребностей у нас есть два пути решения: использовать PXE или LTSP.

LTSP нам не очень подходит: он призван грузить по сети ОС, установленную на самом сервере, что позволяет использовать приложения сервера LTSP. Это не совсем то, что нам нужно. PXE — инструмент для загрузки компьютера по сети без использования локальных носителей данных, так же как и LTSP. PXE позволяет организовать мультизагрузочное меню загрузки, аналогичное универсальному «USB-реаниматору».

Главное меню загрузки PXE, графический режим
Главное меню загрузки PXE, графический режим
 

Что будем реализовывать?

Началось все с необходимости иметь под рукой инструмент для удаленной установки Ubuntu/Debian Server по сети, с возможностью загрузки Live CD маленькой системы, вроде SliTaz или Kolibri OS.
Как говорится, аппетит приходит во время еды: намеченное не успели реализовать, а к плану добавился еще ряд «хотелок». В итоге список получился весьма внушительным.

  1. Тонкие клиенты на базе Thinstation Linux.
  2. Раздел Linux.
    1. Установка Ubuntu 14.04 x86.
    2. Установка Ubuntu 14.04 x64.
    3. Установка Ubuntu 12.04 x86.
    4. Установка Ubuntu 12.04 x64.
    5. Загрузка SliTaz Live CD.
  3. Раздел Windows.
    1. Установка Windows 2012.
    2. Установка Windows 7.
  4. Acronis.
    1. Windows PE с пакетом полезного ПО.
    2. Acronis True Image.
      1. Legacy BIOS.
      2. UEFI.
    3. Acronis Disk Director.
      1. Legacy BIOS.
      2. UEFI.
  5. Касперский Rescue v 10.
  6. ERD Commander от 5 до 8 через ISO-образ.
  7. Memtest.
 

Собираем все в кучу и взлетаем

В качестве дистрибутива для сервера выбор пал на Ubuntu Server 14.04.2 LTS. Можно остановиться на любой другой ОС, разница будет только в синтаксисе. Итак, приступим. Нам потребуется TFTP, DHCP (необязательно установленный на этом же сервере, в роли DHCP-сервера может выступить роутер), сервис для организации сетевой файловой системы NFS. Рассматривать будем только те настройки, которые нас интересуют в рамках темы. Первым делом установим все необходимое, предварительно сделав все обновления:

$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install tftp-hpa nfs-common openbsd-inetd isc-dhcp-server -y

Параметр -y означает, что на все вопросы отвечаем согласием. Настройка TFTP сводится к правке пары строк в соответствующем месте:

# nano /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Обрати внимание, параметр TFTP_DIRECTORY="/var/lib/tftpboot" указывает место расположения корневого каталога TFTP-сервера. После сохранения перезапускаем удобным для себя способом:

$ sudo service tftpd-hpa restart

$ sudo /etc/init.d/tftp-hpa restart

Далее настроим DHCP-сервер. Приведу простую конфигурацию файла /etc/dhcp/dhcpd.conf:

subnet 192.168.0.0 netmask 255.255.255.0 {
  range dynamic-bootp 192.168.0.150 192.168.0.200;
  option broadcast-address 192.168.0.255;
  option domain-name-servers 192.168.0.2, 192.168.0.5;
  option routers 192.168.0.1;  next-server 192.168.0.10;
  allow booting;
  allow bootp;
  class "pxeclients" {
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    filename "pxelinux.0";
    next-server 192.168.0.10;
  }
}

Данная конфигурация говорит о том, что 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 и иметь вид

menu title Boot menu PXE
DEFAULT boot/menu.c32
PATH boot/
TIMEOUT 50

label boothdd
  MENU LABEL Boot from first hard drive
  COM32 chain.c32
  APPEND hd0

На этом этапе загрузчик должен работать и иметь единственный пункт меню «Загрузка с первого жесткого диска». Далее необходимо создать подменю. Чтобы не путаться и не городить огромные файлы, рекомендую вынести подпункты в отдельные файлы меню, например так:

label linux
  menu passwd qwerty
  menu label Install/Boot Linux
  kernel boot/menu.c32
  append pxelinux.cfg/linux

Все, что относится к разделу меню Install/Boot Linux, вынесем в отдельный файл /var/lib/tftpboot/linux. Аналогично выносятся другие пункты меню. Остальные параметры загрузки рассмотрим при добавлении каждого пункта/продукта.

 

Раздел Linux. Готовим на примере Ubuntu 14.04

Menu title Linux Boot

label menu
  menu label Return to Main menu
  kernel boot/menu.c32
  append pxelinux.cfg/default

label ubuntu32
  menu label Ubuntu 14.04 i386 Netinstall
  kernel images/linux/ubuntu14/i386/linux
  initrd images/linux/ubuntu14/i386/initrd.gz

label ubuntu64
  menu label Ubuntu 14.04 amd64 Netinstall
  kernel images/linux/ubuntu14/amd64/linux
  initrd images/linux/ubuntu14/amd64/initrd.gz

label slitaz
  menu label Slitaz v4.0 LiveCD
  kernel boot/memdisk iso
  initrd images/slitaz-4.0.iso
  append iso raw

Первым пунктом ставим возврат в предыдущий раздел меню. Далее будет установка 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
Загрузка 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 добавляем:

label linux
  menu passwd qwerty
  menu label Install/Boot Linux
  kernel boot/menu.c32
  append pxelinux.cfg/acronis

Файл acronis приводим к такому виду:

label acronis1
  menu label Acronis Disk Director 2015
  kernel /acronis/ADD12/1.krn vga=791 quiet
  initrd /acronis/ADD12/1.fs
label acronis2
  menu label Acronis Disk Director x64
  kernel /acronis/ADD12/2.krn vga=791 quiet
  initrd /acronis/ADD12/2.fs
label acronis3
  menu label Acronis True Image 2015
  kernel /acronis/ATI2015/1.krn vga=791 quiet
  initrd /acronis/ATI2015/1.fs
label acronis4
  menu label Acronis True Image 2015 x64
  kernel /acronis/ATI2015/2.krn vga=791 quiet
  initrd /acronis/ATI2015/2.fs
 

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 вносим изменения:

label winpe
  menu label WinPE & Acronis
  menu passwd qwerty
  com32 linux.c32 boot/wimboot
  APPEND initrdfile=wim/winpe/BOOTMGR,/wim/winpe/BCD,/wim/winpe/BOOT.SDI,/wim/winpe/acronis.wim
 

Заключение

На этом всё. В следующей статье мы научимся подготавливать и добавлять Windows-образы, сетевой установке в ручном и автоматическом режимах. Добавим Kaspersky Rescue v10, ERD Commander, именуемый MSDaRT. Разберемся, как запускать диагностические утилиты на примере memtest, а также покажем, как украсить меню загрузки.

10 комментариев

  1. Аватар

    Посетитель музея

    17.10.2015 в 22:26

    Годнота однозначно.. ставлю автору + в репу

  2. Аватар

    k1k0

    18.10.2015 в 15:10

    Ждем продолжения

  3. Аватар

    NoNames34

    20.10.2015 в 06:49

    Ждем продолжения

  4. Аватар

    hellpandorum

    26.10.2015 в 11:42

    А при установке:
    sudo apt-get install tftp-hpa nfs-common openbsd-inetd isc-dhcp-server -y
    разве надо не tftpd-hpa ставить?

  5. Аватар

    salvation

    27.10.2015 в 08:09

  6. Аватар

    Xolms

    05.01.2016 в 23:07

    При установке Thinstation, откуда надо брать iso образ? Зачем нужны файлы initrd и vmlinuz, если в меню указан iso образ?

  7. Аватар

    dymov.ra

    24.04.2018 в 15:27

    как можно протолкнуть акронис образы через UEFI TFTP ?

  8. Аватар

    Laglag

    19.04.2020 в 03:37

    Очень круто давно искал спасибо

Оставить мнение