Как с помощью PXE настроить утилиты, загружаемые через сетьИсточник: rus-linux Aviad Raviv; Перевод: Н.Ромоданов
Примечание: эта статья предназначена не для начинающих, но вы всегда можете продолжить ее чтение! ОбзорВ настоящем руководстве вам будет рассказано об инструментальных средствах, с помощью которых вы сможете преобразовать утилиты таким образом, чтобы их можно было загружать через сеть (в режиме PXE). Хотя, к сожалению, невозможно таким образом преобразовывать любые утилиты, мы не были бы спецами, если бы не попытались хотя бы попробовать это сделать. Если вы еще не пользуетесь Ubuntu в качестве средства номер один для Но к вышесказанному следует добавить, что есть то, что просто нельзя сделать в Ubuntu LiveCD (например, обновить BIOS), либо, возможно, что вы уже пользуетесь некоторым другим инструментальным средством, которое вам нравится и вы предпочитаете продолжать им пользоваться в любой ситуации. Рекомендации, допущения и предварительные требования
Почему просто не воспользоваться образом ISO при загрузке через сеть (режим PXE)?Часто это первый вопрос, который задают, когда речь идет о загрузке через сеть (в режиме PXE). Если отвечать кратко, то хотя технически можно взять образ ISO и загрузить его по сети на клиентские машины, почти всегда в содержимом указанного ISO будет предполагаться, что есть доступное физическое представление в виде имеющегося физического устройства CD-ROM. Таким образом, вне зависимости от того, что находится внутри образа ISO, возможны попытки найти файлы, расположенные на "постзагрузочных секторах" на физическом приводе CD-ROM клиентской машины и, поскольку их найти не удастся, загрузка выполнена не будет. Есть два пути преодоления этой проблемы:
Поскольку оба приведенных варианта не соответствуют задаче "использовать только с помощью ISO", мы не рекомендуем прилагать усилия в этих направлениях. Метод, использующий ядроИногда программе, которую вы пытаетесь загрузить, может оказаться достаточным, хотя и очень редко, только функций ядра. Одним из типичных примеров является программа Пункт меню PXE для memtest может выглядеть, например, следующим образом: LABEL Run Memtest86+ kernel fog/memtest/memtest append - В этом примере директива "LABEL Run Memtest86+" задает имя пункта, директива "kernel fog/memtest/memtest" указывает программе PXElinux, где взять ядро, которое будет отправлено клиенту, а директива "append -" указывает программе PXElinux игнорировать дополнительные параметры загрузки*. * Примечание: эти параметры, в зависимости от настроек, могут даже не потребоваться ив FOG они, на самом деле, не используются. Метод, использующий ядро + initrdНа сегодняшний день этот метод является наиболее типичным и широко распространенным подходом по следующим причинам:
Давайте в качестве примера используем утилиту стрессовой нагрузки CPU, взятую из пакета UBCD. Что касается файловой структуры UBCD, то эта утилита находится в каталоге ubcd/boot/cpustress. Мы ищем файл bzImage, который является ядром, и файл initrd.gz, который является начальным диском RAM. Если вы используете настройку FOG, которую мы создали, то мы рекомендуем вам скопировать их каталог /tftpboot/howtogeek/utils. Как только это будет сделано, отредактируйте файл /tftpboot/howtogeek/menus/utils.cfg и добавьте к нему загрузочную запись, которая находится в пунктах меню пакета UBCD. Ее можно найти в файле ubcd/menus/syslinux/cpu.cfg. С учетом настроек, сделанных для FOG, пункт меню должен выглядеть следующим образом: MENU LABEL StressCPU V2.0 (requires CPU with SSE) TEXT HELP Torture-test your CPU in order to make sure that you don't have overheating problems. Requires SSE-equipped x86 CPUs. Executes a special version of the Gromacs innerloops that mixes SSE and normal assembly instructions to heat your CPU as much as possible. ENDTEXT KERNEL howtogeek/utils/cpustress/bzImage INITRD howtogeek/utils/cpustress/initrd.gz APPEND root=/dev/ram0 ramdisk_size=12000 noapic ubcdcmd=stresscpu2 Где:
Пару вещей, на которые следует обратить внимание:
Хотя это очень простой пример, его для начала должно быть достаточно. Метод, использующий ядро + initrd + NFSЭтот метод является одним из тех, которым мы пользовались в статье Метод MEMDISKСледует отметить, что FOG поставляется с версией memdisk, совместимой с версией pxelinux.0, которая ее использует. Поэтому не рекомендуется копировать файл memdisk, поставляемый в комплекте с файлом img. Поскольку этот метод уже широко используется даже для обычных утилит и загрузочных компакт дисков, то большая часть времени будет потрачена на то, чтобы найти файл IMG ена загрузочном компакт диске, скопировать его в каталог сервера TFTPD и скопировать запись меню ISOlinux в меню PXElinux. Говорят, что болтать достаточно просто, так что давайте посмотрим на то, как мы можем адаптировать одну из утилит из пакета UBCD при помощи метода MEMDISK так, чтобы она работала в режиме PXE. Утилиту TestMemIV можно найти в файловой структуре пакета UBCD в архиве ubcd/images/testmem4.img.gz. Поскольку у нас уже есть дисковая утилита memdisk, то в каталог howtogeek/utils/ нужно скопировать только файл img. С учетом настроек, сделанных для FOG, пункт меню должен выглядеть следующим образом: MENU LABEL TestMemIV TEXT HELP Tests system memory and memory on Nvidia video cards. ENDTEXT LINUX memdisk INITRD howtogeek/utils/testmem4.img.gz Хотя в этом примере есть свой собственный файл образа флоппи диска из пакета UBCD, большинство других программ UBCD используют тот же самый образ для того, чтобы начать работу (fdubcd.img.gz) и использовать дополнительный параметр ubcdcmd для автозапуска программ с постзагрузочной части CD-ROM. Это означает, что вы не сможете преобразовать большую часть этих утилит в вариант, позволяющий загружаться через сеть, если не воспользуетесь реверсным инжинирингом. Хотя такой реверсный инженеринг возможен (об этом можно узнать С учетом всего вышесказанного, теперь у вас есть инструментальное средство для выполнения этой процедуры для этой эзотерической диагностики OEM или для утилиты обновления BIOS. |