Назад | Перейти на главную страницу

Создание загрузочного USB-накопителя из загрузочных файлов PXE

Осмотрелся и погуглил, но не нашел похожего вопроса. Похоже, что большинство людей хотят взять загрузочную флешку USB и преобразовать ее в загрузочный образ PXE. На самом деле мне нужно пойти в обратном направлении, то есть создать загрузочную флешку USB из загрузочных файлов PXE.

У меня есть PXE-сервер, используемый для создания образа диска. Некоторые устройства в моей сети не могут выполнять загрузку PXE, потому что 1) PXE уже используется чем-то еще в их подсети или 2) их сетевой адаптер не поддерживает PXE. Мой единственный вариант - получить все файлы, которые используются для загрузки устройства PXE, и попытаться создать загрузочную флешку.

У меня есть доступ к серверу PXE, который использует PXELinux. Вот что находится в файле "по умолчанию", используемом PXELinux.

default imaging
prompt 0
noescape 1

label imaging
kernel kernel/bzImage
append initrd=kernel/init.gz root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns=10.10.10.5 storage=10.10.10.211:/imaging/images/ driversstorage=10.10.10.211:/imaging/drivers/ imaging_server=10.10.10.211:20444 symmetric_key=KsqRwghBK+l/LGQ83kOp3Gl8Xos9mrTItQ69MJabgAv5DqcKakVCwNpE4QJ+A9zzDoSAhdREIVK4lkUZP67XXg loglevel=4a

Я в основном работаю с Windows / Mac, но могу обойтись и с Linux, и мне удобно запускать командные строки в терминале. Я почти ничего не знаю ни о процессе загрузки Linux, ни о том, как сделать загрузочную флешку. Из приведенного выше файла конфигурации PXELinux я понял, что файлы bzImage и init.gz необходимы для PXE-загрузки клиентского устройства. Есть ли способ использовать эти 2 файла и информацию из конфигурации PXELinux для создания загрузочного USB-накопителя?

Спасибо

Вы не можете легко это сделать; даже если вам удастся создать загрузочный USB-накопитель, загружающий ядро ​​и initrd, параметры initrd все равно потребуют сетевых ресурсов. из вашего примера

append initrd=kernel/init.gz root=/dev/ram0 rw ramdisk_size=127000 ip=dhcp dns=10.10.10.5 storage=10.10.10.211:/imaging/images/ driversstorage=10.10.10.211:/imaging/drivers/ imaging_server=10.10.10.211:20444 symmetric_key=KsqRwghBK+l/LGQ83kOp3Gl8Xos9mrTItQ69MJabgAv5DqcKakVCwNpE4QJ+A9zzDoSAhdREIVK4lkUZP67XXg loglevel=4a

init.gz принимает в качестве параметра ip=dhcp сообщая загрузочному исполнителю получить его IP-адрес по DHCP, затем он загружает storage=10.10.10.211:/imaging/images/ сообщая загрузчику, что остальные компоненты загрузки / установки хранятся в сети и т. д.

Как видите, попытка сделать то, что вы хотите, требует редактирования вашего initrd параметры (зависит от дистрибутива) и удаление всех сетевых ссылок; нетривиальная задача, которую можно решить с помощью готовой утилиты.