Ich interessiere mich sehr für Betriebssysteme und besuche einen entsprechenden Kurs. Als Projekt wurde mir die Implementierung eines einfachen Betriebssystems zugewiesen.
Sie lieferten mir die einfache Betriebssystemimplementierung vonJOSH.
Ich kann allen gegebenen Anweisungen folgen und den Bootsektor und den rudimentären Kernelteil mit NASM-Assembler kompilieren. Außerdem habe ich meinen eigenen Code hinzugefügt, um zusätzliche Informationen der Maschine anzuzeigen.
Um zusammenzufassen,JOSHist ein Betriebssystem, das für den Start von einem Diskettenlaufwerk entwickelt wurde. Ich habe jedoch keine Geräte, die mit Diskettenlaufwerken funktionieren.
Die JOSH-Entwickler haben dd if=boot.bin bs=512 count=1 of=/dev/fd0
dafür gesorgt, dass die Datei boot.bin auf der Diskette gespeichert wird.
Ich muss wissen, ob auf einem USB-Laufwerk ein virtueller Diskettenteil erstellt werden kann und ob ich dieses Betriebssystem davon booten kann.
Da ich Ubuntu verwende, wäre ich sehr dankbar, wenn mir jemand erklären könnte, wie ich diese virtuelle Diskette auf meinem USB-Stick erstelle und wie ich die Dateien boot.bin und kernel.bin in dieses virtuelle Laufwerk lege.
So wie ich es verstanden habe, sollten wir für diese boot.bin-Datei eine Art 512-Byte-Sektor haben.
Ich wäre sehr dankbar, wenn mir jemand dabei helfen könnte.
Antwort1
Sie sollten sich Folgendes ansehen:PXE-Booten.
Damit will ich nicht sagen, dass Sie unbedingt PXE statt einer Diskette verwenden sollten (obwohl Sie das vielleicht tun werden).
Die PXE-Boot-Technologie verwendet jedoch eine virtuelle Diskette, um das Laden Ihres endgültigen Betriebssystems zu starten. Und es gibt verschiedene zugehörige Tools, um mit virtuellen Disketten zu arbeiten (sie zu füllen, sie als Datei zu speichern) sowie die virtuelle Diskette über das Kabel zu senden, damit der Zielcomputer davon booten kann. Sie werden also mit hoher Wahrscheinlichkeit in der PXE-Welt finden, was Sie brauchen.
Früher habe ich hierfür Tftpd32 verwendet. Ich wollte einen Link dazu posten, aber Chrome warnt jetzt vor Malware auf dieser Site, also seien Sie vorsichtig. Ich glaube, Windows enthält jetzt auch solche Dinge (unter WDS in Windows Server).
Antwort2
Egal, habe die Lösung gefunden.
JOSHist ein unterbrechungsgesteuertes Single-Tasking-Betriebssystem. Wir erhalten von der Site die 512 Byte große Boot-Datei mit einer gültigen Boot-Signatur und eine einfache Kernel-Datei, die eigentlich das Betriebssystem ist.
Da dieser Bootsektor nur das Dateisystem FAT12 unterstützt, müssen wir für die Ausführung ein Diskettenlaufwerk verwenden.
Ich habe eine virtuelle Diskette erstellt, die Startdatei in den MBR dieser Diskette gebrannt, die Kerneldatei dorthin kopiert und sie dann in einer virtuellen Maschine ausgeführt.
Wie ich ausHierMit den folgenden Befehlen können wir ein Disketten-Image erstellen.
~$ cd /media // open the terminal in your home directory and head to /media
/media$ sudo mkdir floppy // create a directory in media
// go back to home directory again
~$ mkfs.msdos -C myfloppy.img 1440 // create a floppy disk image of size 1.44 MB
~ $ sudo mount -o loop myfloppy.img /media/floppy/ // mount the image with the floppy directory.
// now open another terminal where your boot.bin file and kernel.bin file is and enter the following
/os$ lsblk // get the name of the mounted floppy image, you can identify it from the list with a disk that has 1.5 MB size
/os$ sudo dd if=./boot.bin of=/dev/loop0 // now burn the boot file to the MBR
/os$ sudo cp kernel.bin /media/floppy/ // copy the kernel file to the disk image
Anschließend können Sie mithilfe einer virtuellen Maschine von diesem Disketten-Image booten.
Antwort3
Ich habe einen alten USB-Stick, der über eine Diskettenemulation verfügt: Man kann ein Diskettenimage darauf schreiben und der Stick wird als USB-Diskettenlaufwerk erkannt.