Як за допомогою pxe налаштувати утиліти, що завантажуються через мережу - програмні продукти

Aviad Raviv; Переклад: Н.Ромоданов

У цьому посібнику вам буде розказано про інструментальні засоби, за допомогою яких ви зможете перетворити утиліти таким чином, щоб їх можна було завантажувати через мережу (в режимі PXE). Хоча, на жаль, неможливо таким чином перетворювати будь-які утиліти, ми не були б фахівцями, якби не спробували хоча б спробувати це зробити.

Якщо ви ще не користуєтеся Ubuntu в якості засобу номер один для усунення неполадок, діагностики та спасательниех процедур. то чого ж ви чекаєте?

Але до вищесказаного варто додати, що є то, що просто не можна зробити в Ubuntu LiveCD (наприклад, оновити BIOS), або, можливо, що ви вже користуєтеся деяким іншим інструментальним засобом, яке вам подобається і ви вважаєте за краще продовжувати користуватися ним в будь-якій ситуації.

Рекомендації, допущення і попередні вимоги

Чому просто не скористатися чином ISO при завантаженні через мережу (режим PXE)?

Часто це перше питання, яке задають, коли мова йде про завантаження через мережу (в режимі PXE). Якщо відповідати коротко, то хоча технічно можна взяти образ ISO і завантажити його по мережі на клієнтські машини, майже завжди у вмісті зазначеного ISO передбачатиметься, що є доступне фізичне представлення у вигляді наявного фізичного пристрою CD-ROM. Таким чином, незалежно від того, що знаходиться всередині образу ISO, можливі спроби знайти файли, розташовані на "постзагрузочних секторах" на фізичному приводі CD-ROM клієнтської машини і, оскільки їх знайти не вдасться, завантаження виконана не буде.

Є два шляхи подолання цієї проблеми:

  • Запишіть образ ISO на диску і вставити його в привід компакт-дисків на клієнтській машині - Хоча цей підхід простий, ми будемо використовувати компакт диски, від використання яких ми намагаємося відмовитися.
  • Відкрийте образ ISO і змініть спосіб, який застосовується в програмі для доступу до драйвера CDROM, причому так, щоб програма знала, де в оперативній пам'яті шукати образ ISO - досить складний підхід, причому це кожен раз буде новий спосіб для кожного типу завантажується програми. Тобто для Linux, WinPE або UBCD немає однакової процедури, про що недавно згадувалися.

Метод, який використовує ядро

Іноді програмі, яку ви намагаєтеся завантажити, може виявитися достатнім, хоча і дуже рідко, тільки функцій ядра. Одним з типових прикладів є програма memtest86 +. Програма Memtest поставляється на більшості інсталляцінних компакт-дисків з дистрибутивами Linux. а також і з FOG. Оскільки програмою Memtest повинна взаємодіяти тільки із самими основними функціями перевіряється апаратного забезпечення, наприклад, з пам'яттю (ОЗУ), і вона може нормально працювати навіть на повному обсязі підтримуваному апаратному забезпеченні (тобто вона буде тестувати пам'ять навіть у тому випадку, коли тип пам'яті невідомий , невідома її швидкість і т. д.), цією програмою нічого не потрібно і вона може працювати повністю автономно.

Пункт меню PXE для memtest може виглядати, наприклад, наступним чином:

LABEL Run Memtest86 + kernel fog / memtest / memtest append -

У цьому прикладі директива "LABEL Run Memtest86 +" задає ім'я пункту, директива "kernel fog / memtest / memtest" вказує програмі PXElinux, де взяти ядро, яке буде відправлено клієнту, а директива "append -" вказує програмі PXElinux ігнорувати додаткові параметри завантаження *.

* Примітка: ці параметри, в залежності від налаштувань, можуть навіть не знадобитися верб FOG вони, насправді, не використовуються.

Метод, який використовує ядро ​​+ initrd

На сьогоднішній день цей метод є найбільш типовим і широко поширеного підходу з наступних причин:

  • Багато утиліт в даний час прийшли зі світу Linux.
  • Оскільки в Linux є хороша підтримка апаратного забезпечення і цю підтримку можна використовувати безкоштовно, все більше і більше компаній розуміють, що Linux є чудовою базою для створення їх власних пропрієтарних програм.

Давайте як приклад використовуємо утиліту стресового навантаження CPU, взяту з пакета UBCD.

  • MENU LABEL - вказується ім'я записи
  • TEXT HELP - це необов'язкова директива, вона задає текстову довідку, яка буде показана в меню для того, щоб надати інформацію про записи.
  • KERNEL - визначає місце розташування файлу ядра kernel в каталозі TFTPD.
  • INITRD - те ж саме, що і вище, але тільки для файлу initrd.
  • APPEND - додаткові параметри, які необхідно передати в завантажену програму.

Пару речей, на які слід звернути увагу:

Хоча це дуже простий приклад, його для початку має бути достатньо.

Метод, який використовує ядро ​​+ initrd + NFS

Цей метод є одним з тих, яким ми користувалися в статті "Як скористатися мережевий завантаженням (PXE) для Ubuntu LiveCD". Він грунтується на попередньому метедом і використовує той факт, що в деяких дистрибутивах Linux підтримується своя власна "коренева файлова система", вмонтовується з NFS. Прекрасним прикладом є керівництво по Ubuntu, але будьте впевнені, що у нас вже є ще один приклад, запланований на найближчий час. "Слідкуйте за Black Mushroom".

метод MEMDISK

MEMDISK є утилітою, яка розповсюджується з пакетом Syslinux. Призначення цієї утиліти полягає в тому, щоб ви могли емулювати "диск" (в основному, це стосується флоппі дисків), використовуючи його образ. Утиліта розміщує образ диска в пам'яті, вказуючи, що з ним потрібно працювати як з флоппі диском (т. Е. Оброблювачем переривань), причому все це обробляється програмою MEMDISK. При використанні даного методу ядром kernel є утиліта MEMDISK, а файлом initrd є файл образу дискети (.img).

Слід зазначити, що 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.