online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon TByte vom 19.10.2020, 14:14 Options

Live-CD programmieren

Hallo
NEIN, das ist keine verrückte Idee.
also, ich hab ja schon ein par tuts zu OS-programmierung gefunden (Hallo-Welt-Kernel und so). Und jetzt meine Fragen:
1. Wenn ich eine Live-CD machen will, muss da immernoch ein Kernel mit Speicherverwaltung rein?
2. Wie mache ich das, dass das auch als Boot-bare CD endet?
3. Und zum Schluss, wie geht das mit den GUIs? Also wenn ich QT oder TK nutzen will, versteht sich.
Vielen dank schon jetzt
mfg
TByte


Antwort schreiben

Antwort 1 von Jaja vom 19.10.2020, 17:56 Options

Zitat:
1. Wenn ich eine Live-CD machen will, muss da immernoch ein Kernel mit Speicherverwaltung rein?


speicherverwaltung ist nur notwendig, wenn du mehr als einen prozess verwalten willst.
gibt dein "beriebssystem" nur hello world aus oder realisiert irgendeine andere funktion brauchst du das nicht.
allerdings musst du wenn du mehr als die ersten 1MiB (bzw. 640kiB)des hauptspeichers nutzen willst in den protected mode wechseln, was schon eine art der speicherverwaltung impliziert.
du kannst aber bei einfachen sachen im real mode bleiben, denn du weißt ja: "640 kiB of memory will be enough for anybody..."
ein hello world reizt ein MiB speicher auch wirklich nicht aus ;)

Zitat:
2. Wie mache ich das, dass das auch als Boot-bare CD endet?


du musst die "einsprungadresse" deines programmes im bootloader ansprechen bzw. einfach den ersten (assembler) befehl an speicheradresse 0x0000 auf der cd stehen haben und im bios von cd booten angeben. dieser erste befehl muss ein far jump hinter die ersten 512byte des mediums sein. wenn du allerdings dein programm unter 440byte halten kannst, könnte es auch an ort und stelle beginnen und enden, da danach die partitionstabelle und andere sachen erwartet werden..
kannst das ja mit nem usb stick testen..

Zitat:
3. Und zum Schluss, wie geht das mit den GUIs? Also wenn ich QT oder TK nutzen will, versteht sich.


öhm. ohne vollständigen posix kernel und ohne speicherverwaltung? vergiss es.. wenn du hello wold auf deinen bildschirm gezaubert bekommst is das schon ne menge holz.
überleg mal selbst. du willst keinen aufwändigen kernel schreiben, der natürlich keinerlei hardwareunterstützung bietet. also fährst du mit den reinen bios funktionen. und dann noch ohne protekted mode und ohne speicherverwaltung.. wie soll sich da ein gui toolkit wie qt oder gtk+ wohlfühlen, dessen bibliotheken schon deinen adressraum sprengen? ach ja: und du bist im real mode noch bei 16bit!
du könntest halt per ascii zeichen "striche" ziehen und den hintergund einfärben - sieht dann aus wie dein bios, welches auch so realisiert wird.

Antwort 2 von TByte vom 19.10.2020, 19:14 Options

vielen dank!
--
1. und wenn ich auf platte kopieren will, macht GRUB für mich doch den protected mode, oder?
2. also ich schreibe in assembler ein proggi (und dann mit nasm). Das gibt, an, dass die erste speicheradresse belegt wird. Dieses Programm muss dann auf dem medium nach den ersten 512mb gebrannt werden?
3. Kann ich nich n linux kernel nutzen?
mfg
TByte

Antwort 3 von Jaja vom 19.10.2020, 19:59 Options

Zitat:
1. und wenn ich auf platte kopieren will, macht GRUB für mich doch den protected mode, oder?


nein.

du verstehst das wohl grad überhaupt nicht. schau dich mal im themengebiet rechnerarchitektur um. wikipedia hat da einiges zum thema real/protekted mode.. das sind grundlagen tbyte.

Zitat:
2. also ich schreibe in assembler ein proggi (und dann mit nasm).


nee. du kannst das progr. schon in c schreiben, du musst halt nur am anfang was in asm ändern. nach dem kompillieren is doch dein c progr. auch asm..

übrigens is das egal welchen asm editor du da nimmst - auch wenn die syntax mal intel mal at&t ist, das ergebnis ist immer 100% identischer code.

Zitat:
Dieses Programm muss dann auf dem medium nach den ersten 512mb gebrannt werden?


einen befehl an adresse 0x0000 für den spung zum programm HINTER die ersten 512 byte (nicht megabyte) des mediums (bzw. ein kompletter bootloader wie grub o. andere in den ersten 440 byte und das komplette programm hinter 512byte).
es sind diese 512byte eben reserviert (MBR) und das bios springt nach bootreihenfolge das erste medium an adresse 0 an. dort liegt normalerweise ein bootloader, du kannst aber auch dein programm dort beginnen lassen (wenn kleiner 440byte) oder eben zu deinem programm springen, was günstiger wäre.

Zitat:
3. Kann ich nich n linux kernel nutzen?


sicher, aber du wolltest doch n kernel machen?!
ja du kannst einfach n komplettes gnu/linux (z.b. dsl linux 50MiB) auf cd brennen.. samt deinem programm, welches automatisch durch init ausgeführt wird.. das wäre auch n sinnvoller weg.
nur den kernel wird nicht so spaßig, weil dir dann die userland bibliotheken und tools fehlen und du direkt auf der kernel api ruimprogrammieren müsstest - was aber auch geht.

Antwort 4 von TByte vom 19.10.2020, 22:10 Options

ich glaub die letzte elternative wäre mir am liebsten.
Also, so in ungefähr?:
1.Linux kernel downloaden
2.Auf CD brennen
3.Mein programm nachbrennen
Und das Programm schreibe ich so?:
1.QT/TK mit auf CD brennen (direkt nach Kernel)
2.Die KernelAPI und TK/QT nutzen und Programm starten
Und dann hab ich meine eigene Linux-Disrti incl. Live-CD oder isntallation?
mfg
TByte

Antwort 5 von Jaja vom 20.10.2020, 18:44 Options

Zitat:
1.Linux kernel downloaden
2.Auf CD brennen
3.Mein programm nachbrennen


wenn dann gleichzeitig brennen und dann haste einen kernel + dein programm..

ok wenn du den kernel direkt über die api ansprichst könnte das scho klappen, ist aber nicht sinn der sache, wenn du es einfach haben willst und ich folgenden satz lese:

Zitat:
Und dann hab ich meine eigene Linux-Disrti incl. Live-CD oder isntallation?


nein.

du hast dann linux als kernel ohne userland. aber erst dieses gibt der sache sinn und macht es zum betriebsystem. darum heißt es ja gnu/linux, da linux der kernel und vom gnu projekt das userland - denn gnu hätte theoretisch seinen eigenen kernel, der aber nie fertig wird (gnu/hurd).

Zitat:
1.QT/TK mit auf CD brennen (direkt nach Kernel)


qt/gtk+ sind 2 von vielen gui bibliotheken, die auf den funktionen von x.org aufsetzen.
zwar würde es auch teilweise ohne x-server gehen z.b. über direct framebuffer, doch das ist ein schlechter ersatz..
in summe kann man den x-server + die gui bibliotheken zum (erweiterten) benötigten userland zählen. diese teile sind nicht wirklich unbedingt notwendig, aber sinnvoll.
was notwendig ist, also zum userland gehören MUSS steht in der "linux standard base".

eine solche minimalistische gnu/linux version, die aber vollständig im sinne des lsb ist wäre z.b. damn small linux (50MiB). du könntest dort auch noch teile weglassen, die nicht zur lsb gehören (wie die webbrowser, x-server u.ä)

noch kleiner, ohne die lsb zu ignorieren geht es mit linux from scratch, welches deine fähigkeiten (sorry) mehr als überschreiten würde..

an sonsten bleibt dir noch BSD. von netBSD gibts auch versionen mit 1,44MiB größe - ein kompletter webserver in diesem falle.. das sind aber ausnahmen zu einem bestimmten zweck und bsd unterliegt auch nicht der lsb, wlche eine gewisse mindestgröße/umfang an programmen & bibliotheken eben nach sich zieht.


schau doch mal hier, da kannste dir deine eingene ubuntu live cd zusammenklicken und auch dein programm hinzufügen. wenn du dieses dann noch per init starten lasst (bzw. einfacher per shell startup script wie bashrc) hast du den gewünschten effekt ohne viel stress..

Ähnliche Themen

MMO(RP)G programmieren
tobi_master2000  22.06.2007 - 229 Hits - 3 Antworten

Stimmgerät programmieren...
credo  15.07.2007 - 45 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Sun Jan 25 18:15:21 2026