Создание POSE-загрузочного образа DOS размером 10 МБ или более

3942
rjt

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

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

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

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

3
I don't know the answer but you should check Hiren's Boot CD (or USB stick) and check the different images and boot options that they have there golimar 11 лет назад 0
Я не мог согласиться больше. Это просто смешно! Matt H 10 лет назад 0
@vallismortis - с чем ты искренне не согласен? Я комментировал, что это невероятно сложно развертывать обновления BIOS и т. Д., Особенно на серверах и т. Д. Но многие производители все еще предоставляют свои утилиты обновления для DOS. Скачать DOS и заставить его работать на USB-накопителе сложно. Кто управляет DOS? они должны предоставлять эти утилиты в Linux. Matt H 5 лет назад 1
@MattH Мне очень жаль - я думал, что вы критикуете вопрос. К сожалению! Комментарий удален. vallismortis 5 лет назад 0

3 ответа на вопрос

3
Pat

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

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

LABEL BIOS UPG MENU LABEL Bios Upg KERNEL memdisk APPEND iso initrd=FreDosBiosUpg.iso 
Это будет слишком сложно поддерживать. Во FreeDOS должна быть встроенная сеть, чтобы можно было сопоставлять букву сетевого диска, содержащую все образы BIOS. rjt 11 лет назад 1
Почему слишком сложно поддерживать? Вам не нужна встроенная сеть; Изображения BIOS содержатся в ISO. Просто загрузите FreeDOS с битой с меню и запустите нужное обновление BIOS. вполне выполнимо и не очень сложно поддерживать. Pat 11 лет назад 1
Восстановление ISO для поддержки примерно 50 образов BIOS - это чокнутый. Было бы намного проще иметь PXE-загрузку FreeDOS, которая через сеть достигает доли загруженных обновлений. rjt 11 лет назад 1
орехи ?? Вы можете создать ISO с помощью однострочной команды, и вы называете это гайки ?? а 10 мег звучит слишком много для простого TFTP? Вы знаете, что WDS / MDT / SCCM передает ~ 200 МБ на PE boot.wim образы без заминки. Мне кажется, вы понятия не имеете, о чем говорите, кроме того, что довольно груб с тем, кто дает вам ответ. Pat 11 лет назад 1
Пэт, я не хотел быть грубым и действительно ценю ваше время. Кажется, были некоторые недопонимания. Управление всеми изображениями уже вышло из-под контроля и стало намного хуже с SolidStateDrives, что времени даже меньше, чем когда я спрашивал об этом 5 месяцев назад. Я запускал mkisofs много раз, но у меня нет времени, чтобы запустить его, дождаться его завершения, протестировать загрузку PXE и ​​повторно запустить его, чтобы протестировать разные образы BIOS. я никогда не говорил, что 10 МБ это слишком много для tftp, но 10 МБ может быть слишком много для DOS, если с ним не обращаются правильно. rjt 11 лет назад 1
Я думаю, что проблема общения у нас здесь в том, что на данный момент вы не помните свой вопрос. То, что вы спросили, может быть легко сделано. Вы создаете ISO-загрузку FreeDos, и после загрузки вы просто вручную или с помощью какого-либо меню запускаете необходимое обновление BIOS, поддерживая этот образ так же просто, как добавление нового каталога, копирование новых файлов обновления и указание на соответствующий exe-файл и восстановление ISO. .. Вот и все, нет ничего доступнее, чем это. Pat 11 лет назад 1
1
vallismortis

Я проходил этот процесс несколько раз, и хотя он чрезвычайно прост, я постоянно забываю точные шаги, которые я использовал, поэтому я документирую это здесь для моей собственной справки, а также для других. Для справки: я использую 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 

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

https://twitter.com/mattdm/status/1026493350428454912?s=21 rjt 5 лет назад 1
0
Ahmed

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

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

Большая часть программного обеспечения для обновления BIOS работает с совместимыми с MS-DOS операционными системами, а не с Linux. vmlinuz - это Linux, поэтому он не будет работать. rjt 11 лет назад 1
Несмотря на то, что существуют ограничения, они вполне укладываются в параметры вопроса. Я задокументировал это в [моем ответе] (https://superuser.com/a/1346117/459262). vallismortis 5 лет назад 0