- Загрузка с ISO через PXE без полного скачивания образа
- Настройка PXE-сервера для загрузки Windows PE Configure a PXE server to load Windows PE
- Необходимые условия Prerequisites
- Шаг 1: скопируйте исходные файлы Windows PE Step 1: Copy Windows PE source files
- Шаг 2: настройка параметров загрузки и копирование файла BCD Step 2: Configure boot settings and copy the BCD file
- Сводка по процессу загрузки PXE PXE boot process summary
- How to boot Windows ISO installation using PXE (without Windows AIK or whatever)
- 5 Answers 5
- PXE — грузим все! Мультизагрузка по локальной сети, часть 2
- Содержание статьи
- Итак, планы на сегодня!
- Начнем с Windows
- WARNING
- Хакер #202. Скажи нет большому брату!
- Добавляем параметры в меню PXE-сервера
- Подготовка файла ответов
- Запуск диагностических утилит
- Запуск Kaspersky Rescue Disk
- Установка Debian
- Заключение
- Александр «Plus» Рак
Загрузка с ISO через PXE без полного скачивания образа
PXE умеет загружать memdisk. Memdisk умеет загружать ISO‑образ, предварительно скачав его в RAM полностью. Если ISO‑образ большой, то загрузка затягивается надолго. Подскажите, как можно через PXE загрузить машину с удалённого ISO‑образа без его полного скачивания? Скачивается образ Acronis Snap Deploy, так что там неизвестно, какие параметры передавать как linux и initrd (если брать этот вариант), да и хотелось бы универсального решения, которое смогло бы смонтировать произвольный образ. GRUB2, как я понял, не умеет монтировать NFS‑ресурсы (или другие, поддерживающие частичную скачку).
iPXE можно использовать. Он умеет по http грузить, что сильно быстрее tftp. Можно еще попробовать iSCSI.
Я для образов ipxe использую вместе с syslinux для меню и рюшечек.
грузишь для загрузки только ядро, остальное маунтишь по айскази или nfs
то чего ты хочешь, скорее всего невозможно. Загружать ISO без полной загрузки в память умеет grub4dos, скорее всего отображает в память, потому что если файл запишется на диск не одним куском, работать не будет. Сеть он не умеет.
Если это акронис, там скорее всего ядро и рамдиск. Их можно грузить обычным способом.
Загружать ISO без полной загрузки в память умеет grub4dos
работающий кусок для grub2 и нет полной загрузки
iPXE можно использовать. Он умеет по http грузить, что сильно быстрее tftp. Можно еще попробовать iSCSI.
iPXE можно завернуть в ISO‑образ? Есть ли хотя бы примерные ориентиры, на сколько процентов уменьшится время загрузки трёхсотметрового образа?
грузишь для загрузки только ядро, остальное маунтишь по айскази или nfs
Из образа Acronis Snap Deploy у меня не получалось вытащить ядро и initrd. А Вы пробовали?
Если это акронис, там скорее всего ядро и рамдиск. Их можно грузить обычным способом.
Содержимое ISO‑образа Acronis Snap Deploy — два файла размером меньше мегабайта. И они ни разу не похожи на ядро и initrd.
работающий кусок для grub2 и нет полной загрузки
GRUB2 сумеет в этом куске смонтировать NFS‑ресурс? Он сможет этот ISO‑образ взять по HTTP без полного скачивания, обращаясь только к используемым кускам трёхсотметрового образа?
1) В директории «boot-images» третьего основного раздела mbr диска лежит файл «ubuntu-16.04.3-desktop-amd64.iso».
2) Если этот раздел форматирован в ntfs (ext), то где-то перед строкой «loopback loop $ISO» должно быть «insmod ntfs» («insmod ext2»)
3) Это работает с конкретной убунтовой исошкой, и не работает с исошкой tails, или debian, или acronis.
4) Про сеть тут ничего нет.
Настройка PXE-сервера для загрузки Windows PE Configure a PXE server to load Windows PE
Относится к Applies to
В этом пошаговом руководстве описано, как настроить PXE-сервер для загрузки Windows PE при запуске клиентского компьютера по сети. This walkthrough describes how to configure a PXE server to load Windows PE by booting a client computer from the network. С помощью средств Windows PE и файла образа Windows 10 можно установить Windows 10 по сети. Using the Windows PE tools and a Windows 10 image file, you can install Windows 10 from the network.
Необходимые условия Prerequisites
- Компьютер развертывания: компьютер с набором оценки и развертывания Windows (Windows ADK) и надстройкой Windows PE с установленным ADK. A deployment computer: A computer with the Windows Assessment and Deployment Kit (Windows ADK) and the Windows PE add-on with ADK installed.
- DHCP-сервер: DHCP-сервер или прокси-сервер DHCP, настроенный для отправки ответов на запросы PXE-клиентов. A DHCP server: A DHCP server or DHCP proxy configured to respond to PXE client requests is required.
- PXE-сервер: сервер под управлением службы TFTP, на котором могут размещаться файлы загрузки Windows PE для скачивания клиентом. A PXE server: A server running the TFTP service that can host Windows PE boot files that the client will download.
- Файловый сервер: сервер с общей сетевой папкой. A file server: A server hosting a network file share.
Все четыре перечисленных выше роли могут размещаться на одном компьютере, также можно выделить отдельный компьютер для каждой роли. All four of the roles specified above can be hosted on the same computer or each can be on a separate computer.
Шаг 1: скопируйте исходные файлы Windows PE Step 1: Copy Windows PE source files
На компьютере развертывания: нажмите Пуск и введите развертывание. On the deployment computer, click Start, and type deployment.
Щелкните правой кнопкой мыши элемент Среда средств развертывания и работы с образами и затем нажмите Запуск от имени администратора. Right-click Deployment and Imaging Tools Environment and then click Run as administrator. Будет запущен ярлык среды средств развертывания и создания образов, который открывает окно командной строки и автоматически задает переменные среды таким образом, чтобы они указывали на все необходимые средства. The Deployment and Imaging Tools Environment shortcut opens a Command Prompt window and automatically sets environment variables to point to all the necessary tools.
Чтобы скопировать базовые файлы Windows PE в новую папку, выполните следующую команду. Run the following command to copy the base Windows PE files into a new folder. Сценарий требует два аргумента: архитектуру оборудования и целевое расположение. The script requires two arguments: hardware architecture and destination location. Значение может быть x86, amd64 или arm, а может соответствовать пути к локальному каталогу. The value of can be x86, amd64, or arm and is a path to a local directory. Если каталог еще не существует, он будет создан. If the directory does not already exist, it will be created.
Например, следующая команда копирует файлы архитектуры amd64 в каталог C:\winpe_amd64: For example, the following command copies amd64 architecture files to the C:\winpe_amd64 directory:
Сценарий создает структуру каталогов назначения и копирует все необходимые файлы для этой архитектуры. The script creates the destination directory structure and copies all the necessary files for that architecture. В предыдущем примере создаются следующие каталоги: In the previous example, the following directories are created:
Подключите базовый образ Windows PE (winpe.wim) в каталог \mount с помощью средства DISM. Mount the base Windows PE image (winpe.wim) to the \mount directory using the DISM tool. При подключении файла образа его содержимое распаковывается в папку, что позволяет вносить изменения напрямую или с помощью таких программ, как DISM. Mounting an image file unpacks the file contents into a folder so that you can make changes directly or by using tools such as DISM. См. приведенный ниже пример. See the following example.
Убедитесь, что отображается сообщение «Операция завершена успешно». Verify that «The operation completed successfully» is displayed. Примечание. Чтобы просмотреть подключенные в настоящее время образы, введите dism /get-MountedWiminfo. Note: To view currently mounted images, type dism /get-MountedWiminfo.
Выполните сопоставление общего сетевого ресурса корневому каталогу TFTP на сервере PXE/TFTP и создайте папку \Boot. Map a network share to the root TFTP directory on the PXE/TFTP server and create a \Boot folder. Обратитесь к документации сервера TFTP, чтобы определить корневой каталог сервера TFTP, а затем включите общий доступ к этой папке и убедитесь, что она доступна в сети. Consult your TFTP server documentation to determine the root TFTP server directory, then enable sharing for this directory, and verify it can be accessed on the network. В следующем примере имя сервера PXE имеет значение PXE-1, а общий доступ к корневому каталогу TFTP предоставляется с помощью сетевого пути \\PXE-1\TFTPRoot: In the following example, the PXE server name is PXE-1 and the TFTP root directory is shared using a network path of \\PXE-1\TFTPRoot:
Скопируйте файлы загрузки PXE из подключенного каталога в папку \boot. Copy the PXE boot files from the mounted directory to the \boot folder. Пример. For example:
Скопируйте файл boot.sdi на сервер PXE/TFTP. Copy the boot.sdi file to the PXE/TFTP server.
Скопируйте загрузочный образ Windows PE (boot.wim) в папку \boot. Copy the bootable Windows PE image (boot.wim) to the \boot folder.
(Необязательно) Скопируйте в папку \boot шрифты true type (Optional) Copy true type fonts to the \boot folder
Шаг 2: настройка параметров загрузки и копирование файла BCD Step 2: Configure boot settings and copy the BCD file
Создайте хранилище BCD с помощью bcdedit.exe: Create a BCD store using bcdedit.exe:
Настройте параметры RAMDISK: Configure RAMDISK settings:
Последняя команда возвращает идентификатор GUID, например: The last command will return a GUID, for example:
Скопируйте этот идентификатор GUID для использования в следующих командах. Copy this GUID for use in the next set of commands. В каждой приведенной команде замените «GUID1» своим идентификатором GUID. In each command shown, replace «GUID1» with your GUID.
Создайте новую загрузочную запись приложения для образа Windows PE: Create a new boot application entry for the Windows PE image:
Настройте параметры BOOTMGR (не забудьте заменить GUID1 в третьей команде своим идентификатором GUID): Configure BOOTMGR settings (remember to replace GUID1 in the third command with your GUID):
Скопируйте файл BCD на свой TFTP-сервер: Copy the BCD file to your TFTP server:
Теперь ваш сервер PXE/TFTP настроен. Your PXE/TFTP server is now configured. Можно просмотреть установленные параметры BCD с помощью команды bcdedit /store /enum all. You can view the BCD settings that have been configured using the command bcdedit /store /enum all. См. следующий пример. See the following example. Примечание. Ваш идентификатор GUID будет отличаться от приведенного ниже. Note: Your GUID will be different than the one shown below.
Если вы запустите процесс загрузки PXE, но получите сообщение об ошибке «Данные конфигурации загрузки для компьютера отсутствуют или содержат ошибки», убедитесь, что каталог \boot установлен в правильном корневом каталоге сервера TFTP. If you start the PXE boot process, but receive the error that «The boot configuration data for your PC is missing or contains errors» then verify that \boot directory is installed under the correct TFTP server root directory. В используемом здесь примере имя этого каталога — TFTPRoot, но сервер TFTP может быть другим. In the example used here the name of this directory is TFTPRoot, but your TFTP server might be different.
Сводка по процессу загрузки PXE PXE boot process summary
В следующей таблице приведены основные сведения о процессе загрузки PXE-клиента. The following summarizes the PXE client boot process.
How to boot Windows ISO installation using PXE (without Windows AIK or whatever)
I have a Linux PXE server.
Can boot into Linux ISO installers using PXE with no problems.
But how can I do it with Windows ISO? Just start the installation. Without creating some stuff (winpe) under Windows.
I’ve extracted some files from image.iso/sources/boot.wim /2/Windows/Boot/PXE/ to tftp root
Pointed kernel to (in pxelinux.cfg/default):
That’s at least something that boots and gives:
What should I do to continue booting process? I also created a Samba share with ISO contents, but how to connect all this?
All the tutorials I’ve found are either outdated or (most) require to create an additional boot image under Windows using its tools. Is it really so sad sad situation?
Update
For Linux ISO I have something like this:
/var/lib/tftpboot/u1404 is a mount point for Ubuntu 14.04 ISO
For Windows I stopped at this (and the error above) and don’t know what exactly to do next:
And to clarify: the question is how to do it (configure PXE for Windows ISO) in Linux environment. If I was in a hurry I’d use WDS or some other Windows tools without a question.
5 Answers 5
Have you tried FOG project before? It has a prebuilt PXE server compatible with many versions of Ubuntu Linux. Heres a link
From what I remember, its still open source but they are an excellent project. I have done custom boots of either Barts Duke and Nuke ISO or Ultimate Boot CD (at the moment I cannot remember which one as the last time I was employed their was two years ago.) as a boot option from their PXE menu so I know it would help solve your problem if you only need to boot from an ISO instead of install an image. If you need to install an image its perfect for that too. From what I remember its a simple file change to add a boot option. Its all documented though on the website above. FOG is very powerful, my last job was using it for their main imaging solution. Here’s an example where they boot ISO files by simply specifying a path to the ISO file:
It boots any ISO we gave it so far. Easy. It has an installer too.
PXE — грузим все! Мультизагрузка по локальной сети, часть 2
Содержание статьи
Что ж, пришло время продолжить загрузить по сети еще что-нибудь интересное и, самое главное, полезное. В первой части мы рассмотрели запуск программ Acronis, установку Debian/Ubuntu Linux, загрузку маленьких ISO и запуск готовых WIM-образов.
Итак, планы на сегодня!
- Установка Windows в ручном и автоматическом режимах.
- Сборка WIM-образа.
- Подготовка файла ответов.
- Запуск ERD Commander (MSDaRT).
- Загрузка Kaspersky Rescue.
- Бонусом реализуем запуск установки Debian с дальнейшей установкой по SSH.
Начнем с Windows
На эту тему на просторах Сети можно найти довольно много статей. За основу я взял статью с Хабра «Установка Windows Server 2008 по сети с Linux PXE сервера. Кастомизация образа WinPE».
WARNING
Первым делом необходимо подготовить среду WinPE, с которой и будем запускать установки различных систем семейства Windows. Для этого нам потребуется пакет Windows AIK, скачать который можно бесплатно с официального сайта Microsoft.
Запуск средств развертывания Windows PE
Хакер #202. Скажи нет большому брату!
После установки пакета Windows AIK открываем консоль «Командная строка средств развертывания». Скопируем WIM-образ и загрузчик и смонтируем его в систему:
Скрипт с меню WinPE запускается файлом startnet.cmd . Для корректного отображения кириллицы надо сменить кодировку этого файла на CP866. Следующим шагом нужно поправить по необходимости файл скрипта.
Добавляем параметры в меню PXE-сервера
Меню готово. Как видно из параметров в скрипте, на каждом этапе подключается некая сетевая папка. На PXE-сервере, установка и запуск которого были описаны в предыдущей статье, через Samba нужно опубликовать папку, которая будет доступна только для чтения (иначе установщик может стремиться что-нибудь туда запихнуть или перезаписать).
Далее для автоустановок надо подготовить файлы ответов. Забегая вперед, скажу, что благодаря этим самым файлам можно добиться абсолютно любого результата, например реализовать автоустановку с разбивкой первого диска 40/60% с подключением к домену, и дальше все необходимое программное обеспечение можно уже доставить групповыми политиками домена (но это уже совсем другая история).
Меню подготовили, дальше нужно все запаковать назад в WIM-образ:
Полученный образ WinPE — winpe.wim копируем на PXE-сервер. Далее в меню загрузки PXE, созданного в первой статье, /var/lib/tftpboot/pxelinux.cfg/default подключаем дочерний файл, в котором будет раздел windows.
Загрузка WIM-образов описана в первой статье. Поэтому привожу только секцию запуска:
Подготовка файла ответов
Начнем с Windows 7 Pro. Для подготовки файла ответов потребуется файл install.wim, который можно взять на установочном диске Windows 7 в папке source. Хватаем его, копируем в удобное доступное место. Далее запускаем Windows System Image Manager.
Запуск Windows System Image Manager
В секции «Образ Windows» выполняем правый клик — выбрать образ Windows. Затем необходимо выбрать подготовленный install.wim .
Выбор образа Windows
Далее система может ругнуться на то, что для этого образа не удается открыть файл каталога, связанного с ним, и попросит создать новый. После согласия система будет какое-то время копошиться, создавая все необходимое, тут каждому придется запастись долей терпения. В зависимости от железа, на котором все действо происходит.
Процесс создания файла каталога
Когда комп отпустит и образ загрузится в программу, в разделе «Файл ответов» выполняем правый клик — «Новый файл ответов». Берем пробирки, начинаем химичить. В ходе установки с обычного диска без использования файла ответов программа установки операционной системы задает обычно следующие вопросы: страна и регион, время и валюта, указание часового пояса, раскладка клавиатуры, язык системы (опционально), имя создаваемого пользователя, имя компьютера, пароль создаваемого пользователя, ключ продукта, принятие лицензионного соглашения, вопрос об активации Windows, вопрос о выборе режима работы автоматических обновлений. Чтобы система устанавливалась целиком автопилотом, большинство этих параметров необходимо задать в файле ответов.
Сначала подготовим разметку диска компьютера. Для этого в разделе «Образ Windows» раскрываем список и правым кликом добавляем amd64_Microsoft-Windowsl-Setup*/DiskConfiguration в группу 1 файла ответов windowsPE. Раскроем раздел amd_Microsoft-Windows-Setup_neutral в поле «Файл ответов», правым кликом на разделе DiskConfiguration сделаем разметку для диска. На созданном разделе Disk поля «Файл ответов» для DiskID выбираем 0, поскольку под систему используется, как правило, первый диск в компьютере. Параметр WillWipeDisk говорит о форматировании жесткого диска и переразметке всех существующих на нем разделов.
Разметка диска
Раскроем раздел Disk. Будет доступно два подраздела: CreatePartitions и ModifyPartitions. Первым параметром задается, на какие части разбивать жесткий диск.
Разметка диска
Вторым — как именно это делать, какую файловую систему создавать при форматировании и каким он будет помечен флагом. Первый диск разбиваем на 100 Мбайт, второй я сделал на 50 000 Мбайт. При этом вторым параметром задаем форматирование второго раздела в NTFS, помечаем имя раздела как system.
Форматирование раздела
Параметром PartitionID указывается, какой раздел жесткого диска компьютера обрабатывать, Order определяет, в каком порядке. Параметр Letter задает букву диска. Следующим шагом из поля «Образ Windows» правым кликом amdMicrosoft-Windows-Setup*/WindowsDeploymentServices добавляем параметр для прохода 1 windowsPE.
Добавление учетных данных
В секции ImageSelection поле ImageGroup отвечает за название группы, в которой находится установочный образ, а поле ImageName — собственно за имя самого образа. В полях DiskID и PartitionID пункта InstallTo указываем номера раздела и диска, на которые будет производиться установка. Для ввода учетных данных пользователей из поля «Образ Windows» amd64Microsoft-Windows-Shell-Setup* добавляем секцию UserAccounts. Здесь же можно ввести временную зону и другие параметры.
Создание локального пользователя
Для проверки на наличие ошибок файла ответов выбираем в панели меню «Сервис -> Проверка файла ответов».
Проверка файла ответов
Добавим параметры: имя компьютера, ключ продукта, владелец операционной системы, название организации, параметры зоны времени и так далее. Для этого добавим целиком секцию amd_Microsoft-Windows-Shell-Setup* .
Другие параметры
Для языковых параметров необходимо использовать секцию amd64_Microsoft-Windows-International-Core_neutral. После всех манипуляций сохраняем файл ответов, например win7.xml, в каталог с дистрибутивом Windows 7, опубликованный на PXE-сервере через samba. Для Windows 8 и Windows Server 2012 файл ответов можно создать аналогичным образом или отредактировать полученную XML и сохранить в каталогах дистрибутивов под соответствующими именами.
Запуск диагностических утилит
С Windows вроде закончили, переходим к различным мелким полезным штуковинам. Тут все просто: если программа идет небольшим ISO- или IMA-образом, то проще всего ее запустить memdisk’ом, примеры есть в первой статье.
Запуск Kaspersky Rescue Disk
С Касперским дела обстоят немного интереснее. Собрать ядро и образ ФС (rescue и rescue.igz) для использования в PXE очень просто. Однако, как оказалось, собрать — это полбеды. А вот как организовать обновление без пересборки образа постоянно? Кто-то настраивает пересборку образов скриптами. Я решил попробовать пойти по пути наименьшего сопротивления — реализовать через NFS. Складывать в каталог, который подключен по NFS, пересобрать файлы загрузки так, чтобы каталог системы с базами монтировался как NFS-каталог с базами. Либо монтировать каталог с базами куда-нибудь в систему и через символьную ссылку подключать к каталогу системы, в котором базы должны находиться. О результатах напишу в комментариях к статье. Пока запуск выполняю вот так:
Установка Debian
Запускает установку Debian с заданными параметрами файл preseed.cfg, подтянуть который можно по HTTP. Для этого поднимаем легенький веб-сервер (по счастливому случаю у меня уже установлен Apache 2, поэтому я буду публиковать файл там). Публикуем каталог debian на веб-сервере, создаем там файл preseed.cfg, убеждаемся, что он доступен (проверить можно браузером). В параметры загрузки PXE добавляем:
Файл preseed.cfg, если проводить аналогию с вариантами автоматизации установки Windows, является файлом ответов = файлом конфигурации установки системы. Задавать можно любые параметры, которые хотим автоматизировать, в нашем случае следующие: язык в установленной системе, страна нахождения сервера, часовой пояс, синхронизация времени с заданного NTP-сервера, параметры раскладки клавиатуры, зеркало архива, каталог архива, использование прокси. Включаем SSH-сервер внутри установщика для продолжения установки по SSH с паролем qwerty (логин для подключения будет installer), в процессе установки системы установить сразу пакеты: openssh-server, sudo, screen и byobu. И последним параметром указываем выполнить полное обновление:
Также можно задать настройки HDD: куда ставить систему, как разбивать, сколько выделять под swap:
Можно задать параметры установки пароля root:
Отключить последнее сообщение о завершении установки системы:
Выключение хоста после завершения установки:
Таким образом можно задать любой другой параметр. Использовать для еще большего удобства можно в комбинации с Puppet. Доставляя клиент Puppet при установке и передавая управление системе контроля конфигурациями Puppet, получаем готовый, заточенный под конкретную задачу сервер. 🙂
Заключение
Как показала практика, все оказалось гораздо проще, чем выглядело на первый взгляд. Если использовать PXE в паре, например, с Docker, Puppet, WPI, с системного администратора снимается около 40% задач. Освободившееся время лучше потратить с пользой ;). Всем удачи!
P. S. В ходе эксплуатации возникла проблема с запуском установки Windows, а именно: при некоторых конфигурациях драйверы на сетевую карту не находились, в результате чего не подключалась директория с дистрибутивом Windows. Решение подсказал Sosed213. Необходимо добавить драйверы на сетевые карты, для этого опять монтируем winpe.wim. Добавляем драйверы сразу паком, предварительно распаковав их:
Александр «Plus» Рак
Участник сообщества OmskLUG. Инженер отдела электронного взаимодействия МКУ «Информационно-технического управления».