FreeDOS στον QEMU

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Ένας μικρός οδηγός για την εκτέλεση του FreeDOS μέσω του εξομοιωτή qemu, που μπορεί να φανεί χρήσιμο σε περίπτωση που χρειάζεται να τρέξουμε παλιές εφαρμογές για DOS, μέσα από GNU/Linux (πχ. MASM).

Σημείωση: Οι εντολές που έχουν '#' μπροστά πρέπει να εκτελούνται ως root, ενώ αυτές με '$' ως απλός χρήστης.

Εναλλακτικές

  • DOSBox Προσανατολισμένο κυρίως σε παλιά παιχνίδια που τρέχουν μόνο σε DOS, παρουσιάζει μερικά προβλήματα (πχ. δεν τρέχει σωστά τον MASM και τον Microsoft Linker).
  • DOSEMU Δεν τρέχει σε x86_64.

Προετοιμασία

Κατεβάζουμε ένα cd image του FreeDOS από το http://www.freedos.org/freedos/files/, έστω το fdfullcd.iso. Εγκαθιστούμε το qemu (κατά προτίμηση από πακέτο της διανομής μας). Δημιουργούμε το disk image του qemu, έστω 700 ΜΒ, και ξεκινάμε την εγκατάσταση:

$ qemu-img create freedos.img 700M
$ qemu -hda freedos.img -cdrom fdfullcd.iso -bood d

Εκτέλεση

Αν όλα πήγαν καλά έχουμε πλέον εγκαταστήσει το FreeDOS στο αρχείο freedos.img, και τώρα μπορούμε να το εκτελούμε με την ακόλουθη εντολή:

$ qemu -hda freedos.img

Για να μεταφέρουμε αρχεία από το σύστημα μας μπορούμε να στήσουμε δίκτυο μεταξύ του qemu-freedos και του συστήματος μας (δεν έχει δοκιμαστεί), ή να κάνουμε mount το disk image, και να γράψουμε απευθείας σ' αυτό. Έστω ότι έχουμε κάνει ένα partition στο image και εγκαταστήσαμε εκεί το FreeDOS, εκτελούμε το εξής:

# mount -t vfat -o loop,offset=32256 freedos.img /mnt

Το offset είναι το byte στο οποίο αρχίζει το partition που μας ενδιαφέρει, πιθανότατα 63 sectors * 512 bytes/sector = 32256 bytes για το πρώτο partition. Μπορούμε να το επιβεβαιώσουμε με

# sfdisk -l -uS freedos.img

Αν δεν παρουσιάστηκε πρόβλημα στην προσάρτηση, μπορούμε να μεταφέρουμε αρχεία από και προς το /mnt. Αν υπάρξει πρόβλημα, υπάρχει άλλη μια λύση, να φτιάξουμε ένα image δισκέττας, και να γίνεται μέσω αυτού η μεταφορά (αν πρόκειται για μικρά αρχεία):

$ dd if=/dev/zero of=floppy.img bs=1024 count=1400
# mkfs.vfat floppy.img

Προσοχή: Για να γίνουν 'ορατά' στο FreeDOS τυχόν αρχεία που γράφουμε, είναι απαραίτητο να τρέξουμε προηγουμένως την εντολή sync (που εκτελείται αυτόματα σε περίπτωση που κάνουμε umount).

Παράδειγμα με εγγραφή στο image δισκέττας:

# mount -o loop floopy.img /mnt
# cp somefile /mnt
$ sync
$ qemu -hda freedos.img -fda floppy.img

Εξωτερικοί Σύνδεσμοι