Написанию данного поста предшествовало сбор информации по частям и многочасовое курение как русскоязычных, так и англоязычных ресурсов в сети интернет в поиске сравнительно простых способов реализации бездисковой загрузки ПК.
Предпосылкой к изучению данного вопроса стало наличие в сети компьютера, с вышедшем из строя дисковым накопителем. Необходимо было запустить на данном ПК «полноценную» 64-битную операционную систему Windows 7 без использования Linux-сервера, ограничившись только имеющимися в локальной сети Windows системами. Приводимые в данном посте программные продукты распространяются бесплатно и могут работать как на серверных, так и на пользовательских версиях Windows.
Разговор пойдет о замечательной технологии iSCSI, и как мы её можем использовать для загрузки по локальной сети, чтобы сэкономить на стоимости покупки нового дискового оборудования. Постараюсь описать весь процесс конфигурирования наиболее доступным языком как для начинающих администраторов, так и для непросвещенных пользователей.
Для понимания происходящего определимся немного с терминологией:
- iSCSI (англ. Internet Small Computer System Interface) — протокол, который базируется на TCP/IP и разработан для установления взаимодействия и управления системами хранения данных, серверами и клиентами;
- iSCSI Target: (Цель iSCSI) — программа или аппаратный контроллер (HBA), осуществляющие эмуляцию диска и выполняющие запросы iSCSI;
- iSCSI Initiator: (Инициатор iSCSI) — клиентская программа или аппаратный контроллер, который взаимодействует с iSCSI Target;
- IQN: (iSCSI Qualified Name) — уникальный идентификатор (имя) iSCSI Target’a или iSCSI Initiator’а;
- LUN: (Logical Unit Number) — адрес блочного устройства в диапазоне 0-127;
- DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) — сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP;
- TFTP (англ. Trivial File Transfer Protocol — простой протокол передачи файлов) используется главным образом для первоначальной загрузки бездисковых рабочих станций.
Введение
Современные операционные системы Windows 7, Windows Server 2008 и всё, что старше, умеют подключаться напрямую на iSCSI target. Проблема только в том, как инициализировать удаленное блочное устройство при включении ПК.
Вспомним, что почти все современные сетевые карты умеют загружаться по технологии PXE. А вот с iSCSI дружат в основном только дорогостоящие серверные сетевые карты, например Intel. Однако, существует как минимум два open source проекта gPXE и iPXE позволяющий при загрузке ПК подключаться iSCSI устройствам. Последний, к слову, форк первого, с немного доработанной системой вывода ошибок и дополнительными опциями.
Есть много способов, как загружаться через gPXE и iPXE. В данном посте мы будем рассматривать загрузку с использованием iPXE и подключением для него необходимых скриптов в процессе загрузки.
Суть такова — при запуске компьютера сетевая карта получает необходимые настройки через DHCP сервер и загружает PXELINUX. Далее загрузчик PXELINUX подключает необходимый скрипт и загружает iPXE, который, в свою очередь, выступает iSCSI инициатором и передает управление диску. До момента инициализации блочного устройства передачу файлов по сети обеспечивает протокол TFTP.
Для чего мы загружаем PXELINUX?
Некоторые могут спросить — а для чего загружать PXELINUX? Во первых, через PXELINUX загрузчик iPXE получает необходимый скрипт для инициализации нужного iSCSI target-а. Во вторых, чтобы можно было построить удобное меню с выбором различных вариантов загрузки. В третьих, если в сети существует несколько бездисковых рабочих станций, то нужно чтобы каждый ПК подключался «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, а значит их нужно как то отделять друг от друга, например, по MAC-адресам. Для этих целей будет использоваться двухстадийная загрузка с использованием PXELINUX.
Но обо всем по порядку. Начнем с установки и настройки в системе Windows необходимого софта для реализации DHCP, TFTP и iSCSI Target-а. Для этого я использовал бесплатно распространяемые программные продукты Tftpd32 и StarWind Virtual SAN. Программа Tftpd32 используется как в роли DHCP сервера, так и в роли TFTP сервера, ну а StarWind Virtual SAN соответственно будет использоваться в роли iSCSI target-а. Скачать данные программы можно на сайте разработчиков, ссылки которых указанны в их названиях. Для скачивание программы StarWind Virtual SAN необходимо будет выбрать на сайте Free версию программы и пройти процесс регистрации, с указанием корпоративного почтового адреса. На указанный вами почтовый адрес придет лицензионный ключ и ссылка на скачивание самой программы.
Настройка программы Tftpd32
Данная программа довольно простая и интуитивно понятная, поэтому приведу просто скриншоты своих настроек:
На вкладке «GLOBAL» у меня отмечены галочкой сервисы TFTP Server, Syslog Server и DHCP Server. На вкладке TFTP в поле Base Directory указана точка, которая означать, что в качестве корневой директорией будет использоваться папка, куда установлена сама программа Tftpd32. На вкладке DHCP в поле Boot File указан название загружаемого файла, которую мы рассмотрим дальше в настройках PXELINUX. На вкладке SYSLOG настройки не требуются.
Цель iSCSI. Настройка программы StarWind Virtual SAN
При установке программа никаких настроек не запрашивает, единственное может дополнительно запустить установку .NET Framework 4, если она еще не установлена в системе. После установки программа запускает свои службы и сразу готова к работе. На рабочем столе создается ярлык StarWind Management Console для управления.
Открываем StarWind Management Console, жмем кнопку Add Server и создаем новый сервер с IP-адресом 192.168.0.1. Имеющийся по умолчанию сервер с IP-адресом 127.0.0.1 можно удалить.
Далее выбираем созданный нами сервер и нажимаем ссылку Add Target. В появившемся окне можем указать свое название IQN цели, активировав галочку Target Name. В частности я указал iqn.2014-11.home:win7-64bit.
Далее выбираем созданный нами Target и нажимаем ссылку Add Device.
В появившейся окне выбираем Hard Disk Device, далее выбираем Virtual Disk, указываем расположение и объем создаваемого диска, задаем объем и параметры кэширования, и создаем дисковое устройство нажатием кнопки Create.
В итоге получаем настроенный и готовый к работе iSCSI Target, имеющий следующий вид:
При необходимости мы можем создавать необходимое количество iSCSI Target-ов и на каждый из них подключить необходимое количество iSCSI дисков. А также обеспечить безопасности доступа к iSCSI Target-ам с использованием CHAP-аутентификации клиентов, нажав по ссылке Add Permission.
Настройка PXELINUX
PXELINUX входит в комплект программ syslinux. Поэтому идем на сайт www.syslinux.org/wiki/index.php/Download, нажимаем на ссылку Download и загружаем zip архив с набором загрузчиков syslinux. Открываем загруженный архивный файл и распаковываем файлы pxelinux.0 из директории core и menu.c32 из директории com32/menu. Файл pxelinux.0 является загрузчиком, который передается клиентскому ПК DHCP сервером, а файл menu.c32 отвечает за построение загрузочного меню. Распакованные файлы размещаем в папку, куда установлена программа Tftpd32 (куда указывает путь в поле Base Directory в настройках TFTP).
В папке программы Tftpd32 создаем вложенную папку pxelinux.cfg, а в нем создаем файл default следующего содержания:
default menu.c32
gfxmenu /erdpxe
prompt 0
MENU TITLE Boot Menu (select the OS to boot)
MENU AUTOBOOT Windows 7 64bit in # seconds
TIMEOUT 50
TOTALTIMEOUT 3000
LABEL Windows 7 64bit
MENU DEFAULT
KERNEL IPXE.KRN
INITRD win7.ipxe
Думаю излишнем писать подробный комментарий к данному файлу, рассмотрим только две последние строчки:
KERNEL IPXE.KRN — указывает на ядро iPXE, которую нужно загрузить.
INITRD win7.ipxe — указывает на файл скрипта с параметрами iPXE
Указанных настроек PXELINUX вполне достаточно для использования дефолтной конфигурации и можно перейти к дальнейшей настройке iPXE, поэтому остающуюся часть текста решил убрать под спойлер.
Создание отдельного загрузочного меню для каждого ПК
Если в сети существует несколько бездисковых рабочих станций, и нужно чтобы каждый ПК имел доступ только «к своему» iSCSI-диску и не имел доступа к «чужим» дискам, то нам нужно будет создать несколько файлов с загрузочным меню для каждого ПК.
При получении файла конфигурации от TFTP сервера клиент ищет подходящую для себя в следующем порядке:
pxelinux.cfg/01-88-99-aa-bb-cc-dd
pxelinux.cfg/C0A800FE
pxelinux.cfg/C0A800F
pxelinux.cfg/C0A800
pxelinux.cfg/C0A80
pxelinux.cfg/C0A8
pxelinux.cfg/C0A
pxelinux.cfg/C0
pxelinux.cfg/С
И если ничего подходящего нет —
pxelinux.cfg/default
Здесь pxelinux.cfg — сама папка с файлами конфигурации.
01-88-99-aa-bb-cc-dd — файл с названием МАС-адрес клиента, в нижнем регистре, разделенный тире, с префиксом 01-.
Соответственно, для каждой бездисковой рабочей станции нам нужно написать «свое» загрузочное меню и разместить в папке pxelinux.cfg с названием файла 01-mac-адрес клиента, в нижнем регистре. Содержимое этих файлов может отличаться, к примеру, только последней строчкой INITRD win7.ipxe.
Инициатор iSCSI. Настройка iPXE
Итак, далее идем на сайт ipxe.org/download и загружаем iso-образ iPXE загрузчика. Из загруженного iso-образа вытаскиваем файл IPXE.KRN и сохраняем его в папке программы Tftpd32.
В этой же папке создаем файл win7.ipxe следующего содержания:
#!ipxe
dhcp net0
set keep-san 1
#login
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:win7-64bit
Строка dhcp net0 данного скрипта указывает, что необходимо получить настройки через DHCP сервер в сети.
Строка set keep-san 1 указывает, что подключение к iSCSI Target-у необходимо сохранить даже если загрузка с данного устройства не удалась (этот параметр необходим, когда нужно устанавливать операционную систему с накопителей CD/DVD).
Если в iSCSI Target настроена CHAP-аутентификации клиентов, то нужно раскомментировать строку #login, которая будет выводит форму для ввода логина и пароля.
Последняя строка непосредственно подключает указанный iSCSI Target, инициализирует удаленный диск и передает процесс дальнейшей загрузки на данное устройство. Синтаксис подключения будет таким iscsi:<Айпи iSCSI target>:::::<IQN цели>.
Добавление дополнительных пунктов в загрузочное меню
Если мы хотим добавить в загрузочное меню еще один пункт, например, для загрузки ОС Windws 8.1, то создаем в StarWind Virtual SAN новый Target с указанием IQN цели iqn.2014-11.home:windows8.1, добавляем в него новое дисковое устройство iSCSI, а затем в файле pxelinux.cfg/default добавляем к примеру такие строчки:
LABEL Windows 8.1
KERNEL IPXE.KRN
INITRD win8.1.ipxe
Ну и далее создаем файл win8.1.ipxe следующего содержания:
#!ipxe
dhcp net0
set keep-san 1
#login
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:windows8.1
Установка ОС Windows 7
Перед началом установки Windows 7 на бездисковую станцию открываем его BIOS и настраиваем порядок опроса загрузочных устройств следующим образом:
1) Hard Disk
2) Network
3) CD/DVD
4) остальные устройства
Если на ПК имеется установленный жесткий диск, то на время установки Windows его желательно отключить, чтобы компьютер не пытался с него загружаться.
Далее размещаем в приводе CD/DVD установочный диск Windows 7 и перезагружаем компьютер.
Первым делом мы должны увидеть запуск загрузки через PXE. Если этого не произошло то снова заходим в BIOS и разрешаем загрузку компьютера через сетевой адаптер.
Далее на экране появиться загрузочное меню PXELINUX. Если этого не произошло проверяем, запущена ли на другом компьютере программа Tftpd32, правильно ли она настроена и не блокирует ли его работу firewall-ы, антивирусы или другие программы.
После выбора необходимого пункта загрузочного меню PXELINUX мы должны увидеть запуск iPXE.
В процессе инициализации iPXE должны промелькнут надписи:
Registered as BIOS drive 0x80
Booting from BIOS drive 0x80
Это значит, что ПК удачно подключился к iSCSi диску.
Затем мы увидим ошибку загрузки через iSCSi диск, после чего компьютер перейдет к опросу следующего загрузочного устройства и запустит установка Windows 7 с привода CD/DVD. При этом подключение к iSCSi диску останется активным — за это отвечает указанная в скрипте строчка set keep-san 1.
Для тех, у кого не запускается установка Windows с привода CD/DVD
BIOS некоторых компьютеров, после неудачной попытки загрузки с iPXE, останавливает процесс запуска. Соответственно дальнейшая загрузка установщика Windows с привода CD/DVD не происходит. Такое поведение было замечено, например, на ноутбуках компании Hewlett-Packard. В подобных случаях спасает загрузка с использованием gPXE. Для этого:
1) открываем страницу сайта rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/build.php,
2) в поле Choose an output format выбираем пункт PXE bootstrap loader keep [Keep PXE stack method 1] (.kpxe),
3) в самом нижнем поле Embedded Script вводим три строчки нашего скрипта:
dhcp net0
set keep-san 1
sanboot iscsi:192.168.0.1::::iqn.2014-11.home:win7-64bit
4) сохраняем загрузчик gPXE в папку программы Tftpd32 и прописываем название файла на сервере DHCP в поле Boot File,
5) устанавливаем ОС Windows и обратно прописываем название файла pxelinux.0 на сервере DHCP в поле Boot File.
В процессе установки Windows, на этапе выбора дискового устройства мы должны увидеть подключенный нами iSCSi диск. Если iSCSi диск в списке отсутствует, значит установщик Windows не смог автоматически подключить необходимые драйвера для сетевой карты. В этом случае скачиваем с сайта разработчика необходимые драйвера сетевой карты и подключаем их установщику Windows. После этого iSCSi диск должен появиться в списке.
Если получили сообщение о невозможности установки Windows на выбранный диск
Иногда на этапе выбора дискового устройства можно получить сообщение о невозможности установки Windows на выбранный диск и просьбу проверить, включен ли в BIOS контроллер этого диска.
В этом случае первым делом проверьте в BIOS порядок опроса загрузочных устройств. Жесткий диск должен находиться на первой позиции, даже если на компьютере физически не установлен дисковый накопитель.
Если проблема не исчезла, то попробуйте в BIOS-е включать/выключать SATA контроллер, менять режим его работы IDE, ACHI, либо подключить реальный диск на время установки, но установку проводить на iSCSI диск.
После выбора дискового устройства начнется установка Windows 7. Дальше никаких трудностей возникнуть не должно. После установки мы получаем «полноценную» операционную систему Windows 7, работающей на iSCSI диске.
Установка ОС Windows (альтернативный метод)
Не знаю кому как, но мне лично не представляется удобным для каждого установочного образа Windows записывать DVD диск.
Мне привычнее распаковать содержимое установочного диска и запустить установку Windows с жесткого диска. К тому же с жесткого диска операционная система устанавливается быстрее.
Приведу пример, с использованием стандартного загрузчика bootmgr, имеющегося в любом установочном дистрибутиве Windows.
Данный метод подходит также для установки Windows с локальных жестких дисков.
Если коротко, то создаем на iSCSI диске небольшой «активный» раздел, копируем туда содержимое установочного диска Windows, и затем настраиваем MBR, для загрузки с диска установщика Windows. Подробности под спойлером.
Альтернативный метод установки ОС Windows
Итак, откроем на рабочей Windows системе Панель управления — Администрирование — Инициатор iSCSI.
Появиться окно «Свойства: Инициантор iSCSI».
Переходим на вкладку «Обнаружение» и нажимаем кнопку «Обнаружить портал…».
В открывшемся окне вводим IP-адрес нашей цели iSCSI — 192.168.0.1 и нажимаем ОК.
Далее переходим обратно на вкладку «Конечные объекты» и увидим все цели с идентификаторами IQN.
Выбираем в списке нужную цель и нажимаем кнопку «Подключить».
Откроется еще одно окно требующий нашего подтверждения, где также нажимаем ОК.
Если в открывшемся окне оставить галочку «Добавить это подключение в список предпочитаемых конечных объектов» то указанная цель будет автоматически подключаться к системе при каждой загрузке.
Открываем оснастку «Управление компьютером» и переходим на вкладку «Управление дисками». Тут мы увидим, что в нашей системе появилось еще одно дисковое устройство. Создаем на этом диске «Основной раздел», указав размер диска чуть больше размера нашего установочного образа. Далее форматируем под файловую систему NTFS, подключаем любую букву диска и делаем раздел «активным».
Откроем необходимый образ установочного диска программой UltraISO или WinRar и распакуем содержимое образа на созданный в предыдущем пункте раздел диска. Важно, чтобы после распаковки на диске оставалось как минимум 100Мб свободного места (Для Windows 8 рекомендуется 350Мб свободного места). Если свободного места недостаточно, то расширяем выбранный раздел в оснастке «Управление дисками».
Затем скачиваем из интернета программу BOOTICE и запускаем (ссылки приводить не буду, сами сможете найти без труда).
В программе выбираем нужный нам диск из раскрывающегося списка. В моем случае HD6:
Далее нажимаем кнопку «Process MBR» и откроется следующее окно:
В данном окне выбираем последний пункт «Windows NT 5.x / 6.x MBR» и нажимаем кнопку «Install/Config».
На диске будет настроен MBR, загружающий стандартный загрузчик bootmgr из активного раздела диска.
Далее можно загружаться на бездисковом ПК с данного iSCSI-диска и сходу устанавливать ОС WIndows.
Установка Windows запуститься автоматически.
Но рассмотрим еще один момент. Если мы хотим сделать данный раздел скрытым от пользователей и недоступным для операционной системы, то запускаем командную строку от имени администратора и набираем следующие команды:
Diskpart
List disk
Sel disk x (вместо x подставляем номер нужного диска, список которых выводит предыдущая команда)
Sel part 1 (при необходимости список разделов можно посмотреть командой List part)
Remove
Set id=27
После этого данный раздел диска станет технологическим и скрытым. Для этого раздела уже не возможно назначит букву диска и примонтировать его к работающей системе, но устанавливается Windows с данного раздела без проблем.
Получится что то типа раздела восстановления)
Надеюсь данная статья будет вам полезна. Всем удачи!
Ссылки на литературу:
- Бездисковая загрузка по технологии iSCSI
- PXELINUX — Syslinux Wiki
- iPXE — open source boot firmware
Здравствуйте, уважаемые читатели сайта remontcompa.ru! Меня зовут Роман Нахват и я представляю Вашему вниманию статью на очень интересную тему, а именно о бездисковой загрузке операционных систем Windows XP, 7, 8.1, 10. Для чего пользователю может потребоваться бездисковая загрузка Windows? Это может быть как элементарная экономия на комплектующих (в частности на жёстких дисках), так и стремление обезопасить себя от потери информации вследствии действия на компьютер различных факторов, таких как вирусная активность, сбои в электропитании, естественный износ жёсткого диска в процессе эксплуатации и так далее. В данной статье мы рассмотрим бездисковую загрузку машины на примере операционной системы Windows XP используя программу CCBoot 2017. CCBoot позволяет выполнить бездисковую загрузку операционных систем Windows XP, 7, 8, 10 с помощью протокола iSCSI.
Бездисковая загрузка Windows XP, 7, 8.1, 10 (на примере Windows XP), используя программу CCBoot 2017
Бездисковая загрузка позволяет компьютерам работать без локального диска. «Бездисковый» компьютер подключается к жесткому диску по сети и загружает операционную систему с удаленного компьютера.»
Для организации бездисковой загрузки я буду использовать свою домашнюю сеть из двух машин, на которых предварительно были установлены операционные системы Windows XP и Windows 8.1. Так как программа CCBoot работает по принципу «клиент-сервер», то в нашем случае в качестве клиента будет выступать машина с Windows XP, а в качестве сервера машина с Windows 8.1.
На машине с Windows 8.1 у нас на жестком диске есть разделы D и E, которые мы будем далее использовать в процессе настройки серверной части программы CCBoot.
На машине с Windows XP установлено два жестких диска, а именно: объёмом 80 GB (на данном жёстком диске создан один раздел и на нем установлена Windows XP, второй жёсткий диск объёмом 1000 GB используется в качестве файлового хранилища.
Переходим по адресу http://www.ccboot.com/download.htmи скачиваем установочный файл программы CCBoot.
Скачанный установочный файл программы CCBoot. Запускаем данный файл на машине с Windows 8.1 и выполняем установку.
Далее.
Как уже говорилось выше, CCBoot работает по принципу «клиент-сервер». В нашем случае роль сервера будет выполнять машина с Windows 8.1, поэтому выбираем CCBoot Server Installation.
Установка серверной части CCBoot на машину с Windows 8.1 завершена.
Ярлык программы CCBoot.
Определим ip адрес машины с Windows 8.1, выполнив в командной строке команду ipconfig. Как видим, ip адрес 192.168.100.14
Запускаем программу CCBoot и на вкладке «Менеджер дисков» видим доступные для использования разделы жёстких дисков, их объём и свободное место на них.
Выполним настройку серверной части программы CCBoot.
Выделяем раздел D и открываем окно его настроек, выбрав «Редактировать диск».
Тип раздела D на жестком диске определяем как «Образ», в выпадающем списке «RAM Cache» выбираем значение 2048.
Получаем следующее.
На разделе D мы будем хранить файл виртуального жесткого диска с расширением .vhd, на котором установлена операционная система Windows XP.
Таким же образом открываем окно настроек раздела E, Тип определяем как «Writeback», в выпадающем списке «RAM Cache» устанавливаем значение, к примеру 1024.
Раздел E будет использоваться для хранения информации, получаемой с клиентских машин.
Должно получиться следующее.
После редактирования настроек разделов D и E, жмём кнопку «Параметры».
На вкладке «Главное» в окошке «Пароль администратора» указываем пароль, который нам будет нужен для подключения к CCBoot серверу.
На вкладке «Настройки DHCP» ставим переключатель на «Используется CCBoot DHCP», указываем ip адрес CCBoot сервера (в нашем случае он 192.168.100.14).
Также указываем интервал ip адресов, которые будут назначаться клиентским машинам для бездисковой загрузки (например с 192.168.100.43 по 192.168.100.76).
Перейдем на вкладку «Менеджер клиентов». На данной вкладке отобразится список клиентских машин, на которых был установлен клиент CCBoot.
Так как мы ещё не установили клиент CCBoot на машину с Windows XP, то на данной вкладке будет пусто.
Переходим на машину с Windows XP и устанавливаем на неё клиентскую часть программы CCBoot. Далее.
Выбираем «CCBoot Client Installation». Далее.
Установить.
Установка клиентской части CCBoot на машину с Windows XP завершена.
Определим ip адрес машины с Windows XP, выполнив команду ipconfig. Как видим, он 192.168.100.85.
Переходим в меню Пуск и запускаем CCBootClient.
Перед нами откроется вот такое окно.
Жмём на кнопку «Установить клиент».
Подтверждаем установку клиента CCBoot.
Жмём ОК.
Перезагружаем машину с Windows XP.
После перезагрузки машины с Windows XP в окне CCBootClient указываем ip адрес CCBoot сервера (192.168.100.14), размер образа который будет содержать в себе загружающуюся операционную систему Windows XP, а также имя образа (WinXP).
Жмём «Загрузить образ».
Вводим пароль для подключения к CCBoot серверу.
Переходим на машину с Windows 8.1 и в программе CCBoot на вкладке «Менеджер образов» видим, что у нас появился файл виртуального жёсткого диска с названием WinXP.vhd объёмом 75 GB.
Также если перейти на вкладку «Менеджер клиентов», то у нас появилась машина с ip адресом 192.168.100.85, то есть машина с Windows XP.
Удалим машину с ip адресом 192.168.100.85 из вкладки «Менеджер клиентов», выбрав «Удалить клиента».
Подтверждаем удаление клиента.
Выключаем машину с Windows XP и отключаем жёсткий диск объёмом 80 GB (на котором установлена Windows XP), и оставляем подключенным жёсткий диск объёмом 1000 GB, используемый в качестве файлового хранилища.
Получаем следующее.
Выполняем загрузку машины на которой установлена Windows XP (но при этом загрузочный диск с Windows XP отключен) по сети.
Выполняем загрузку по сети.
Как видим, имя нашей клиентской машины определилось как PC043, а DHCP сервер CCBoot присвоил ей ip адрес 192.168.100.43.
Операционная система Windows XP загрузилась.
Заходим в Мой компьютер и видим, что вместо жёсткого диска объёмом 80 GB (на котором была установлена Windows XP) появился жёсткий диск объёмом 75 GB с названием CCBoot.
Данный диск является ни чем иным, как развернутым виртуальным жёстким диском WinXP.vhd.
Перейдем на машину с Windows 8.1 и на вкладке Менеджер клиентов видим клиентскую машину PC043 с ip адресом 192.168.100.43 с загруженной операционной системой Windows XP.
Служба терминалов позволяет выполнять одновременно несколько приложений на сервере. Клиент же выполняет функции терминала – он лишь передает на сервер данные о нажатых клавишах и положении курсора мыши. Сервер производит необходимые вычисления и возвращает на терминал изображение, выводимое на монитор. Для пользователя, сидящего за терминалом, весь процесс выглядит точно так же, как если бы приложение выполнялось на локальной машине. Преимущество такой технологии в том, что на «аппаратные плечи» клиента при этом не ложится почти никакой нагрузки, ведь весь вычислительный процесс происходит на стороне сервера. Таким образом, имея в распоряжении достаточно мощный сервер, можно использовать уже существующие низкопроизводительные компьютеры для выполнения задач, с которыми они в других конфигурациях справится уже не в состоянии. Наибольший эффект от применения терминалов достигается в условиях обеспечения работы большого числа пользователей, выполняющих однотипные задачи, например, учебные классы или рабочие офисные места.
Тонкий клиент очень похож на алфавитно-цифровой терминал для
мэйнфреймов. Он лишь передает на сервер терминалов данные о событиях клавиатуры и мыши, получая от сервера графические данные для отображения на мониторе.
Взаимодействие сервера терминалов и клиента
Производительность такой системы будет зависеть только от мощности ресурсов сервера терминала. Клиент может работать даже без жесткого диска и съемных носителей, осуществляя загрузку ОС по сети. При использовании терминального сервера на базе Windows 2000/2003 Terminal Server, связь между компьютерами осуществляется по протоколу RDP 5 (Remote Desktop Protocol — «протокол удаленной настольной системы»).
Помимо невысоких требований к аппаратным ресурсам терминалов, такие решения имеют и ряд других преимуществ. В случае использования приложений, которым необходим интенсивный обмен данными между клиентом и сервером, значительно снижается нагрузка на сеть. В этом случае и клиентское ПО, и сервер физически находятся на одном компьютере, основной объем данных не покидает пределов самого сервера (даже если данные расположены на другом физическом файл-сервере, как правило, он находится на одной сетевой магистрали и рядом с сервером терминалов). На терминал отсылается лишь готовый для отображения результат вычислений. Данные используемого терминалом прикладного ПО как таковые по сети вообще не передаются, исключая их перехват. Модернизацию терминалов больше не нужно производить всякий раз, когда новое программное обеспечение становится все более требовательным к аппаратным ресурсам вычислительной техники – достаточно увеличить ресурсы терминального сервера.
Одним из вариантов использования терминала может быть отсутствие у него жесткого диска вообще. Такая конфигурация позволяет повысить надежность работы в целом, ведь все данные будут храниться на сервере, где вероятность утраты или повреждения данных на порядки ниже, чем на локальных компьютерах. Хранение данных на сервере значительно упрощает их резервирование. Можно даже сэкономить на источниках бесперебойного питания, ведь отключение терминала или его полный выход из строя не приведет к необратимым потерям информации. Значительно упрощаются задачи администрирования. Приложения необходимо устанавливать и выполнять их обновления лишь на сервере – изменения терминального сервера сказываются одновременно на всех рабочих местах. Отсутствие на терминале съемных носителей, повышает безопасность и позволит экономить на антивирусном обеспечении, снимет необходимость контроля установки пользователями несанкционированного ПО и возможность утечки конфиденциальной информации. Настройка программного обеспечения терминала требует значительно меньше времени и усилий, чем развертывание локальных копий ОС.
Конечно же, терминальные технологии имеют и ряд ограничений на применение. Использование терминалов крайне неэффективно и порой даже невозможно для обеспечения работы «тяжелых» приложений, требующих большого количества сложных вычислений (характерный пример программ такого класса – AutoCAD). Интенсивная нагрузка на процессор сервера вызовет сокращение обслуживания остальных клиентов. Также не следует применять терминалы при работе программ, создающих потоковое видео и 3D, или подключающихся к серверу терминалов в удаленном режиме. В этом случае с передачей информации на терминал может не справиться сеть. То есть играть в современные 3D-игры и смотреть фильмы на терминалах не удастся. Стоит заметить, что для подобных случаев можно использовать смешанную архитектуру, устанавливая на необходимые рабочие места полноценные автономные ПК. Значительное внимание придется уделить обеспечению бесперебойной работе сервера – при его отказе ни один терминал не сможет продолжать работу.
Каждый компьютер оснащен микросхемой энергонезависимой памяти, в которой хранится исполняемый код BIOS. Задачей BIOS является обнаружение загрузчика и передачи ему управления. В случае использования бездискового терминала необходимо загрузить ОС по сети (конечно, можно использовать в качестве носителя загрузчика компакт-диск, флэш-драйв или дискету; однако, нам интересен терминал, на котором полностью отсутствуют какие-либо съемные носители). Для этого сетевая карта должна соответствовать спецификациям PXE или Etherboot. 100-мегабитные сетевые карты Intel, карты 3com905c-tx-m и 3com905cx-tx-m, а также многие встроенные в материнские платы сетевые адаптеры, изготавливаются по спецификации PXE. Для сетевых карт, имеющих встроенную флэш-память, или позволяющих установить микросхему BootROM можно получить загрузчик Etherboot (Binary ROM Image) на сайте
rom-o-matic.net.
Процесс загрузки компьютера по сети
Для успешной загрузки на сервере обязательно должны быть запущены службы DHCP и TFTP. DHCP выдает клиенту сетевые параметры и сообщает о местонахождении загрузчика. Передача файлов осуществляется посредством TFTP. Можно использовать встроенные в Windows службы или воспользоваться бесплатной утилитой tftp32, загрузив ее
с сайта разработчика. Если в сети уже работает DHCP-сервер, необходимо будет настроить именно его параметры, а не создавать новый.
На рынке тонких клиентов существуют как готовые аппаратные решения, так и ПО, позволяющее создать такого клиента самостоятельно. Аппаратные тонкие клиенты, как правило, оснащаются небольшим встроенным флэш-диском, с которого осуществляется загрузка ОС. Стоимость подобных решений начинается от 300 долларов. Если планируется задействовать уже существующую технику, необходимо использовать ПО, «превращающее» персональный компьютер в терминал.
В настоящее время большинство прикладных программ пишутся для исполнения под Windows. Реализация терминальных решений может быть построена как на использовании сервисов ОС Windows Server, так и при использовании пакета Citrix Metaframe фирмы Citrix. Доступ к терминальной сессии Windows Server может быть получен как из ОС Windows, так и из UNIX-подобных операционных систем, а также из-под DOS с использованием собственного программного обеспечения. По протоколам соединения с сервером наиболее распространены программы, работающие с RDP(родной для Windows протокол удаленного подключения) и ICA, ориентированный для работы с Citrix. Citrix более гибок и предоставляет больше возможностей, однако лицензирование клиентского соединения у него значительно дороже клиентской лицензии Windows.
Для иллюстрирования примера создания сети с бездисковыми терминалами я воспользуюсь ПО
WTware. Можно использовать, например, бесплатного тонкого клиента для проекта «Терминальная сеть», однако ПО WTware мне показалось более простым в настройке. Коммерческий продукт WTware PRO стоит порядка 15 долларов США за каждый терминал, однако с сайта pxe.ru можно загрузить бесплатную версию WTware lite. Основное отличие бесплатной версии – ограничение на разрешение монитора терминала. Оно не будет превышать 800х600. Использование WTware lite позволит:
• Загружаться по сети, с CDROM, с IDE жесткого диска, IDE флэш-диска, с USB флэш-диска.
• Подключаться к терминальным серверам Windows 2000 Server, Windows 2003 Server, Windows XP.
• Использовать в качестве терминалов даже 486-е компьютеры с 8Мб RAM.
• Работать с разрешениями экрана до 800×600, при глубине цвета 8, 15, 16 или 24 бита, настраивать частоту регенерации экрана.
• Использовать DIN и PS/2-клавиатуры, COM и PS/2-мыши.
• Подключать к терминалам LPT-принтеры и печатать на них с любого компьютера в сети.
WTware поддерживает практически все сетевые и видеокарты, выпущенные за последние 10 лет.
Итак, предполагаем, что у нас в распоряжении есть компьютер с установленной ОС Windows Server 2003, на котором запущен сервер терминалов и компьютер с сетевой картой, поддерживающей спецификацию PXE. У второго компьютера отсутствуют жесткий диск и съемные носители. Загружаем инсталлятор WTware lite, запускаем его. При установке будет предложено установить встроенную в WTware TFTP-службу.
Выбор компонентов установки WTware
Можно самостоятельно установить TFTP-службу, как описано в этой статье. Я оставлю отмеченным пункт «Служба TFTP». После установки будут запущены службы WTware.
Сервисы, запускаемые WTware
Теперь займемся настройкой DHCP-сервера. Открываем консоль управления DHCP (Пуск – Администрирование – DHCP). Создаем новую область адресов (New Scope).
Создание области IP-адресов
На первом шаге указываем имя и описание создаваемой области (произвольно, используется только для описания). Далее указываем диапазон IP-адресов, которые будет выдавать DHCP-сервер. Указывать лучше несколько больше, чем планируется установить клиентов. Конечно, диапазон адресов не должен пересекаться с уже существующими в сети статическими IP-адресами. Если необходимо, можно указать исключения для адресов области и изменить срок аренды адреса. Далее необходимо указать IP-адрес TFTP-сервера, с которого будет производиться загрузка образа ОС и имя загружаемого файла. Для этого делаем щелчок правой кнопкой мыши на разделе «Параметры области». Указываем параметр 066, присваиваем ему значение IP-адреса компьютера, с которого будет производиться загрузка клиентов. В параметре 067 указываем имя и путь к файлу загрузки. Если используется загрузка по спецификации PXE, вводим имя файла — pxelinux.0 , если используем метод Etherboot, то пишем wtshell.nbi. Обратите внимание, что при стандартной установке WTware в пути файла должно быть отброшено все, что находится от буквы диска до папки TFTPDROOT. То есть, если файл загрузчика pxelinux.0 находится в папке C:Program FilesWTwareTFTPDROOTlite4.3.19, в параметре 067 необходимо указать lite4.3.19pxelinux.0. На этом настройку области можно считать законченной. Обязательно созданную область необходимо активировать – нажимаем правой кнопкой мыши на название области, выбираем «Активировать». Теперь можно запускать наш терминал. В настройках BIOS указываем загрузку с сетевого адаптера. Если службы DHCP и TFTP настроены верно, на мониторе терминала появится процесс загрузки.
Загрузка клиента (PXE)
После успешной загрузки появится мастер настройки терминала. Необходимо будет выбрать видеодрайвер и разрешение для монитора клиента. Рекомендуется протестировать все доступные видеодрайверы, выбрав тот, у которого будет наименьшее время прохождения теста.
Тест видеосистемы WTware
Когда мы определились с драйвером, необходимо создать конфигурационный файл для запуска клиента. Для этого правим в любом текстовом редакторе файл 00.00.00.00.00.00.wtc, который находится в папке configs установленного WTware. Указываем в нем параметры, выводимые на экране теста с минимальным временем выполнения. Также необходимо будет указать в этом файле IP-адрес сервера (параметр win2kIP). Например, для показанных на рисунке параметров, конфигурационный файл будет таким:
win2kIP = 192.168.1.100
mouse_wheel = on
video = VESA(X)
resolution = 800×600
bpp = 16
refresh = 75
debug = disable
Сохраняем конфигурационный файл с именем MAC-адреса сетевого адаптера клиента и расширением wtc. MAC-адрес выводится в предпоследней строчке на экране теста. Теперь все готово. Перезагружаем клиент. После загрузки появляется обычное окно входа в Windows.
Терминальный вход в Windows ничем не отличается от обычного
Когда будет произведен вход, откроется обычный вид рабочего стола сервера. Вы можете работать точно так же, как будто находитесь перед монитором сервера.
Вид рабочего стола клиента с запущенными программами
Если необходимо, можно указать, какая программа будет запускаться при входе в Windows. Для этого в настройках сервера терминалов (Пуск – Администрирование – Настройка служб терминалов) выбираем подключение, и на вкладке «Среда» его свойств указываем программу и рабочую папку. Следует учесть, что Проводник Windows при этом загружен не будет, и пользователь сможет работать лишь с указанной программой.
Если в свойствах подключения включена возможность удаленного управления, в любой момент администратор может подключиться к сеансу, запущенному пользователем. В зависимости от этих настроек администратор может запрашивать у пользователя разрешение на управление сеансом, осуществлять только просмотр сеанса или использовать полное управление, включая перемещение мыши и нажатие клавиш. Управлять пользовательской сессией таким образом можно только из клиентской сессии, в которой работает администратор, но не с консоли сервера. Пример такого управления – администратор подключается к серверу, открывает Диспетчер служб терминалов, выбирает необходимый сеанс, и в контекстном меню, вызываемом правой кнопкой мыши, выбирает команду «Удаленное управление».
Подтверждение запроса удаленного управления сеансом пользователя
Среднее значение сетевого трафика при работе тонкого клиента составляет около 5-6 Кбайт/c (работа в Internet Explorer, просмотр документов WinWord без графики, открытие и работа программ со стандартными элементами пользовательского интерфейса). Трафик в обратном направлении (сервер — клиент) составляет несколько десятков килобайт в секунду. Превышение максимальной пропускной способности канала не приводит к сбою, а лишь вызывает замедление обновления экрана клиента. По некоторым оценкам, для комфортной работы терминал должен подключаться к каналу с полосой пропускания не менее 20КБ/сек.
Так стоит ли использовать терминальные решения вместо установки полноценных компьютеров? Однозначного ответа на этот вопрос нет. В каждом конкретном случае придется тщательно взвешивать плюсы и минусы обеих технологий. При внедрении терминальных решений основные затраты будут связаны с обеспечением серверной части сети. Однако, как было указано выше, существует ряд задач, для решения которых применение тонких клиентов позволяет снизить общую стоимость ПО и оборудования, упростить администрирование и повысить надежность и безопасность сети в целом. Если вы планировать уже существующую технику, необходимо проверить, сможет ли она поддерживать необходимые способы загрузки при использовании в качестве терминалов.
Автор Сергей Вальковский
Источник:
windowsfaq.ru
Оцените статью: Голосов
В этой статье мы рассмотрим, как установить Windows 10 или 11 по сети без использования загрузочной USB флешки (установочного DVD диска). Для загрузки компьютера по сети через PXE мы будем использовать небольшой Tiny PXE Server. Инструкция применима для установки Windows на устройствах как с UEFI, так и с BIOS прошивкой.
В корпоративных сетях для разливки образов Windows по сети используются более функциональные Windows Deployment Services (WDS) и Microsoft Deployment Toolkit (MDT). В этой статье мы покажем, как быстро запустить PXE сервер на любом имеющемся компьютере (будь то устройство с Windows или Linux) и использовать его для сетевой установки Windows на компьютеры в этой же LAN с помощью простых средств.
Нам понадобятся:
- Установочный ISO образ с Windows 10 или 11 (проще всего создать его с помощью Windows Media Creation Tool согласно инструкции https://winitpro.ru/index.php/2013/12/31/sozdaem-zagruzochnuyu-fleshku-s-windows-7-dlya-uefi-sistemy/ )
- Образ Windows PE — можно использовать свой образ WinPE, извлечь его из образа восстановления MS DART, получить оригинальный WinPE с помощью Windows Assessment and Deployment Kit (Windows ADK), или использовать готовый образ типа Hiren’s BootCD PE.
- Сервер Tiny PXE (http://reboot.pro/files/file/303-tiny-pxe-server/ )
Содержание:
- Создаем загрузочный образ Windows PE с помощью ADK
- Подготовка сервера сетевой установки TinyPXE
- Сетевая установка Windows 10 и 11 с PXE сервера
Создаем загрузочный образ Windows PE с помощью ADK
Скачайте Windows ADK для Windows 11 и Windows PE add-on for the Windows ADK по ссылкам на странице https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install .
При установке Windows ADK выберите минимальную установку Deployment Tools.
Затем аналогично установите Windows PE add-on for Windows ADK.
После окончания установки запустите Deployment and Imaging Tool из стартового меню Windows. Или запустите вручную команду:
"C:Program Files (x86)Windows Kits10Assessment and Deployment KitDeployment ToolsDandISetEnv.bat"
Теперь скопируйте файлы для среды WinPE в указанный каталог (создавать не нужно):
copype amd64 C:toolswinpe
В данном случае я создаю файлы для среды WinPE x64. Можно использовать другие опции в зависимости от архитектуры: x86, arm или arm64.
Теперь можно создать загрузочный ISO образ с WinPE:
MakeWinPEMedia /ISO C:toolswinpe c:toolsWinPE.iso
Подготовка сервера сетевой установки TinyPXE
Теперь нужно настроить ваш PXE сервер:
- Распакуйте архив pxesrv.zip в каталог C:toolspxesrv;
- Перейдите в каталог C:toolspxesrv и создайте текстовый файл pxe_menu.txt со следующим содержимым:
#!ipxe set boot-url http://${dhcp-server} #================ Main Menu ================= menu iPXE boot menu item WinPEISO WindowsPE ISO choose target && goto ${target} #============ Main Menu Options ============= :WinPEISO sanboot ${boot-url}/iso/WinPE.iso boot
- Скопируйте полученный ранее файл WinPE.iso в каталог C:toolspxesrvfilesiso;
- Смонтируйте установочный ISO образ в виртуальный привод Windows и откройте общий сетевой доступ к нему (если хотите, можете открыть к нему анонимный доступ, но это не обязательно);
- Запустите файл pxesrv.exe с правами администратора;
- Включите опцию HTTPd;
- Если ваш компьютер сам будет раздавать IP адреса по DHCP (Tiny PXE это умеет), отключите опцию ProxyDHCP. Убедитесь, что в полях Option 54 DHCP Server и Next-Server указан IP адрес вашего компьютера. В поле IP Pool start указано начало диапазона DHCP, убедитесь что этот диапазон не занят в вашей сети;
- В разделе Boot File укажите ipxe.pxe (для загрузки на BIOS устройствах) или ipxe-x86_64.efi (для UEFI устройств);
- В поле Filename if user-class=gPXE or IPXE укажите имя файла меню, который вы создали ранее pxe_menu.txt;
- Запустите PXE сервер, нажав кнопку Online;
Итак, ваш PXE сервер запущен и готов к работе. Если в Windows включен брандмауэр (проще), отключите его или разрешите входящий трафик для процесса pxesrv.exe по протоколам DHCP, PXE, HTTP, TFTPS и SMB.
Сетевая установка Windows 10 и 11 с PXE сервера
Теперь вам нужно загрузить ваш компьютер, на который вы хотите установить Windows, с PXE сервера. Компьютер должен находится в той же локальной сети (VLAN), что и компьютер с PXE сервером.
В настройках BIOS/UEFI компьютера выберите в качестве первичного устройства загрузки PXE.
При запуске среды PXE компьютер обнаружит в сети DHCP сервер, получит IP адрес и получит доступных опции в меню iPXE.
Компьютер загрузится по сети в среде WinPE.
В моем случае при тестировании загрузки с PXE сервера виртуальной машины VMWare с UEFI прошивкой появилась ошибка:
Could not describe SAN devices: Operation not supported
Could not boot image: Operation not supported https://ipxe.org/err/3c2220
Как оказалось, в UEFI прошивки виртуальной машины на моем хосте VMware ESXi есть баг:
This error indicates that your UEFI firmware has a bug that prevents the installation of the iSCSI boot firmware table (iBFT). Switch to booting in “legacy” BIOS mode rather than UEFI mode.
Пришлось переключить ВМ в режим BIOS и запускать PXE сервер с опцией ipxe.pxe. После этого пошла нормальная установка Windows по сети.
Вам осталось подключить по SMB сетевой каталог, в котором хранится ваш установочный ISO образ Windows 11.
После инициализации среды командой
wpeinit
подключите ваш сетевой каталог, в который смонтирован установочный образ Windows. Выполните команду:
Net use E: \192.168.13.202e
Где
192.168.13.202
– имя компьютера на котором хранится установочный образ, а
E
– название общей папки.
Введите имя пользователя, с правами доступа к вашей Windows с PXE сервером.
Запустите знакомый мастер установки Windows.
-
Что такое PXE?
-
Загрузка Linux-системы с использованием PXE
-
Подготовка системы для работы PXE сервера
-
Настройка DHCP сервера на Linux
-
Настройка DHCP сервера на MikroTik
-
Настройка DHCP на Cisco
-
Настройка TFTP сервера
-
Настройка сетевого загрузчика PXE на Syslinux
-
Получение загрузчика:
-
Описание некоторых модулей SYSLINUX
-
Создание главного меню PXE сервера
-
Описание синтаксиса файла меню.
-
Создание подменю для PXE сервера
-
Видео
Загрузочная флешка с набором нужного софта — замечательный инструмент системного администратора. Казалось бы, что может быть лучше? А лучше может быть загрузочный сервер!
Представьте, вы выбрали в BIOS загрузку по сети и можете установить ОС/вылечить компьютер от вирусов/реанимировать диски/протестировать ОЗУ/etc с PXE Boot сервера, ведь это куда удобнее, нежели бегать с флешкой от машины к машине.
А в случае большого компьютерного парка, такой инструмент и вовсе незаменим.
На данной странице детально описывается процесс загрузки бездисковых Linux-станций с помощью PXE, а также рассказывается как с помощью программ проекта LTSP подготовить Linux-систему для использования в качестве сервера загрузки таких станций. Рассматривается процесс настройки всех необходимых компонентов (TFTP, DHCP, NFS-серверов), а также приводятся примеры их конфигурационных файлов.
к содержанию ↑
PXE (англ. Preboot Execution Environment, произносится пикси) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, DHCP и TFTP. PXE-код, прописанный в сетевой карте, получает загрузчик из сети, после чего передаёт ему управление.
к содержанию ↑
Загрузка Linux-системы с использованием PXE
Загрузку Linux-системы с помощью PXE можно выполнить с помощью загрузчика PXELINUX, созданного на базе SYSLINUX. PXELINUX загружается с помощью PXE-кода в сетевой карте, а затем ему передаётся управление. Код PXELINUX не нужно прописывать в чип на сетевой карте (если нужно именно это, см. проект etherboot).
- 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, которому передаётся управление.
к содержанию ↑
Подготовка системы для работы PXE сервера
Для загрузки по PXE в Bios подключаемого компьютера должна быть включена и настроена данная функция.
Установим необходимые пакеты без вопросов:
yum -y install dhcp xinetd tftp tftp-server nfs-utils syslinux
Настройка DHCP сервера на Linux
В локальной сети должен работать только один сервер DHCP.
Загрузка по сети устроена так, что BIOS (или EFI) целевой машины передает управление специальной микропрограмме-загрузчику, встроенному в микросхему сетевой карты. Тот пытается получить IP по DHCP, а потом подгрузить с машины, выдавшей IP, основной сетевой загрузчик. В некоторых случаях, если в сети уже есть другой DHCP это может вызвать глюки при загрузке.
Итак, DHCP надо настроить.
Приведем конфигурационный файл DHCP сервера к следующему виду:
# mv /etc/dhcp/dhcpd.conf{,_orig}
# cat > /etc/dhcp/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.4.4;
option ip-forwarding on;
default-lease-time 60;
min-lease-time 120;
max-lease-time 300;
authoritative;
ddns-update-style interim;
log-facility local7;
shared-network PXE-Netwotk {
subnet 10.0.10.0 netmask 255.255.255.0 {
range 10.0.10.10 10.0.10.254;
option routers 10.0.10.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
filename "pxelinux.0";
next-server 10.0.10.1;
option root-path "10.0.10.1:/srv/tftp/";
}
}
# service isc-dhcp-server restart
к содержанию ↑
Настройка DHCP сервера на MikroTik
address=10.0.10.0/24 gateway=10.0.10.1 dns-server=8.8.8.8, 8.8.4.4 wins-server="" ntp-server=212.20.50.208 caps-manager="" domain="domain.local" next-server=10.0.10.1 boot-file-name="pxelinux.0" dhcp-option=""
Настройка DHCP на Cisco
network <ip сети> <маска>
ip dhcp pool <Имя пула>
bootfile pxelinux.0
next-server <IP сервера tftp>
default-router <Шлюз>
option 66 ascii «Имя сервера»
dns-server <DNS сервера>
option 150 <IP сервера tftp>
domain-name <доменное имя>
Настройка TFTP сервера
Более подробно можно прочитать в статье установка TFTP-hpa сервера или настройка Настройка TFTP сервера на Mikrotik RouterOS
Настройка сетевого загрузчика PXE на Syslinux
На самом деле, загрузчик SYSLINUX — это целый комплекс загрузчиков, на все случаи жизни, здесь есть и сетевой — PXELINUX, и загрузчик для ISO-образов ISOLINUX и просто загрузчик ОС с жесткого диска. Пока нам потребуется только сетевой. SYSLINUX представляет собой операционную систему в миниатюре, загрузчик с помощью специальных команд, прописываемых в загрузочном меню, может выполнять специальные функции, сохраняемые в исполняемых файлах особого формата — модулях загрузчика. Обычно они имеют расширение *.c32
, и плюс некоторые специальные файлы, например модуль memdisk
, загружающий в память ISO-, Floppy- или HDD-образы.
к содержанию ↑
Получение загрузчика:
Проще всего его получить с официального сайта, скачав специальным скриптом. Скрипт разберет полученный архив на части, отдельно найдет в скачанном архиве модули
*.32
,memdisk
и сетевой загрузчикpxelinux.0
.
Скачиваем и заливаем в корень TFTP сервера все необходимое
# cd /tmp
# wget https://www.kernel.org/pub/linux/utils/boot/syslinux/4.xx/syslinux-4.02.tar.gz #только с этой версией удалось подружить инсталлятор ESXi
# tar -xf syslinux-4.02.tar.gz
# cd syslinux-4.02/
# find ./ -name "memdisk" -type f|xargs -I {} cp '{}' /srv/tftp/
# find ./ -name "pxelinux.0"|xargs -I {} cp '{}' /srv/tftp/
# find ./ -name "*.c32"|xargs -I {} cp '{}' /srv/tftp/
к содержанию ↑
Описание некоторых модулей SYSLINUX
chain.c32
— переключает на следующий загрузчик (grldr
, ntldr
или просто на загрузчик, установленный на разделе HDD)
reboot.c32
— перезагрузка компьютера
menu.c32
— при использовании в меню, может загружать дополнительные меню (подменю), или производить переход назад/между меню. Пример использования:
Перейдем к настройке
# cd /srv/tftp/
# mkdir pxelinux.cfg
# cd pxelinux.cfg
Создадим конфиг основного меню и внесем начальные настройки
# cat > default
ui vesamenu.c32
PROMPT 0
menu background background.jpg
menu title ServerClub PXE boot menu
LABEL bootlocal
menu label Boot from first HDD
kernel chain.c32
append hd0 0
timeout 120
TEXT HELP
The system will boot after the time is up
ENDTEXT
к содержанию ↑
Создание главного меню PXE сервера
В главном меню мы будем использовать варианты загрузки системы и переход на подменю с утилитами по паролю.
Описание синтаксиса файла меню.
- UI — Активирует программу отображения меню. Если прописано UI pxelinux.cfg/menu.c32 будет использоваться текстовое меню, если прописать UI pxelinux.cfg/vesamenu.c32 будет использоваться графическое меню.
- ALLOWOPTIONS — Блокирует указание дополнительных параметров для загрузчика с помощью клавиши Tab и клавиши ESC для перехода в командный режим.
- PROMPT — Скрывает отображение строки “boot:” для ввода параметров.
- FONT — Загружает шрифт cyr_a8x16.psf для отображения русских букв.
- MENU COLOR — Переопределяет цвета заданные по умолчанию для интерфейса.
- MENU BACKGROUND — Указывает, какой графический файл использовать в виде фона. Я использую файл back.jpg, который находится в с:netbootpxelinux.cfgback.jpg. Внимание! Картинка должна быть в формате jpg или png. Разрешение картинки обязательно должно быть 640×480
- LABEL — Задает идентификаторы меню. Значения этого параметра не должны повторяться внутри файла.
- MENU LABEL — Задает подпись для идентификатора определенного в LABEL.
- Параметр KERNEL — Указывает, какой загрузчик использовать в случае выбора этого пункта меню.
Создадим файл главного меню:
mcedit /var/lib/tftpboot/pxelinux.cfg/default
= необходимые параметры с комментариями = default vesamenu.c32 # Фон для меню menu background backgrounds/fon.png prompt 0 # Время через которое стартует первый пункт меню timeout 100 menu title ##### PXE BOOT MENU: ##### Label 10 menu label Calculate 17 KDE & SEVO44 kernel live/calculate/cld17kde/boot/vmlinuz append initrd=live/calculate/cld17kde/boot/initrd root=nfs:192.168.1.1:/var/lib/tftpboot/live/calculate/cld17kde calculate=lang:ru_RU,keymap:ru_RU,timezone:Europe/Moscow rw selinux=0 LABEL # ADMIN SETTINGS LABEL 20 # Пароль для запуска menu passwd 777 MENU LABEL Utilits KERNEL vesamenu.c32 APPEND pxelinux.cfg/utilits Label # BOOT LOCAL label 30 menu label Boot from local drive localboot 0
Файл фонового изображения меню должен быть размером 640х480 пикселей, в формате PNG или JPEG.
Создадим папку для фоновых изображений и папку для загрузочных live образов систем:
mkdir /var/lib/tftpboot/live
mkdir /var/lib/tftpboot/backgrounds
Загружаем необходимый iso образ любыми удобными вам способами и копируем содержимое в нужную папку.
При использовании образа с графической оболочкой KDE для стабильной работы необходимо использовать 4 G оперативной памяти!
Приведу лишь команды которые необходимы для монтирования и размонтирования образа iso:
mount -o loop /root/calculate_kde_sevo44.iso /mnt/iso
umount /mnt/iso
Настройки параметров для загрузки разных операционных систем различаются.
В данной настройке по умолчанию грузится live образ. В случае если вам необходима по умолчанию загрузка с жесткого диска, то разместите необходимый пункт первым в меню.
Моё главное меню:
к содержанию ↑
Создание подменю для PXE сервера
Все утилиты я намеренно вывел в отдельное подменю и закрыл паролем. Так мне спокойней и пользователи не полезут туда куда им не надо.
Мой файл подменю для utilits выглядит так:
mcedit /var/lib/tftpboot/pxelinux.cfg/utilits
= вывод команды с пояснениями =
default vesamenu.c32
menu background backgrounds/fon.png
menu title ##### Utilits: #####
label # TEST
LABEL 10
MENU LABEL Memtest86+
KERNEL utilits/memtest86
LABEL 11
MENU LABEL MHDD
kernel memdisk
initrd utilits/mhdd32ver4.6.iso
append iso raw
LABEL 12
MENU LABEL Victoria 3.5 HDD
kernel memdisk
initrd utilits/v35.iso
append iso raw
label # Backup/Recovery
LABEL 20
MENU LABEL Clonezilla Live 2.5.2-17
KERNEL utilits/zilla/live/vmlinuz
APPEND initrd=utilits/zilla/live/initrd.img boot=live username=user union=overlay config components quiet noswap edd=on nomodeset nodmraid locales=ru_RU.UTF-8 keyboard-layouts=NONE ocs_live_run="ocs-live-general" ocs_live_extra_param="" video=uvesafb:mode_option=1024x768-16 ocs_live_batch=no net.ifnames=0 nosplash noprompt fetch=tftp://192.168.1.1/utilits/zilla/live/filesystem.squashfs
Label ###
LABEL 30
MENU LABEL NEXT
KERNEL vesamenu.c32
APPEND pxelinux.cfg/default
Скачать необходимый iso образ Clonezilla вы на сайт разработчика. На сайте вы можете найти всю необходимую информацию для настройки и работы с этой замечательной системой.
к содержанию ↑
Видео
На видео показано как работает система Calculate Linux которую я настроил под свои нужды запускаемая с помощью PXE сервера.
В этом небольшом посте я расскажу вам о практических способах реализации загрузки бездисковых устройств через PXE. Скажем так, что до определенного момента я совсем не интересовался этой проблемой и о PXE имел весьма посредственное представление, также, наверное как и у большинства. Т.е. все из нас знают, что в современных ПК есть возможность загрузки по сети, каждый видел в BIOS’е собственного ПК такую возможность (PXE Boot, LAN Boot), но мало кто использовал ее на практике. Реализацией этой возможности мы и займемся на практике, а также рассмотрим какое практическое применение в «домашних условиях» может иметь сетевая загрузка.
Для реализации загрузки через PXE вовсе не обязательно наличие подобных устройств, т.е. по сути нам потребуются DHCP Server, TFTP Server, NFS и/или HTTP для организации хранения и передачи тяжеловесных образов по сети. Все эти компоненты можно установить например и на обычный ПК под управлением Windows, или же, поставить тот же Ubuntu на отдельную машину в локальной сети и настроить все эти сервисы там, благо мануалов в сети предостаточно. Но раз уж так получилось что у нас есть Mikrotik’овский роутер и NAS — то функции DHCP + TFTP логично возложить на Mikrotik, а NFS / HTTP на NAS.
Также нам понадобится самая обычная USB Flash’ка, любого размера, которую мы вставим в Mikrotik чтобы обеспечить хранение файлов, которые будут отдаваться по TFTP. Если у вас уже есть подобная конфигурация (DHCP+TFTP+NFS+HTTP), то можно приступать.
Здесь я расскажу путь, которым прошел я. Первоначально мне было интересно сделать бездисковую загрузку LiveCD дистрибутива Ubuntu, т.е. чтобы любой ПК в сети с HDD или без можно было включить и получить на экране работоспособный Ubuntu, а-ля посидеть в сети / почитать почту и т.п. Подобное решение может оказаться удобным и в местах организации коллективного доступа в интернет, например, различных компьютерных клубах, библиотеках и т.п. Плюс в том, что когда машина не имеет собственного HDD и грузится с единственного образа по сети «сломать» или испортить что-то случайно или умышленно — пользователи вряд-ли смогут. Т.е. после одного сеанса работы пользователя в Интернет можно будет просто перезагрузить ПК и все будет «как новое». Но перед тем как приступить к реализации этой идеи я решил почитать «что пишут в интернете» на тему сетевой загрузки Ubuntu и т.п. Статей как раз нашлось много, но конкретных работоспособных реализаций, в которых описываются все нюансы конфигурирования — было как раз мало. Чтобы у вас на этом же этапе был ровно тот же запас знаний что и у меня, приведу несколько ссылок на статьи, которые меня заинтересовали:
- PXE — Сетевая загрузка с микротика — здесь описывается настройка Mikrotik + TFTP для сетевой загрузки с использованием GRUB (Grub4DOS), а также приведен пример рабочей конфигурации для загрузки ALKID LiveCD и VINCOME LiveCD через PXE. Немного не то что нам хотелось (мы то хотели грузить Ubuntu LiveCD), но тем неменее информация полезная, берем на заметку.
- Настройка TFTP сервера на Mikrotik RouterOS — а вот здесь рассматривается настройка TFTP на Mikrotik, правда тут уже у нас уже используется не GRUB, а PXELINUX (SysLinux) в качестве загрузчика. Который, как мы убедимся позже, можно будет использовать и для реализации сетевой установки Ubuntu, и для загрузки LiveCD и для множества других вещей. Уже интересно, не правда ли? Знакомимся со статьями дальше.
- Загрузочный сервер — как загрузочная флешка, только сервер и по сети — пост на Хабре, в котором рассказывается о том как сделать «загрузочную флешку» по сети. Собственно такая конфигурация отлично подойдет для различных сервисных центров и т.п., с другой стороны, выбрать то, что будет грузиться по сети лично у него — это решение каждого, благо примеров полно. К концу чтения этого поста, вы (по-крайней мере я на это надеюсь) поймете, насколько это удобно.
- Домашний роутер с PXE-Boot и сервисами. — приводится пример организации PXE загрузки на Asus’овском роутере с прошивкой Merlin-Firmware. Честно говоря я сам подобную никогда не использовал, но статья ценна уже как минимум различными примерами рассмотренных в ней конфигураций для загрузки. А также как отличная иллюстрация того, что при желании, для реализации PXE загрузки можно использовать только лишь ресурсы бюджетного SOHO устройства.
- Как воспользоваться сетевой загрузкой (PXE) для Ubuntu LiveCD — переводная статья с HowToGeek, в принципе тоже может быть интересна. Кстати, именно по теме сетевой загрузки Ubuntu LiveCD вы так или иначе наткнетесь на различные ее вариации в поиске.
- Мультизагрузочный PXE-реаниматор — статья на 3DNews от 2012 года, но тоже в принципе интересно. Если вы читая этот пост пока просто просматриваете эти ссылки «по диагонали» — то наверное уже поняли, что PXE загрузка предоставляет практически неограниченный набор возможностей, наша задача лишь научиться правильно применить их для наших задач.
- [How-To] Запуск LiceCD Ubuntu (и не только) с любого ПК в сети с помощью PXE — название поста говорит само за себя, все действия автор проводит на сервере под управлением Debian 7. Т.е. DHCP + TFTP и т.п. у него развернуты на отдельном ПК с Debian 7. Тоже интересно, помечаем в «копилку».
- Configure PXE Server In Ubuntu 14.04 — похожий англоязычный вариант.
- Установка Ubuntu по сети (DHCP, PXE, boot-menu) на примере Ubuntu 14.04.
- Ubuntu 16.04 / Debian 8: Run PXE boot server for automated install — конфигурирование сервера для автоматизированной установки Ubuntu и Debian по сети. Лично мне эта статья понравилась различными комментариями и дополнительными пояснениями. Если читать вдумчиво, а не по диагонали, то становится (хотя бы на базовом уровне) понятно что такое pxelinux.0, ldlinux.c32 и т.п.
- Booten vom Netzwerk: Ubuntu 16.04 via PXE starten — статья, правда на немецком, подробно рассказывающая про то, как правильно настроить загрузку LiveCD с Ubuntu по сети. Собственно она и легла в основу решения поставленной задачи.
- Руководство по сетевой загрузке предустановочной среды Windows (WinPE)
- IT Geek: How to Network Boot (PXE) the WinPE Recovery Disk with PXElinux v5 & Wimboot
Ну и на первое время достаточно. Просмотрев / прочитав все это начнем ваять что-то свое. Первое что мы делаем — это подключаем флешку к Mikrotik’у и форматируем ее в FAT32: System -> Disks -> Format drive … Сделать это можно как через WinBox, так и через Web-интерфейс Mikrotik. Проблем с этим возникнуть не должно.
Затем скачиваем заранее подготовленный архив pxe-mikrotik-disk1.rar и распаковываем его содержимое в корень флешки. Сделать это можно как в меню Files в web-интерфейсе Mikrotik’а, так и через FTP в Mikrotik, ну или просто вставив отформатированную USB Flash в ПК и распаковав в корень содержимое архива. В результате там должна получиться следующая структура файлов (смотреть скриншот справа).
Некоторых файлов, например kolibri.iso (образ Kolibri OS) в архиве не будет, т.к. их можно без труда найти и скачать в интернете, также в архиве не будет содержимого папки winpe (т.к. все эти файлы есть на любом установочном диске с Windows и включать их в состав архива я не вижу смысла). А вот на остальных мы остановимся подробнее.
pxelinux.0 — это основной загрузчик, на который направляются DHCP сервером все клиенты сетевой загрузки, он входит в состав пакета syslinux. Все что касается данного загрузчика, а также используемых им библиотек (*.c32) можно взять в следующих пакетах:
- netboot.tar.gz (Ubuntu, Xenial)
- syslinux-5.01.tar.bz2
- syslinux-4.05.tar.gz
Чем я успешно и воспользовался. Возможно это и не совсем правильно делать «сборную солянку» из netboot и syslinux разных версий, но, например, готовый бинарник memdisk, использующийся в отдельных сценариях загрузки я нашел только в каком-то одном из этих пакетов. С файлами загрузчиков, ядер и т.п. более менее понятно. Т.е. у вас есть набор который получился у меня pxe-mikrotik-disk1.rar и набор источников откуда это бралось.
ipxe.lkrn здесь — это загрузчик Open Source Boot Firmware iPXE, собранный из исходников с поддержкой HTTP, NFS (!) и некоторых друг фич. Но к нему мы вернемся чуть позже, т.к. не рассказать про него я не могу, ввиду его обширного функционала (по хорошему достаточно только iPXE, т.е. PXELinux он как бы не обязателен, т.к. iPXE обладает более широким функционалом и удобнее в конфигурации, но так уж сложилось, что изначально я начал настраивать именно PXELinux, а возможность загрузки iPXE я добавил уже потом).
После того как вы распаковали все файлы из архива pxe-mikrotik-disk1.rar на флешку, заходим в Mikrotik в меню IP -> TFTP и настраиваем в нем следующие соответствия: Req. Filename -> Real Filename:
Для удобства все эти правила в виде одного скрипта:
/ip tftp
add real-filename=disk1/tftpboot/pxelinux.0 req-filename=pxelinux.0
add real-filename=disk1/images/kolibri.iso req-filename=images/kolibri.iso
add real-filename=disk1/images/winvblock.gz req-filename=images/winvblock.gz
add real-filename=disk1/images/pxetheme.gz req-filename=images/pxetheme.gz
add real-filename="disk1/images/Hiren's.BootCD.15.2.iso" req-filename="images/Hiren's.BootCD.15.2.iso"
add real-filename=disk1/tftpboot/memdisk req-filename=memdisk
add real-filename=disk1/winpe/bootmgr req-filename=winpe/bootmgr
add real-filename=disk1/menu.lst/default req-filename=menu.lst/default
add real-filename=disk1/winpe/bootmgr.exe req-filename=winpe/bootmgr.exe
add real-filename=disk1/winpe/boot/boot.sdi req-filename=winpe/boot/boot.sdi
add real-filename=disk1/winpe/boot/bcd req-filename=winpe/boot/bcd
add real-filename=disk1/tftpboot/ldlinux.c32 req-filename=ldlinux.c32
add real-filename=disk1/tftpboot/grldr req-filename=grldr
add real-filename=disk1/tftpboot/undionly.kpxe req-filename=undionly.kpxe
add real-filename=disk1/tftpboot/ipxe.lkrn req-filename=ipxe.lkrn
add real-filename=disk1/tftpboot/wim-boot.ipxe req-filename=wim-boot.ipxe
add real-filename=disk1/tftpboot/boot.ipxe req-filename=boot.ipxe
add real-filename=disk1/tftpboot/boot.png req-filename=boot.png
add real-filename=disk1/tftpboot/wimboot req-filename=wimboot
add real-filename=disk1/tftpboot/pxelinux.cfg/default req-filename=pxelinux.cfg/default
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/boot-screens/vesamenu.c32 req-filename=
ubuntu-installer/amd64/boot-screens/vesamenu.c32
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/boot-screens/linux.c32 req-filename=ubuntu-installer/amd64/boot-screens/linux.c32
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/boot-screens/chain.c32 req-filename=ubuntu-installer/amd64/boot-screens/chain.c32
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/boot-screens/libcom32.c32 req-filename=
ubuntu-installer/amd64/boot-screens/libcom32.c32
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/boot-screens/libutil.c32 req-filename=
ubuntu-installer/amd64/boot-screens/libutil.c32
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/boot-screens/menu.cfg req-filename=ubuntu-installer/amd64/boot-screens/menu.cfg
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/linux req-filename=ubuntu-installer/amd64/linux
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/initrd.gz req-filename=ubuntu-installer/amd64/initrd.gz
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/vmlinuz.efi req-filename=ubuntu-installer/amd64/vmlinuz.efi
add real-filename=disk1/tftpboot/ubuntu-installer/amd64/initrd.lz req-filename=ubuntu-installer/amd64/initrd.lz
add real-filename=disk1/winpe/sources/boot.wim req-filename=winpe/sources/boot.wim
Для чего они? После загрузки PXELinux на устройство начинается поиск дополнительных файлов и библиотек, т.е. устройство пытается подключиться к TFTP серверу, указанному в опциях отдаваемых DHCP сервером и запросить у него, например, файл ldlinux.c32, так вот TFTP сервер должен знать о реальном местоположении файла, чтобы отдать его, например в нашем случае он лежит в disk1/tftpboot/ldlinux.c32. Честно говоря я не экспериментировал, можно ли задать соответствие не отдельным файлам, а папкам или файлам по маскам, поэтому на всякий случай сделал правила для всех файлов на TFTP сервере. После того как мы прописали правила необходимо настроить наш DHCP сервер.
Переходим на закладку IP -> DHCP Server -> Networks в Mikrotik, выбираем нашу подсеть и делаем там следующие настройки:
На этом приготовления к первому запуску закончены. Можно брать любой ПК и пробовать загрузиться по сети. Для меня наиболее простым решением было создание отдельной виртуальной машины в VirtualBox и настройка ее на загрузку по сети. В результате, если все сделано правильно, вы увидите вот такую вот симпатичную менюшку PXELinux:
Сама конфигурация этого меню находится в файле disk1/tftpboot/ubuntu-installer/amd64/boot-screens/menu.cfg . Если мы попробуем загрузиться в Kolibri OS для примера, то заметим что передача казалось бы маленького (всего 66.5 Mb) образа kolibri.iso через TFTP даже по гигабитной сети займет довольно продолжительное время:
Связано это с тем, что протокол TFTP не предназначен для передачи тяжеловесных файлов и в этом отношении работает крайне медленно (плюс еще, как вы понимаете, USB порт в Mikrotik’е, да и флешка не являются высокоскоростными), поэтому хранить на этой флешке какие-то тяжеловесные образы, например тот же Hirens Boot CD, который занимает ~650 Mb и отдавать их по TFTP устройствам — превращается в настоящую муку. Т.е. грузится — да, но оЧЧень медленно. Первая мысль которая приходит в голову — а что если в качестве средства доставки тяжеловесного контента использовать не TFTP, а HTTP или NFS? И да, действительно, такая возможность есть.
Посмотрите как реализована в конфигурации (menu.cfg) загрузка того же Ubuntu LiveCD:
label Ubuntu 16.04 LiveCD [RU]
kernel ubuntu-installer/amd64/vmlinuz.efi
append nfsroot=172.17.112.46:/nfs/Public/iso/ubuntu16.04_live_amd64/ netboot=nfs ro file=/cdrom/preseed/ubuntu.seed boot=casper initrd=ubuntu-installer/amd64/initrd.lz locale=ru_RU bootkbd=ru console-setup/layoutcode=ru --
Здесь ядро vmlinuz.efi и рамдиск initrd.lz у нас грузятся по TFTP, а вот содержимое rootfs уже берется с NFS ресурса (благо Ubuntu так умеет). Порядок создания папки ubuntu16.04_live_amd64 на NFS ресурсе описан тут.
Ну или если вкратце, то я создал отдельную папку на WDMyCloud EX2, разрешил доступ к ней по NFS:
Затем смонтировал ее на машине с Ubuntu в ~/nfs и просто скопировал необходимые файлы с LiveCD с Ubuntu в нее:
sudo apt-get install nfs-kernel-server nfs-common # добавляем поддержку NFS в Ubuntu
sudo mount -t nfs -O uid=1000,iocharset=utf-8 172.17.112.46:/nfs/Public/iso ~/nfs # монтируем NFS шару в ~/nfs
wget http://mirror.yandex.ru/ubuntu-releases/16.04/ubuntu-16.04.2-desktop-amd64.iso # качаем LiveCD с Ubuntu
sudo mount -o loop ubuntu-16.04.2-desktop-amd64.iso /mnt # монтируем его в /mnt
mkdir -p ~/nfs/ubuntu16.04_live_amd64 # создаем папку на nfs шаре
sudo cp -a /mnt/. ~/nfs/ubuntu16.04_live_amd64 # копируем все файлы с LiveCD в нее
В результате содержимое папки ubuntu16.04_live_amd64 у нас полностью идентично корню LiveCD с Ubuntu:
Просто? Просто. Теперь пробуем загрузиться по PXE выбрав в меню LiveCD:
С гигабитной сетью все получилось достаточно быстро. Основное время здесь правда тратится на загрузку vmlinuz.efi (7 Mb) и initrd.lz (27 Mb) по TFTP. И вот здесь мы подходим к главному? А можно ли как-то грузить эти файлы тоже с NFS или с HTTP ресурса? Можно! И ответом здесь является использование вместо PXELinux (который к сожалению так не умеет), загрузчика iPXE. Настоятельно рекомендую вам познакомиться с ним и изучить примеры и т.п. на официальном сайте. В архив pxe-mikrotik-disk1.rar уже входит ipxe.lkrn , собранный мной из исходников с включенной поддержкой HTTP, NFS и т.п.:
Обратите внимание, есть поддержка DNS, HTTP, iSCSI, NFS, TFTP и др. вещей. Т.е. грубо говоря используя iPXE вы можете разместить необходимые файлы не только на NFS шаре, но и где-нибудь в интернете, например, на http://yourdomain.ru/files/ … и загрузчик будет брать их оттуда. При выборе опции Load iPXE SuperBoot Menu в PXELinux открывается меню загрузчика iPXE:
И вот здесь уже, согласитесь, есть чем впечатлиться. Сама конфигурация этого меню находится в файле boot.ipxe, который был взят мной из этого проекта bradgillap/IPXEBOOT на GitHub’е. Внутри подробные примеры и комментарии для всех вариантов загрузки, фактически это означает что вы с минимальными усилиями сможете настроить у себя загрузку любого из приведенных пунктов меню, просто разместив необходимые файлы у себя в сети и скорректировав boot.ipxe .
Ну и последнее о чем хотелось бы рассказать — это о загрузке *.wim образов WinPE через PXE. Для этого в моем примере используется именно iPXE и wimboot. Пример конфигурации вы можете увидеть в menu.cfg от PXELinux в пункте меню «Load iPXE [wim-boot.ipxe]». Фактически там грузится ipxe.lkrn, который читает файл конфига wim-boot.ipxe. Просто размещаете файлы wimboot, bootmgr, bcd, boot.sdi и boot.wim вашего WinPE дистрибутива где-либо в сети (на HTTP, NFS ресурсах) и все замечательно загружается. Примеры опять же, смотрите в wim-boot.ipxe.
Кстати, в меню iPXE SuperBoot от bradgillap есть пункт External Linux Installs. Фактически это внешнее (т.е. находящееся в интернет) загрузочное меню, которое позволяет вам установить некоторые Linux-based ОС, а также загрузить некоторые варианты LiveCD онлайн. Т.е. для того чтобы установить тот же Ubuntu, фактически достаточно только соответствующим образом сконфигурировать DHCP . Все остальное, даже на этапе загрузочного меню может быть взято из сети.
p.s. Чуть не забыл Архив pxe-mikrotik-disk1.rar со всеми необходимыми загрузчиками и примерами конфигураций (пароль на архив стандартный — decker.su). Также буду рад любым вашим мнениям и отзывам в комментариях. Если у вас уже есть свои конфигурации для PXE загрузки распространенных LiveCD дистрибутивов, например, DrWeb Live CD, Kaspersky Rescue Disc и др. популярных инструментов — делитесь ими в комментариях. Также, если у кого-то есть опыт (или ссылки на соответствующие статьи) о настройке бездисковых RDP клиентов, например на базе Thinstation — это тоже приветствуется.
Как вы уже поняли, я далеко не гуру в Linux’е и по-сути как работает PXE я узнал только вчера. Поэтому в архиве по факту используется несколько загрузчиков: PXELinus (SysLinux) как основной, а из него уже можно загрузить iPXE или Grub4DOS, хотя по факту, в реальной жизни достаточно использовать что-то одно. Все это оставлено просто в качестве примера, чтобы было наглядно понятно как работать и с тем, и с другим, и с третьим. Так что, как говорится, «ногами не пинать», а ценные комментарии всегда приветствуются.