Will man das nicht sowieso haben?
Klar, aber eigentlich noch nicht jetzt, das wäre dann doch ein wenig zu viel Aufwand.
Hm, inwiefern ist dein OS in dieser Hinsicht speziell? Und warum hast du dieses Problem nicht, wenn du ELF-Sektionen nimmst? Ich glaube, das musst du etwas ausführlicher beschreiben, damit ich es verstehe.
Naja, jeder Mikrokernel der die Treiber und vorallem die Device-Verwaltung im UserSpace hat, muss sich ja irgendetwas einfallen lassen wie man vernünftig booten kann.
Problem bei mir wäre halt, das ich meinen Device-Server gerne so geschrieben hätte, das er halt nur die Treiber verwendet die auch da sind und wenn später mehr Treiber hinzu kommen (damit meine ich während der Laufzeit) dann guckt er ob er dafür nicht auch Verwendung hat.
Mit diesem Konzept vereinfacht sich das Starten dieses Servers (und von meinem OS allgemein) enorm. Denn wenn ich nur die Treiber im VFS stehen habe die auch als Modul von meinem Bootloader geladen wurden, dann versucht er auch erst gar nicht andere Treiber "nachzuladen", sondern das wird erst dann gemacht, wenn das System so weit ist, dass es Dateien von außen (HDD, USB, CD-ROM, ...) nachladen kann. Deswegen auch die dynamische Erzeugung der Liste zur Laufzeit.
Würde ich das nicht so machen, müsste ich mir was einfallen lassen um den Bootvorgang speziell zu behandeln und das könnte dann ein wenig rumgeeiere werden und das wollte ich eigentlich vermeiden.
Hm, keine Unterstützung für PIC, PIT, PS/2-Tastatur und -Maus, Floppy, ...?
Erwischt
Nein, diese "feste" Hardware wird natürlich unterstützt. Aber du hast da natürlich was sehr interessantes angesprochen. Wie findet man eigentlich raus, ob noch PS/2-Ports vorhanden sind?
Ich meine der PIC und der PIT fallen raus, weil sie in dem Sinne keine Treiber benötigen (die sind fest in meinem Kernel drin), Floppy würde ich dann so machen wie erik es schon vorgeschlagen hat (bekannte Sachen aus dem BIOS als Pseudo-PCI-Geräte in eine Liste packen) und was gibt es sonst noch?
Automatisches Neuladen von Treibern würde ich persönlich auch als extrem riskant (oder schlimmeres) betrachten, so könnte man dem System einfach mal ein fehlerhaftes oder bösartiges Programm unterschieben das dann auch noch mit den Privilegien eines Treibers gestartet wird.
Naja, wie gesagt, damit schiebt sich das Problem, des bösartigen Programms nur bis in den nächsten Bootvorgang.
Außerdem habe ich gerade keine Vorstellung welche besonderen Rechte ein Treiber gegenüber normalen Programmen hat (was natürlich jetzt nur mein OS betrifft, auf anderen OSs kann das wieder anders aussehen).
Das Problem eines fehlerhaften Treibers kannst du sowieso nicht aus der Welt schaffen (es sei denn du machst es wie MS, das nur noch signierte Treiber gestartet werden dürfen).
Ein weiteres Problem beim automatischen Neustart sind Treiber die das Systen permanent braucht, z.B. HDD-Treiber oder Dateisystem-Treiber.
Also bei sowas LowLevel wie dem HDD-Treiber seh ich da eher weniger Probleme. Wenn man sich ein vernünftiges Protokoll einfallen lässt sollte das relativ schmerzlos und schnell über die Bühne gehen. Aber auch ein VFS-Modul sollte man entladen können und das fällt bei mir auch nicht in die Kategorie Treiber, sondern wird als ne Art Add-On für den Storage-Server verwendet (ich bin da ziemlich BeOS/Haiku belastet
).
Zumal man jeden Treiber "runterfahren" können sollte und dann wird er einfach neu gestartet. Ob und wie das jetzt genau funktioniert kann ich mir immer noch Gedanken machen, wenn es dann soweit ist.
Ich hätte es nur schon gerne, das man mein OS nicht neustarten muss, nur um einen neuen Treiber zu laden bzw. einen zu updaten.
Was natürlich ausfällt ist Busmanager neu zu laden, zumal diese wiederum bei mir unter die Kategorie Add-On des Device-Servers fallen (also PCI, ISA, USB, ...).