Bootbares Programm

03/31/2016 00:18 Critone#1
Hallo,

ich möchte ein bootbares Programm schreiben das Dateien auf einem Datenträger kopiert und umbenennt.

Leider weiß ich nicht wie genau ich das anstellen soll. Ich könnte zwar ausreichend C, C++, C# oder Java um so ein Programm für Windows zum laufen zu bringen, jedoch möchte ich ein bootbares DOS-Programm (ähnlich wie UBCD o.ä.).

Was benötige ich dazu bzw. womit muss ich mich dafür beschäftigen?

Gruß
Critone
03/31/2016 01:09 Mysthik#2
Du kommst nicht drumherum ein OS zu nutzen. Du könntest z.B. Arch oder ein anderes
light-weight linux auf einen USB-Stick installieren und das Programm nach dem anmelden starten. Distributionen für sowas gibt es wie Sand am Meer, solltest du aber nichts finden kannst du dir ja deine eigene bauen. Für einfaches verschieben und umbennen reicht ein Shell-Skript aus.
03/31/2016 01:14 Critone#3
Aber genau das möchte ich ja nicht, ein Betriebssystem starten um das Programm auszuführen.

Irgendwie muss es doch möglich sein ein Programm das man booten kann zu erstellen. (Navigation über Tastatur, keine grafische Oberfläche!)
03/31/2016 01:34 Shadow992#4
Quote:
Originally Posted by Critone View Post
Aber genau das möchte ich ja nicht, ein Betriebssystem starten um das Programm auszuführen.

Irgendwie muss es doch möglich sein ein Programm das man booten kann zu erstellen. (Navigation über Tastatur, keine grafische Oberfläche!)
Auf einem PC ohne Betriebssystem musst du dich um alles (ja genau ALLES) selbst kümmern. Es gibt nicht einmal sowas wie "printf" (zumindest nicht in dieser schönen Variante). Das heißt wenn du ein Programm bootbar machen willst musst du erst einmal ein Mini-OS selbst schreiben (bzw. dein Programm muss es beinhalten bzw. selbst eines sein).

Ein OS zu schreiben ist viel Arbeit und verdammt komplex.
Ich würde dir ganz dringend davon abraten ohne entsprechende Kenntnisse...
Schnapp dir eine Linux-Variante und bearbeite den Source-Code (Linux-Kernel ist ja Open-Source) so wie du ihn brauchst.
Du kannst mir glauben das ist deutlich einfacher als ein komplett eigenes OS zu schreiben, welches auch noch ein Programm (möglicherweise sogar noch in C#, AutoIt, Java o.ä.) "ausführen" soll.

Falls du dennoch ein eigenes kleines OS bauen willst, viel Spaß:
1. [Only registered and activated users can see links. Click Here To Register...]
2. [Only registered and activated users can see links. Click Here To Register...]

Edit:
Quote:
First of all, developing an operating system is probably one of the most challenging things you can do on a computer (next to killing the final boss in Doom on Nightmare difficulty level). Composing an operating system requires a lot of knowledge about several complex areas within computer science. You need to understand how hardware works, be able to read and write the complex Assembly language, and also a higher level language (like for instance C, C++ or Pascal). Your mind has to be able to wrap itself around abstract theory, and hold a myriad of thoughts. Feel discouraged yet? Don't fear! Because all of these things are also the things that makes OS programming fun and entertaining.

There is nothing like the feeling of accomplishment when you - finally - after hours of struggling solve the problem. And after some time you are able to look back and see all of the things you've created from scratch. Your handwritten system is able to boot, performs magic against the hardware, and gives the user a user interface and programs to play with.
There is no absolute path you have to take when creating an OS. Once you get your initial system up and running (and you do this by finding appropriate tutorials), you choose the path you want to take next. Your OS is exactly that - yours. You have ultimate control, and the sky is the limit!

Hopefully the basic fact that operating system development is a complicated and on-going process does not discourage you. The truth is, operating system development is truly unparalleled since it requires the utmost amount of patience, careful code design and returns very little to no "instant gratification" you get from the development of things like games and web based scripting.

Quelle: [Only registered and activated users can see links. Click Here To Register...]
Edit2:
Selbst UBCD basiert auf dem Linux-Kernel, zumindest wird es angedeutet:
Quote:
Not one to give up so easily, I tried burning DFT to a bootable CD using Nero, but for some reason that didn't work too. After some research on the Net, I discovered isolinux and memdisk, and successfully ran DFT using the combo. I was fired up from the success, and assembled a few DOS diagnostic programs to form the first release of the UBCD (Ultimate Boot CD).

[Only registered and activated users can see links. Click Here To Register...]
Und

Quote:
The Ultimate Boot CD would not have been possible without the syslinux/isolinux/memdisk project.

[Only registered and activated users can see links. Click Here To Register...]
03/31/2016 03:31 warfley#5
Also natürlich haben die Vorposter schon recht, ein eigenes Betriebsystem zu schreiben ist viel aufwand, aber das musst du nicht unbedingt komplett machen. Prozessqueue, Multithreading oder ähnliches brauchst du ja nicht, du benötigst ja nur selektive Funktionalität, was das ganze schon einfacher macht.

Wenn du wirklich eine OS Anwendung schreiben willst such dir einen minimalistischen kernel. Es gibt viele Projekte zu Bildungszwecken online. Auf Basis dessen könntest du dann einfach dein Programm implementieren.

Das größte Problem wird dir aber wohl das Dateisystem machen, daher würde ich dir empfehlen einfach ein Bestehendes System zu verwenden.
Quote:
Du kommst nicht drumherum ein OS zu nutzen. Du könntest z.B. Arch oder ein anderes
light-weight linux auf einen USB-Stick installieren und das Programm nach dem anmelden starten. Distributionen für sowas gibt es wie Sand am Meer, solltest du aber nichts finden kannst du dir ja deine eigene bauen. Für einfaches verschieben und umbennen reicht ein Shell-Skript aus.
Meiner Ansicht nach ist das Oberon System der ETH für so etwas perfekt geeignet. Das OS ist nicht mal 2 MB groß, bietet Grafisches Layout, läuft auf i386 und x86-64 Intel und AMD Systemen, stellt eine recht einfache OOP Sprache zur verfügung, und bietet eigentlich alles was man so benötigt

Auch wenn ich nicht weiß in wie fern Oberon Dateisysteme wie NTFS unterstützt
03/31/2016 12:56 Shadow992#6
Quote:
Originally Posted by warfley View Post
Also natürlich haben die Vorposter schon recht, ein eigenes Betriebsystem zu schreiben ist viel aufwand, aber das musst du nicht unbedingt komplett machen. Prozessqueue, Multithreading oder ähnliches brauchst du ja nicht, du benötigst ja nur selektive Funktionalität, was das ganze schon einfacher macht.

Wenn du wirklich eine OS Anwendung schreiben willst such dir einen minimalistischen kernel. Es gibt viele Projekte zu Bildungszwecken online. Auf Basis dessen könntest du dann einfach dein Programm implementieren.

Das größte Problem wird dir aber wohl das Dateisystem machen, daher würde ich dir empfehlen einfach ein Bestehendes System zu verwenden.

Meiner Ansicht nach ist das Oberon System der ETH für so etwas perfekt geeignet. Das OS ist nicht mal 2 MB groß, bietet Grafisches Layout, läuft auf i386 und x86-64 Intel und AMD Systemen, stellt eine recht einfache OOP Sprache zur verfügung, und bietet eigentlich alles was man so benötigt

Auch wenn ich nicht weiß in wie fern Oberon Dateisysteme wie NTFS unterstützt
Naja die 100MB für den Linux-Kernel wird man doch wohl übrig haben oder? Die Zeiten von Disketten und Co sind ja vorbei und obwohl selbst CDs als leicht veraltet angesehen werden, hätte man dort noch rund 600Mb frei.

Daher meine Empfehlung: Schnapp dir einen Linux-Kernel. Damit hat man alles was man will und kann jedemenge anstellen, außerdem ist das Debugging schön, man hat viele tolle Befehle (vor allem für das Datei-System), die man verwenden kann und vieles mehr (falls man doch einmal Multithreading oder so braucht).

NTFS wird ebenso unterstützt wie Fat32 oder Fat64, was will man mehr?

Edit:
Falls es dir wirklich auf jedes Byte ankommt, ist warfleys Lösung natürlich zu bevorzugen. Dann wirst du aber sicher noch etwas an Eigenaufwand reinstecken müssen und zwar deutlich mehr als bei einem Linux-Kernel.
03/31/2016 16:54 warfley#7
Quote:
Originally Posted by Shadow992 View Post
Naja die 100MB für den Linux-Kernel wird man doch wohl übrig haben oder? Die Zeiten von Disketten und Co sind ja vorbei und obwohl selbst CDs als leicht veraltet angesehen werden, hätte man dort noch rund 600Mb frei.

Daher meine Empfehlung: Schnapp dir einen Linux-Kernel. Damit hat man alles was man will und kann jedemenge anstellen, außerdem ist das Debugging schön, man hat viele tolle Befehle (vor allem für das Datei-System), die man verwenden kann und vieles mehr (falls man doch einmal Multithreading oder so braucht).

NTFS wird ebenso unterstützt wie Fat32 oder Fat64, was will man mehr?

Edit:
Falls es dir wirklich auf jedes Byte ankommt, ist warfleys Lösung natürlich zu bevorzugen. Dann wirst du aber sicher noch etwas an Eigenaufwand reinstecken müssen und zwar deutlich mehr als bei einem Linux-Kernel.
100 MB du bist gut, der Linux kernel ist in Minimalistischer Form auch nur 30 MB Groß :D

Ich denke sogar das Oberon nicht unbedingt mehr Aufwand ist, da Oberon auch diverse Dateisysteme unterstützt (Unter anderem auch Windows Fat32 und es gibt aktuellere Projekte die auch NTFS unterstützten), und das Betriebsystem selbst deutlich einfacher anzupassen ist, da der Quellcode des Systems nur ein paar hundert Zeilen lang ist.

Außerdem kann man ein grafisches Interface sehr einfach verwenden.

Ich denke ob man jetzt Linux (mit X11 und GTK für das GUI) oder Oberon nutzt gibt sich nicht so sehr viel. Ich persönlich finde vor allem Oberon als Sprache relativ cool, und es wurde eben auch für genau so etwas entwickelt (also Programme auf einem Minimalistischen Betriebsystem zu schreiben. Oberon ist wie die JVM mit Java, nur das es auch Nativ auf einem echten PC läuft)
03/31/2016 17:31 Shadow992#8
Quote:
Originally Posted by warfley View Post
100 MB du bist gut, der Linux kernel ist in Minimalistischer Form auch nur 30 MB Groß :D

Ich denke sogar das Oberon nicht unbedingt mehr Aufwand ist, da Oberon auch diverse Dateisysteme unterstützt (Unter anderem auch Windows Fat32 und es gibt aktuellere Projekte die auch NTFS unterstützten), und das Betriebsystem selbst deutlich einfacher anzupassen ist, da der Quellcode des Systems nur ein paar hundert Zeilen lang ist.

Außerdem kann man ein grafisches Interface sehr einfach verwenden.

Ich denke ob man jetzt Linux (mit X11 und GTK für das GUI) oder Oberon nutzt gibt sich nicht so sehr viel. Ich persönlich finde vor allem Oberon als Sprache relativ cool, und es wurde eben auch für genau so etwas entwickelt (also Programme auf einem Minimalistischen Betriebsystem zu schreiben. Oberon ist wie die JVM mit Java, nur das es auch Nativ auf einem echten PC läuft)
Hmm vielleicht sollte ich einmal anfangen die Paketdienste zu hinterfragen, wenn mir Ubuntu wieder versucht "100MB Kernel-Update" aufzudrehen. :D

Naja bleibt Geschmackssache, ich bin halt Linux liebhaber (hat man gar nicht merkt, glaub ich :D).
Prinzipiell hast du aber Recht, es ist scheiß egal welchen Kernel man nimmt, solange der Kernel die entsprechenden "Basics" mitbringt.

04/09/2016 17:58 NullEisen#9
Quote:
Originally Posted by Critone View Post
Hallo,

ich möchte ein bootbares Programm schreiben das Dateien auf einem Datenträger kopiert und umbenennt.

Leider weiß ich nicht wie genau ich das anstellen soll. Ich könnte zwar ausreichend C, C++, C# oder Java um so ein Programm für Windows zum laufen zu bringen, jedoch möchte ich ein bootbares DOS-Programm (ähnlich wie UBCD o.ä.).

Was benötige ich dazu bzw. womit muss ich mich dafür beschäftigen?

Gruß
Critone
Das ist eines von diesen "wenn du fragen musst wie du anfangen sollst, dann ist es zu kompliziert für dich" Themen.
Glaub mir, du willst definitiv nicht deinen eigenen Bootloader + Kernel + Dateisystem + CLI schreiben. Da hättest du vermutlich monatelang was zu tun.
Wenn du einfach nur Dateien kopieren willst ist [Only registered and activated users can see links. Click Here To Register...] perfekt.