| Zeile 147: | Zeile 147: | ||
:GRUB ist nun einmal aus gutem Grund der "Standard", nicht nur wegen der guten Interoperabilität und der Features, sondern eben auch, weil er Anfängern eine verlässliche Basis bietet. Anfängern zu signalisieren, es wäre zum Verständnis erforderlich (oder abseits des Reizes der Herausforderung überhaupt eine gute Idee) einen eigenen Bootloader zu entwickeln ist in meinen Augen ein Bärendienst. | :GRUB ist nun einmal aus gutem Grund der "Standard", nicht nur wegen der guten Interoperabilität und der Features, sondern eben auch, weil er Anfängern eine verlässliche Basis bietet. Anfängern zu signalisieren, es wäre zum Verständnis erforderlich (oder abseits des Reizes der Herausforderung überhaupt eine gute Idee) einen eigenen Bootloader zu entwickeln ist in meinen Augen ein Bärendienst. | ||
: --[[Benutzer:TheThing|TheThing]] 04:54, 9. Aug. 2015 (CEST) | : --[[Benutzer:TheThing|TheThing]] 04:54, 9. Aug. 2015 (CEST) | ||
| + | |||
| + | :Moinsen, | ||
| + | :> Wenn es jedoch dem Entwickler des Hobbybetriebssystems darum geht, zu verstehen, was auf einem x86-PC ab dem Start vor sich geht, dann muss man ja gerade dazu raten, auch den Bootloader selbst zu entwickeln | ||
| + | :Dann muss man ihm auch raten, ein eigenes BIOS zu schreiben. Denn eine x86-CPU startet nicht an 0x0000:0x7c00 mit netten Software-Interrupts, die einem das Lesen von USB-Sticks erlauben, sondern zumindest früher eher an 0xffff:0x0000 vor dem POST, da funktioniert vermutlich noch nicht mal der Arbeitsspeicher. | ||
| + | :Weiter oben kam irgendwo der Punkt auf, dass es ja bei Hobby-OS-Dev darum geht, etwas zu lernen oder anders zu machen, und eben nicht darum, das allerbeste OS zu schreiben. Deshalb könne man ja auch einen eigenen Bootloader entwickeln. Klar, kann man, aber ich glaube mich zu erinnern, schon noch weiter oben geschrieben zu haben, dass ein Bootloader nicht viel andere Sachen als ein Kernel auch macht. Ich habe ein paar Bootloader geschrieben und sehe absolut keinen Nutzen darin, wenn es um OS-Dev geht. Man lernt nichts, was man nicht auch bei der Kernelentwicklung lernen würde, und man kann sich nicht wirklich von bestehenden Betriebssystemen abgrenzen, indem man einen eigenen Bootloader schreibt. Wenn es um den Spaß an der Freude geht, klar, nur zu. Ich liebe auch 512-Byte-Sachen. | ||
| + | :Niemand erwartet vom Bootloader Perfektion, aber ich persönlich (und andere Leute hier) sehen absolut keinen Grund, einen Bootloader zu schreiben, und bisher habe ich in dieser Diskussion auch kein gutes Argument dafür gehört. Wer es will, kann es natürlich, weil es Spaß macht, aber es geht in dieser Diskussion darum, was wir Anfängern empfehlen. Wer neu hierher kommt, will im Allgemeinen kein „Na, das kann man alles machen, wie man gerade lustig ist.“ Klar wäre das am ehrlichsten, aber das bringt denen rein gar nichts. Irgendeine Linie, die sich bewährt hat, müssen wir empfehlen, und diese Linie ist aktuell nun mal „Nimm GRUB und schreib den Kernel in C“. Das ist, wofür wir hier die besten Tutorials und die besten Seiten haben. Es bringt absolut gar nichts, Anfängern einen eigenen Bootloader und einen Rubykernel zu empfehlen, nicht zuletzt weil wir dazu praktisch keine Ressourcen haben. —[[Benutzer:XanClic|Clici McXan]] 22:53, 11. Aug. 2015 (CEST) | ||
| Zeile 153: | Zeile 159: | ||
Aber auch für „[[Eigener Bootloader]]“ können die Punkte hier nicht einfach 1:1 übernommen werden. Aussagen wie „Man wird scheitern oder Code Kopieren“ können nicht so stehen bleiben. IIRC haben wir zum Thema Kernel auch irgendwo den Hinweis ''„Ist ein Kernel wirklich das was du willst?“'' Viel mehr sollte IMHO beim Bootloader auch nicht stehen. | Aber auch für „[[Eigener Bootloader]]“ können die Punkte hier nicht einfach 1:1 übernommen werden. Aussagen wie „Man wird scheitern oder Code Kopieren“ können nicht so stehen bleiben. IIRC haben wir zum Thema Kernel auch irgendwo den Hinweis ''„Ist ein Kernel wirklich das was du willst?“'' Viel mehr sollte IMHO beim Bootloader auch nicht stehen. | ||
--[[Benutzer:MNemo|MNemo]] 07:08, 10. Aug. 2015 (CEST) | --[[Benutzer:MNemo|MNemo]] 07:08, 10. Aug. 2015 (CEST) | ||
| + | |||
| + | :Moin, | ||
| + | :Dann schreib ihn komplett neu. Das hier ist ein Wiki. Wenn es jemandem nicht passt, soll er das wieder umschreiben. Wenn es einen Edit War gibt, wissen wir, dass wir weiter diskutieren müssen. | ||
| + | :Der Artikel [[Eigener Bootloader]] sieht sehr veraltet aus und müsste komplett neu geschrieben werden, ich glaube, 2010 wurde nicht viel vom Inhalt an sich geändert. Dass er eigentlich nur fertigen Code präsentiert, ist genau das, was mit „Man wird Code kopieren“ gemeint ist. | ||
| + | :Was übrigens ein sehr guter Punkt ist. Ich stehe voll und ganz hinter „Man wird scheitern oder Code kopieren“. Der Bootloader steht am Anfang des Bootprozesses, also werden die meisten eher damit anfangen, als dass sie sich fünf Jahre mit Kernelentwicklung beschäftigen und sich dann mal an den Bootloader machen (warum sollten sie auch, dann sind sie offenbar fünf Jahre mit GRUB ausgekommen und das war immer gut genug). Naturgemäß kopiert man am Anfang viel Code, das ist halt bei den allermeisten bei OS-Dev so. Ein anfänglicher Bootloader ist nicht groß, der ist also schnell zusammenkopiert und dann läuft der auch so einigermaßen. Wenn er wirklich läuft, fasst man den auch nie wieder an. Warum auch, läuft ja. Beim Kernel ist das was anderes, an dem schraubt man die ganze Zeit rum. Wenn der also am Anfang zusammenkopiert ist, wird man den trotzdem nach einiger Zeit wohl mal selbst von Grund auf neu schreiben. Da man aber praktisch nie am Bootloader arbeitet, wird das dort nie passieren. | ||
| + | :Natürlich mag es Leute geben, die nach einiger Zeit sehen, wie doof der zusammenkopierte Bootloader ist, und sich mal einen eigenen ordentlichen schreiben, wenn sie schon ein paar Jahre Kernelentwicklungserfahrung haben. Aber das werden nicht viele sein, behaupte ich, denn dann merkt man, dass ein Bootloader uninteressant ist und nur die gleichen Probleme wie im Kernel zu lösen sind. Also bleibt man dann halt bei seinem alten Bootloader oder nimmt lieber einfach GRUB. | ||
| + | :Die einzige Ausnahme, die mir dazu spontan einfällt, ist PrettyOS, aber dort ist es erstens in meinen Augen eine Prinzipienfrage, weil wir eben sehr energisch GRUB empfohlen haben und ein gewisser Jemand sich halt nichts von der naiven Jugend sagen lässt, zweitens habe ich daran sogar selbst mitgeschrieben (u. a. weil die Kernelgröße beschränkt war, eine nette und sehr typische Kinderkrankheit von Bootloadern), und drittens ist es immer noch ein recht einfacher Bootloader, aus dem ich jetzt nicht erkennen kann, ob er tatsächlich ein Argument für eigene Bootloader sein soll. | ||
| + | :Man lernt da also, wie man FAT12 in Real-Mode-Assembler liest, wie man in den PM springt, wie man den URM benutzt, wie man die BIOS-Memory-Map liest, und wie man die BIOS-API zum Lesen von Datenträgern benutzt. Ich will jetzt nicht wieder betonen, dass das alles veraltet ist, aber das ist es halt. | ||
| + | :(Ein richtiges Gegenargument dazu ist übrigens: Ja, alles, was man so typischerweise bei OS-Dev benutzt, ist veraltet: PIT und PIC zum Beispiel; dazu ist mein Gegengegenargument aber wieder, dass das nur insofern vergleichbar ist, wenn man dann auch einen RM-Kernel schreibt. Wenn man einen RM-Bootloader und einen PM-Kernel hat, ist das so, als würde man am Anfang im Kernel PIT/PIC und irgendwann später HPET/APIC benutzen. Da stellt sich dann die Frage, warum man überhaupt PIT/PIC benutzt hat.) | ||
| + | :'''Zusammenfassend:''' Ich hab selber schon einige Bootloader geschrieben. Ich hab nicht wenige Sachen im RM gemacht. Ich finde, es macht großen Spaß und freue mich, wenn andere mitmachen. Ich hab übrigens auch den [[Sather]]-Artikel geschrieben, von wegen „Immer nur C :<“ und so. Wie ich schon mehrfach geschrieben hab, gibt es bei OS-Dev niemals „den einen Weg“, sondern immer viele. Das können wir gern überall betonen, aber das scheint ja auch in dieser Diskussion dauernd überlesen zu werden, obwohl ich das mindestens zweimal geschrieben habe, das bringt also offensichtlich schonmal nichts. Worum es hier geht, ist, Anfängern einen bewährten Weg vorzugeben, den sie gehen können und auf dem sie hier Hilfe erwarten können. Und dieser Weg ist nunmal, und das ist unser aller Schuld, ein C-Kernel mit GRUB als Bootloader. Ja, nicht nur die Schuld der Leute, die das so in Ordnung finden, sondern vor allem die Schuld der Leute, die das nicht tun. Schreibt gute Artikel für andere Wege, haltet euch bitte auch immer im Forum bereit, um Fragen zu beantworten, und dann sieht die Sache schon ganz anders aus! | ||
| + | :Aber bitte schreibt nicht in den Artikel „Ja, GRUB ist doch nur ein Weg, guckt mal, ihr könnt auch einen eigenen Bootloader schreiben!“, ohne dass ihr [[Eigener Bootloader]] grundlegend überarbeitet habt, und ohne dass ihr im Forum aktiv seid, um Fragen zum Thema zu beantworten. Das ist, was ich hier zu verhindern versuche, dass wir Anfängern Wege vorschlagen, auf denen wir ihnen dann nicht helfen können. Auf dem Weg GRUB+C können wir das, und deshalb ist das der eine Weg, den wir aktiv empfehlen. Außerdem funktioniert er tatsächlich recht gut, insbesondere für Anfänger, um erstmal mit OS-Dev anzufangen. | ||
| + | :Sobald die Leute über ihre absolute Anfängerphase hinweg sind, sind sie im Allgemeinen auch zu eigenen Gedankengängen fähig. Und dann merken sie, dass man ja auch alles ganz, ganz anders machen kann. Und genau dann sind sie bereit für einen Rubykernel mit eigenem Bootloader. Bevor sie in der Lage sind zu begreifen, dass hier vorgeschlagene Wege nicht die einzigen möglichen sind, werden sie den meisten Code einfach kopieren und eher versuchen, andere ihre Probleme lösen zu lassen, statt sich selbst daran zu machen. —[[Benutzer:XanClic|Clici McXan]] 22:53, 11. Aug. 2015 (CEST) | ||