Ein PXE-bootfähiges DOS-Image mit 10 MB oder mehr erstellen

4084
rjt

Ich möchte ein "massives" DOS-Disketten-Image erstellen, z. B. 10 MB oder mehr, das alle Firmware-Updates enthält, die ich für ein System, eine Festplatte oder ein BIOS benötige.

Ich brauche das DOS-Image nicht, um netzwerkfähig zu sein, da alles auf dem mit PXE gestarteten Image sein wird, aber die Vernetzung wäre schön. Da Zip-Disketten an den Diskettencontroller angeschlossen waren und über 100 MB reichten, sollte dies möglich sein.

Ich habe vor langer Zeit versucht, dies zu tun und habe zu viel Zeit damit verbracht, nur um es nicht booten zu lassen. Wenn also jemand verlässliche Anweisungen hat, wie man solch ein Albtraumwesen erstellt und bearbeitet, lass es mich wissen. Ein Bild, das für PXE verwendet und auf einen USB-Stick kopiert werden kann, wäre ein Plus.

Unglückliche Hersteller bieten kein einziges bootfähiges Linux-ISO an, das alle Firmware-Aktualisierungen enthält, die einfach über das LAN gebootet werden können und über Netzwerke verfügen. HP Server tun das und es ist großartig.

3
Ich kenne die Antwort nicht, aber Sie sollten Hirens Boot-CD (oder USB-Stick) und die verschiedenen Images und Startoptionen überprüfen, die dort vorhanden sind golimar vor 11 Jahren 0
Ich konnte nicht mehr zustimmen. Es ist einfach lächerlich! Matt H vor 10 Jahren 0
@Vallismortis - worauf sind Sie völlig anderer Meinung? Ich habe kommentiert, dass es extrem schwierig ist, Bios-Updates usw. auf Servern usw. bereitzustellen. Viele Hersteller bieten jedoch weiterhin ihre Update-Dienstprogramme für DOS an. Das Herunterladen von DOS und die Verwendung auf einem USB-Stick ist schwer. Wer betreibt DOS? Sie sollten diese Dienstprogramme unter Linux bereitstellen. Matt H vor 5 Jahren 1
@MattH Es tut mir so leid - ich dachte, du würdest die Frage kritisieren. Hoppla! Kommentar gelöscht. vallismortis vor 5 Jahren 0

3 Antworten auf die Frage

3
Pat

Dies kann nicht leicht gemacht werden, ist aber nicht unmöglich.

Sie können ein bootfähiges FreeDOS-ISO erstellen, das alle Firmware-Aktualisierungen enthält. Dann bootet PXE dieses ISO mit PXELINUX und memdisk

LABEL BIOS UPG MENU LABEL Bios Upg KERNEL memdisk APPEND iso initrd=FreDosBiosUpg.iso 
Das wäre zu schwierig zu warten. FreeDOS muss über ein integriertes Netzwerk verfügen, damit ein Laufwerksbuchstabe im Netzwerk angezeigt werden kann, der alle BIOS-Images enthält. rjt vor 11 Jahren 1
Warum zu schwierig zu warten? Sie brauchen kein integriertes Netzwerk. Die Bios-Bilder sind in der ISO enthalten. Starten Sie einfach FreeDOS mit einem Menü und starten Sie das richtige BIOS-Update. perfekt machbar und nicht wirklich schwer zu warten. Pat vor 11 Jahren 1
Es ist verrückt, ein ISO neu aufzubauen, um etwa 50 BIOS-Images zu erhalten. Ein PXE-Boot von FreeDOS, das über das Netzwerk zu einer Freigabe heruntergeladener Updates führt, wäre viel einfacher. rjt vor 11 Jahren 1
Nüsse? Sie können ein ISO mit einem einzeiligen Befehl erstellen, und Sie nennen das Nüsse? und 10 MB klingt zu viel für einfaches TFTP? Sie wissen, was WDS / MDT / SCCM auf PE boot.wim-Images ~ 200MB überträgt, ohne dass ein Problem auftritt. Mir scheint, Sie haben keine Ahnung, wovon Sie sprechen, außer dass Sie ziemlich unhöflich zu dem sind, der Ihnen eine Antwort gibt. Pat vor 11 Jahren 1
Pat, ich wollte nicht unhöflich sein und deine Zeit wirklich zu schätzen wissen. Es gab scheinbar Missverständnisse. Die Verwaltung aller Bilder ist bereits aus dem Ruder gelaufen und mit SolidStateDrives ist es viel schlechter geworden, dass noch weniger Zeit zur Verfügung steht als vor fünf Monaten. Ich habe mkisofs viele Male ausgeführt, habe aber nicht die Zeit, das Feuer zu starten, zu warten, bis der Vorgang abgeschlossen ist, den PXE-Startvorgang testen und erneut ausführen, um verschiedene BIOS-Images zu testen. Ich habe nie gesagt, dass 10MB zu viel für TFTP sind, aber 10MB können für DOS zu viel sein, wenn es nicht richtig gehandhabt wird. rjt vor 11 Jahren 1
Ich denke, das Kommunikationsproblem, das wir hier haben, ist, dass Sie sich an diese Frage nicht erinnern können. Was Sie gefragt haben, kann leicht gemacht werden. Sie machen ein ISO-Boot-FreeDos und nach dem Booten müssen Sie entweder manuell oder über ein Menü das erforderliche BIOS-Update starten. Die Wartung dieses Abbilds ist so einfach, dass Sie ein neues Verzeichnis hinzufügen, die neuen Update-Dateien kopieren und auf das entsprechende Exe-Verzeichnis zeigen und das ISO neu erstellen. Es ist nichts leichter als das. Pat vor 11 Jahren 1
1
vallismortis

Ich habe diesen Prozess ein paar Mal durchgemacht, und obwohl er extrem einfach ist, vergesse ich immer wieder die genauen Schritte, die ich verwendet habe, und dokumentiere ihn hier für meine eigene Referenz sowie für andere. Für das Protokoll verwende ich Slackware Linux 14.2+ als PXE-Server und starte für mehrere BIOS-Updates von verschiedenen Dell Optiplex-Modellen. Wie in anderen Antworten erwähnt, können Sie startfähige ISO-Images für große Dateisysteme erstellen. Da Sie jedoch ausdrücklich nach startfähigen Disketten-Images gefragt haben, sind hier die Schritte, die ich dafür verwende.

Zunächst einige Hintergrundinformationen zu MEMDISK und FAT12, um Ihre Frage in einen Kontext zu stellen. Es gibt viele widersprüchliche und vieldeutige Informationen, und hoffentlich klärt das ein wenig.

Ein syslinux-Thread aus dem Jahr 2003 gibt an, dass MEMDISK eine maximale Bildgröße von 4 GB unterstützt, abhängig von der Hardware (dh speicherbeschränkt, aber möglicherweise zusätzliche hardwarespezifische Aspekte). Ein früherer Thread aus dem Jahr 2002 weist auch auf eine separate Einschränkung von PXELINUX hin (Linux-Kernel-Speicher ist auf ~ 1 GB beschränkt, diese Informationen sind jedoch über 15 Jahre alt).

In der MEMDISK-Dokumentation gibt es einige spezielle Floppy-Disk-Geometrien, die Memdisk zu erraten versucht:

Diskettenbilder

Wenn das Festplatten-Image weniger als 4.194.304 Byte (4096 KB, 4 MiB) enthält, wird davon ausgegangen, dass es sich um ein Disketten-Image handelt, und MEMDISK versucht, seine Geometrie anhand der Größe der Datei zu ermitteln. MEMDISK erkennt alle gängigen Diskettengrößen sowie gängige erweiterte Formate:

 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) 

Das MEMDISK-Verzeichnis enthält ein kleines Perl-Skript, das die Geometrie bestimmen kann, die MEMDISK für andere Größen auswählen würde. Im Allgemeinen erkennt MEMDISK die meisten verwendeten physischen Erweiterungsformate mit 80 Zylindern oder etwas höher.

 LABEL floppy_image LINUX memdisk INITRD floppy.img 

Wenn Ihr Bild größer als 4 MiB ist und es sich um ein Diskettenbild handelt, können Sie MEMDISK zwingen, es als Diskettenbild zu behandeln:

 LABEL floppy_image LINUX memdisk INITRD floppy.img APPEND floppy 

In der Praxis hatte ich mit dem APPEND floppyParameter kein Glück ; Ich erhalte eine MEMDISK: No ramdisk image specified!Fehlermeldung, wenn ich es benutze.

Floppy-Images verwenden üblicherweise das FAT12-Format, das eine Beschränkung auf 16 MB und 8 KB-Cluster hat. Es scheint Erweiterungen für FAT12 zu geben, die 32 MB oder sogar 256 MB (64 KB Cluster) erlauben, aber ich bin mir nicht sicher, was genau ist.

Wenn wir die maximale FAT12-Größe ( 16.736.256 Bytes ) für ein startfähiges 'Disketten-Image festlegen, können wir Folgendes tun:

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

Dieser Befehl kann jedoch eine Minute dauern. Mit einer höheren Blockgröße können wir dasselbe in weniger als einer Sekunde erreichen:

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

Nun, da wir eine "leere Diskette" haben, müssen wir sie als FAT12 formatieren (wenn Sie an den verfügbaren Parametern für diesen Befehl interessiert sind, führen Sie sie aus man mkfs.fat, um die Manpage anzuzeigen):

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

Jetzt haben wir ein formatiertes FAT12-Image "Diskette". Wir können einen Ordner erstellen und mounten:

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

Jetzt können wir Dateien kopieren. Ich habe die FreeDOS OEM- Bootdiskette von fdos.org heruntergeladen und in mein größeres Image kopiert:

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

Erstellen Sie einen neuen Einhängepunkt für das FreeDOS-Image und hängen Sie es an:

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

Kopieren Sie das FreeDOS-Betriebssystem auf Ihre größere Diskette:

cp -r freedos12/* floppy 

Hängen Sie dann die FreeDOS-Partition aus und löschen Sie den Einhängepunkt, wenn er nicht mehr benötigt wird:

umount freedos12 rmdir freedos12 

Jetzt haben wir ein 16 MB-Disketten-Image ( FAT12_16MB.img), das das FreeDOS-Betriebssystem enthält. Wenn Sie jedoch versuchen, dies über PXE zu starten, wird die folgende Fehlermeldung angezeigt:

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

Wir müssen den Bootsektor für dieses Image erstellen. Wichtig: Da wir direkt in die Image-Datei schreiben, stellen Sie sicher, dass Ihr Disketten-Image vor dem nächsten Schritt nicht eingehängt ist:

umount floppy 

Kopieren Sie den Bootsektor aus dem FreeDOS-Image ( FDOEM.288in das größere Image "FAT12_16MB.img"):

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

Jetzt haben Sie ein PXE-bootfähiges 16 MB FAT12-Disketten-Image mit FreeDOS. An diesem Punkt können Sie das Image erneut einhängen und alle zusätzlichen Dateien kopieren, die Sie benötigen.

Die genaue PXE-Konfiguration, die ich zum Starten dieses Image verwende, lautet:

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

Es gibt einige hilfreiche Schritt-für-Schritt-Ressourcen, die ich beim Erstellen dieser Antwort konsultiert habe.

https://twitter.com/mattdm/status/1026493350428454912?s=21 rjt vor 5 Jahren 1
0
Ahmed

memdisk kernel won't be able to load bigger images,

you need to try vmlinuz kernal to load the bigger images, you can find it in the linux mirrors online.. I used one from centos to load some bigger images.

Die meisten BIOS-Aktualisierungssoftware funktioniert mit MS-DOS-kompatiblen Betriebssystemen, nicht mit Linux. vmlinuz ist Linux, also würde es nicht funktionieren. rjt vor 11 Jahren 1
Obwohl es Grenzen gibt, fallen sie durchaus in den Rahmen der Fragestellung. Ich habe dies in [meiner Antwort] dokumentiert (https://superuser.com/a/1346117/459262). vallismortis vor 5 Jahren 0