Створення PXE-завантажувального зображення розміром 10 МБ або більше


4

Я хотів би зробити "масивний" образ дискети DOS, скажімо 10 МБ або більше, що містить всі оновлення мікропрограми, які мені потрібні для будь-якої системи, жорсткого диска або BIOS.

Мені не потрібен образ DOS, щоб мати можливість працювати в мережі, оскільки все буде на зображенні з завантаженим PXE, але мережа буде добре. Оскільки Zip диски були прикріплені до контролера дискети і мали понад 100 Мб, це має бути можливим.

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

Надто погані виробники не надають жодного завантажувального Linux ISO, що містить всі оновлення прошивки, які було б легко завантажувати через локальну мережу та мати мережу. HP-сервери роблять це, і це приголомшливо.


Я не знаю відповіді, але ви повинні перевірити завантажувальний компакт-диск Hiren (або флешку) і перевірити різні зображення та параметри завантаження
golimar

Я більше не можу погодитися. Це просто смішно!
Matt H

1
@ vallismortis - про що ви серйозно не погоджуєтеся? Я коментував, що це смішно важко розгортати біо-оновлення і так далі, особливо на серверах і т.д. Але багато виробників досі надають свої утиліти оновлення для DOS. Завантаження DOS і отримання його для роботи на флешці важко. Хто керує DOS? вони повинні надавати ці утиліти на Linux.
Matt H

@MattH Мені дуже шкода - я думав, що ви критикуєте це питання. На жаль! Коментар видалено.
vallismortis

Відповіді:


2

Я пройшов через цей процес кілька разів, і хоча це надзвичайно просто, я постійно забуваю точні кроки, які я використовував, тому я документую його тут для моєї власної посилання, а також інших. Для довідки, я використовую Slackware Linux 14.2+ як сервер PXE, і завантаження до декількох різних моделей Dell Optiplex для оновлення BIOS. Як було зазначено в інших відповідях, ви можете створити завантажувальні образи ISO для великих файлових систем. Однак, оскільки ви спеціально запитували про завантажувальні дискети, ось ті кроки, які я використовую для цього.

По-перше, деяка довідкова інформація щодо MEMDISK і FAT12, щоб поставити ваше питання в контекст. Існує багато суперечливої ​​та неоднозначної інформації, тому ми сподіваємося, що це дещо очистить речі.

A нитка syslinux з 2003 року вказує, що MEMDISK підтримує максимальний розмір зображення 4 Гб, залежно від апаратного забезпечення (тобто, обмеженого пам'яттю, але, можливо, додаткових апаратних міркувань). An раніше нитка з 2002 року також вказує окреме обмеження PXELINUX (простір ядра Linux обмежений ~ 1 Гб, але ця інформація більше 15 років).

Від Документація MEMDISK , існують певні геометрії дискети, які memdisk спробує вгадати:

Зображення дискети

Якщо зображення диска менше 4,194,304 байтів (4096 Кбайт, 4 Мб), то воно є   передбачається, що це дискети, а MEMDISK спробує вгадати її   геометрії на основі розміру файлу. MEMDISK розпізнає всі   стандартні розміри дискети, а також загальні розширені формати:

  163,840 bytes  (160K) c=40 h=1 s=8    5.25" SSSD
  184,320 bytes  (180K) c=40 h=1 s=9    5.25" SSSD
  327,680 bytes  (320K) c=40 h=2 s=8    5.25" DSDD
  368,640 bytes  (360K) c=40 h=2 s=9    5.25" DSDD
  655,360 bytes  (640K) c=80 h=2 s=8    3.5"  DSDD
  737,280 bytes  (720K) c=80 h=2 s=9    3.5"  DSDD
1,222,800 bytes (1200K) c=80 h=2 s=15   5.25" DSHD
1,474,560 bytes (1440K) c=80 h=2 s=18   3.5"  DSHD
1,638,400 bytes (1600K) c=80 h=2 s=20   3.5"  DSHD (extended)
1,720,320 bytes (1680K) c=80 h=2 s=21   3.5"  DSHD (extended)
1,763,328 bytes (1722K) c=82 h=2 s=21   3.5"  DSHD (extended)
1,784,832 bytes (1743K) c=83 h=2 s=21   3.5"  DSHD (extended)
1,802,240 bytes (1760K) c=80 h=2 s=22   3.5"  DSHD (extended)
1,884,160 bytes (1840K) c=80 h=2 s=23   3.5"  DSHD (extended)
1,966,080 bytes (1920K) c=80 h=2 s=24   3.5"  DSHD (extended)
2,949,120 bytes (2880K) c=80 h=2 s=36   3.5"  DSED
3,194,880 bytes (3120K) c=80 h=2 s=39   3.5"  DSED (extended)
3,276,800 bytes (3200K) c=80 h=2 s=40   3.5"  DSED (extended)
3,604,480 bytes (3520K) c=80 h=2 s=44   3.5"  DSED (extended)
3,932,160 bytes (3840K) c=80 h=2 s=48   3.5"  DSED (extended)

Невеликий скрипт perl входить до каталогу MEMDISK, який може   визначити геометрію, яку MEMDISK буде вибирати для інших розмірів; в   Загалом, MEMDISK правильно визначить більшість фізичних розширених форматів   використовується, з 80 циліндрами або трохи вище.

 LABEL floppy_image
  LINUX memdisk
  INITRD floppy.img

Якщо ваше зображення перевищує 4 Мб і це зображення з дискети, ви можете   змусити MEMDISK обробляти його як дискети:

 LABEL floppy_image
  LINUX memdisk
  INITRD floppy.img
  APPEND floppy

На практиці мені не пощастило APPEND floppy параметр; Я отримую MEMDISK: No ramdisk image specified! помилка, коли я її використовую.

Традиційно для використання дискети використовуються Формат FAT12 , які мають ліміт кластерів 16 МБ і 8 КБ. Видається, що є розширення FAT12 що дозволяє 32MB або навіть 256MB (64k кластери), але я не впевнений у специфіці.

Якщо ми націлюємо максимальний розмір FAT12 ( 16,736,256 байт ) для завантажувального зображення "дискети" можна виконати наступне:

dd if=/dev/zero of=FAT12_16MB.img bs=1 count=16736256

Проте ця команда може зайняти хвилину. Використовуючи більший розмір блоку, ми можемо виконати те ж саме менш ніж за секунду:

dd if=/dev/zero of=FAT12_16MB.img bs=8192 count=2043

Тепер, коли у нас є "чистий диск", нам потрібно відформатувати його як FAT12 (якщо ви зацікавлені в доступних параметрах для цієї команди, запустіть man mkfs.fat щоб переглянути сторінку користувача:)

mkfs.fat -D 0x00 -F 12 -n FREEDOSBIOS FAT12_16MB.img

Тепер у нас є зображення формату FAT12 "дискети". Ми можемо створити папку та встановити її:

mkdir floppy
mount -t msdos -o loop FAT12_16MB.img floppy

А тепер ми можемо почати копіювати файли до нього. Я завантажив FreeDOS OEM завантажувальний диск від fdos.org і скопіював його на моє велике зображення:

wget http://www.fdos.org/bootdisks/autogen/FDOEM.288.imz
unzip FDOEM.288.imz

Створіть нову точку монтування для образу FreeDOS і змонтуйте його:

mkdir freedos12
mount -t msdos -o loop FDOEM.288 freedos12

Скопіюйте операційну систему FreeDOS на велику дискету:

cp -r freedos12/* floppy

Потім відключіть розділ FreeDOS і видаліть точку монтування, якщо більше не потрібно:

umount freedos12
rmdir freedos12

Тепер у нас є 16 Мб дискети ( FAT12_16MB.img ), що містить операційну систему FreeDOS. Проте, якщо ви намагаєтеся завантажитися через PXE, ви отримаєте таку помилку:

Loading boot sector... booting...
This is not a bootable disk. Please insert a bootable floppy and press any key to try again...

На цьому зображенні нам потрібно створити завантажувальний сектор. Важливо: Оскільки ми будемо писати безпосередньо до файлу зображення, переконайтеся, що ваше гнучке зображення не змонтоване до наступного кроку:

umount floppy

Скопіюйте завантажувальний сектор із образу FreeDOS ( FDOEM.288 на велике зображення "FAT12_16MB.img":

dd if=FDOEM.288 of=FAT12_16MB.img bs=1 count=446 seek=62 skip=62 conv=notrunc

Тепер у вас є завантажувальний диск FAT12 з файловою системою FAT12 PXE з FreeDOS. На цьому етапі можна повторно встановити зображення та скопіювати будь-які потрібні додаткові файли.

Точна конфігурація PXE, яку я використовую для завантаження цього зображення:

label bios
menu label FreeDOS
kernel memdisk
append initrd=FAT12_16MB.img

Є деякі інші корисні покрокові ресурси там, де я консультувався під час створення цієї відповіді.



3

Це нелегко зробити, але це неможливо;

Ви можете створити завантажувальний ISO FreeDOS, що містить всі оновлення прошивки Потім PXE завантажується в ISO з PXELINUX і memdisk

LABEL BIOS UPG
 MENU LABEL Bios Upg
 KERNEL memdisk
 APPEND iso initrd=FreDosBiosUpg.iso

1
Це буде занадто складно підтримувати. Необхідність мати FreeDOS мають мережеві вбудовані, щоб вона містила мережеву букву диска, що містить всі зображення BIOS.
rjt

1
Чому теж важко підтримувати? Вам не потрібна вбудована мережа; bios образи містяться в ISO. Просто завантажте FreeDOS деякою битою з меню і стріляйте правильне оновлення BIOS; ідеально виконується і не дуже важко підтримувати.
Pat

1
Відновлення ISO для підтримки 50 або близько того BIOS зображень є гайки. Наявність одного завантаження PXE з FreeDOS, який досягає по всій мережі на частку завантажених оновлень, буде набагато простіше.
rjt

1
горіхи ?? ви можете створити ISO з однією лінією команди, і ви називаєте, що гайки ?? і 10 мегабайт звучить занадто багато для звичайного TFTP? Ви знаєте, що WDS / MDT / SCCM передає ~ 200 МБ на PE boot.wim зображення без заминки. Його здається мені ви не маєте ідеї що ви розмовляєте про крім будучи досить брутальним до того, що дає вам відповідь.
Pat

1
Пат, я не мав на увазі бути грубим і дуже ціную ваш час. Здається, вони мали деяку непорозуміння. Управління всіма зображеннями вже поза рукою і стало набагато гірше з SolidStateDrives, що є ще менше часу, ніж коли я запитав це 5 місяців тому. Я багато разів запускав mkisofs, але не маю часу запускати вогонь, чекати його закінчення, перевірити завантаження PXE і повторити його для тестування різних зображень BIOS. Я ніколи не казав, 10 Мб занадто багато для tftp, але 10 Мб може бути занадто багато для DOS, якщо він не обробляється тільки право.
rjt

0

Ядро memdisk не зможе завантажувати великі зображення,

вам потрібно спробувати vmlinuz ядро ​​для завантаження великих зображень, ви можете знайти його в Linux дзеркала онлайн .. Я використовував один з centos для завантаження деяких великих зображень.


1
Більшість програмного забезпечення оновлення BIOS працює з операційними системами, сумісними з MS-DOS, а не з Linux. vmlinuz - це Linux, тому він не працюватиме.
rjt

Хоча існують обмеження, вони добре потрапляють у параметри питання. Я документував це в моя відповідь .
vallismortis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.