FreeDOS

FreeDOS (früher Free-DOS und PD-DOS) ist ein freies Betriebssystem für IBM PC-kompatible Rechner. Es soll eine vollständige MS-DOS-kompatible Umgebung bieten. FreeDOS kann von Disk oder einem USB-Stick gebootet werden, und läuft auch virtuell oder in einem x86-Emulator.

Anders als die meisten Versionen von MS-DOS besteht FreeDOS aus freier Software, die unter den Bedingungen der GNU General Public License lizenziert ist. Andere Pakete, die Teil des FreeDOS-Projekts sind, enthalten jedoch auch Software, die nicht unter der GNU General Public License steht und als erhaltenswert erachtet wird, wie z. B. 4DOS, das unter einer modifizierten MIT-Lizenz vertrieben wird.

Das FreeDOS-Projekt begann am 29. Juni 1994, nachdem Microsoft angekündigt hatte, MS-DOS nicht mehr zu verkaufen oder zu unterstützen. Jim Hall - damals noch Student - veröffentlichte ein Manifest, in dem er die Entwicklung von PD-DOS, einer Public-Domain-Version von DOS, vorschlug. Innerhalb weniger Wochen schlossen sich weitere Programmierer dem Projekt an. Gemeinsam wurden ein Kernel, der COMMAND.COM-Befehlszeileninterpreter und zentrale Dienstprogramme durch die Zusammenführung von selbst geschriebenem oder vorhandenem Code erstellt.

FreeDOS ISO-Image anpassen

Am einfachsten alles unter dem Benutzer root ausführen.

Um ein Custom ISO-Image auf Basis vom FreeDOS zu bauen, entweder

  1. ein fertiges QEMU Disk-Image ziehen (empfohlen, geht schneller)

  2. oder in KVM eine neue VM vorbereiten, und darauf FreeDOS von Hand aus dem FreeDOS ISO-Image installieren

Anschliessend das ISO-Image anpassen (egal, wo das Disk-Image herkommt).

Als root Disk-Image mounten:

mkdir -p /mnt/img
startsector=$(file $img.img | sed -n -e 's/.* startsector *\([0-9]*\),.*/\1/p')
offset=$(expr $startsector '*' 512)
mount -o rw,loop,offset=$offset $img.img /mnt/img/

Mit Treibern, BIOS-Tools etc. befüllen:

cp -r "Supermicro SYS-6018R-MR/bios" /mnt/img

Bootable ISO erstellen: dazu den ISOLINUX-Bootloader aus dem Original ISO verwenden, und - das ist der Trick - das enthaltene „FDBOOT.img“ mit unserer img-Datei ersetzen:

wget http://www.freedos.org/download/download/FD12CD.iso
mount -t iso9660 -o loop FD12CD.iso /mnt/iso

# neues ISO bauen
mkdir -p myiso
cp -r /mnt/iso/BOOT /mnt/iso/ISOLINUX myiso

cd myiso
\mv ../$img.img ISOLINUX/FDBOOT.img

Boot-Menü-Datei abschalten/ändern - komplett überschreiben:

ISOLINUX/ISOLINUX.CFG
default live
say Booting Custom FreeDOS 1.2 by Linuxfabrik...
label live
linux /isolinux/memdisk
initrd /isolinux/fdboot.img
append nopassany

Neues ISO-File myfreedos.iso bauen:

mkisofs -o ../myfreedos.iso -b ISOLINUX/ISOLINUX.BIN -c ISOLINUX/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V "FD-SETUP" .

Aufräumen:

umount /mnt/img
umount /mnt/iso

cd
rm -f qemu-$img.zip FD12CD.iso myiso

Das ISO-Image myfreedos.iso kann jetzt verwendet werden. Nach einem Boot-Test gegen eine lokale VM kann es beispielsweise in einen Samba-Share geworfen werden, um per IPMI damit zu booten.

FreeDOS QEMU Disk-Image ziehen

cd
img=fd12-base
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.2/qemu/qemu-$img.zip
unzip qemu-$img.zip

Wir können das Disk-Image noch von ursprünglich 100M auf 50M verkleinern:

dd bs=1M seek=50 of=$img.img </dev/null

FreeDOS Disk-Image erstellen

Vorher mit

cd
img=fd12-base
qemu-img create $img.img 50M

eine leere, 50M grosse VM-Disk erstellen (im VMM-GUI geht es nicht unter 100M).

FreeDOS „Full“-ISO-Image ziehen, VM mit 1 Core, 64 MB RAM und der Disk ausstatten, dann das Setup laufen lassen.

Ist FreeDOS installiert, kann man das img-File wie oben verwenden, um ein eigenes ISO daraus zu machen (oder man spart sich den Aufwand und nimmt wie oben das fertige qemu-Image).

Built on 2022-06-03