4

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

Мне не нужно, чтобы DOS-образ был способен работать в сети, поскольку все будет в PXE-загруженном образе, но работа в сети была бы хорошей. Поскольку Zip-диски были подключены к контроллеру гибких дисков и занимали более 100 МБ, это должно быть возможно.

Я давно пытался это сделать и потратил слишком много времени только на то, чтобы он не загрузился. Так что, если у кого-то есть надежные инструкции о том, как создать такого кошмарного зверя и отредактировать его, пожалуйста, дайте мне знать. Изображение, которое можно использовать для PXE и скопировать на USB-накопитель, будет плюсом.

Жаль, что производители не предоставляют единственного загрузочного ISO-образа Linux, содержащего все свои обновления прошивки, который можно было бы легко загружать через локальную сеть и иметь сеть. Серверы HP делают это, и это потрясающе.

3 ответа3

3

Это не может быть легко сделано, но это не невозможно;

Вы можете создать загрузочный ISO-образ FreeDOS, содержащий все ваши обновления прошивки. Затем PXE загрузит этот ISO-образ с помощью PXELINUX и memdisk.

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

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

Во-первых, некоторая справочная информация о MEMDISK и FAT12, чтобы поставить ваш вопрос в контекст. Существует много противоречивой и неоднозначной информации, так что, надеюсь, это немного прояснит ситуацию.

Поток syslinux 2003 года указывает, что MEMDISK поддерживает максимальный размер изображения 4 ГБ, в зависимости от аппаратного обеспечения (т. Е. Ограниченного объема памяти, но, возможно, дополнительных аппаратных соображений). Более ранняя ветка 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, которые позволяют 32 МБ или даже 256 МБ (кластеры 64 КБ), но я не уверен в специфике.

Если мы нацелены на максимальный размер 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

Теперь у вас есть PXE-загрузочный 16-мегабайтный диск FAT12 с FreeDOS. На этом этапе вы можете заново смонтировать образ и скопировать любые дополнительные файлы, которые вам нужны.

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

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

Существуют и другие полезные пошаговые ресурсы, с которыми я консультировался при создании этого ответа.

0

ядро memdisk не сможет загружать большие изображения,

вам нужно попробовать vmlinuz kernal, чтобы загрузить большие изображения, вы можете найти его в linux зеркалах онлайн .. Я использовал один из Centos, чтобы загрузить несколько больших изображений.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .