• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

grub2 immer Single-CPU?

MH1962

Member
Mal eine sehr technische Frage:

Verstehe ich das richtig, dass so lange grub2 aktiv ist, immer nur eine CPU im Einsatz ist, und zwar die mit der APIC-ID 0, also die primäre CPU?

Darauf scheinen Tests von mir hinzudeuten, aber mit anderen CPUs, anderen BIOSen bzw. UEFIs, anderen Einstellungen usw. kann das ja durchaus anders sein.

Eine Google-Suche zu der Thematik scheint meine Vermutung weder zu bestätigen noch zu widerlegen.

Wer weiß es?
 

drcux

Hacker
Da Grub nun wirklich nicht die Power von MultiCPU's braucht, wird das wohl so sein. Warum sollte man Grub für mehr als einen Prozessor programmieren? Das er immer die erste CPU bekommt ist da dann doch auch logisch, es läuft ja sonst nix anderes....
 
OP
M

MH1962

Member
Da hatte ich mich gefreut, dass eine Antwort kommt, und jetzt bin ich offengestanden etwas betroffen über deren Wortwahl, "wird das wohl so sein", "ist auch logisch". Was habe ich falsch gemacht?

Vielleicht hätte ich doch den Hintergrund meiner Anfrage etwas näher beleuchten sollen. Holen wir das also nach:

Ich beschäftige mich im Moment sehr intensiv mit den Intel-Prozessoren und deren "Hardware-naher" Programmierung. Im Moment mit dem TSC (TimeStamp Counter), also dem Timer direkt in der CPU. Der ist dort als sogenanntes MSR, also "model specific register" implementiert (bzw. ganz genau genommen gibt es sogar mehrere MSRs, die damit was zu tun haben).

Was ich machen will, ist ein grub-Module zu schreiben, was mit dem TSC arbeitet. Warum? Hauptsächlich um mein Wissen zu erweitern. Warum grub? Weil ich da direkt Zugriff auf die Hardware habe und kein Betriebssystem mir irgendwie dazwischen funkt. Und ja, ich könnte auch DOS nehmen, ich will aber grub nehmen, um auch über den was zu lernen...

Da jede CPU, ja jeder Core ein eigenes Register für den TSC hat, können diese "auseinander laufen". Wenn also unter grub immer derselbe Prozessor benutzt wird, brauche ich keine Vorkehrungen dafür zu treffen. Wenn mehrere Cores benutzt wird, muss man hier aufwändiger arbeiten, um sicher zu stellen, dass die Zeit nicht scheinbar rückwärts läuft, nur weil grade ein anderer Core benutzt wurde, der eben etwas "zurück" ist (der Linux-Kernel macht da auch Vorkehrungen, wenn ich das richtig verstanden habe).

Daher meine Frage. Ein "ist tatsächlich immer so, weil..." würde mich hier etwas beruhigen. So lange ich das nicht habe, werde ich mal Vorsichtsmaßnahmen einbauen...
 
OP
M

MH1962

Member
Geier0815 schrieb:
Guck hier doch mal bzw frag da auf der Maillingliste nach. Das Du hier auf einen grub-entwickler triffst, halte ich für unwahrscheinlich.
Auf einer Entwickler-Mailing-Liste nach elementaren Dingen zu fragen, bringt meiner Erfahrung nach nix. Man bekommt einfach gar keine Antwort oder im "günstigsten" Fall den "dezenten" Hinweis, dass man erst mal seine Hausaufgaben machen soll, sprich, sich mit den elementaren Dingen beschäftigen soll. Aber da bin ich grade eh dabei, ist halt mühsam, aber man lernt was dabei (auf dem Weg dahin auch unerwartetes...).

Ich hatte grade mal die grub-Mailing-Liste durchsucht und eine Anfrage von jemanden gefunden, der sich mit ähnlichen Dingen beschäftigt: http://lists.gnu.org/archive/html/grub-devel/2006-05/msg00082.html . Wie erwartet hat er keine Antwort bekommen...
 
OP
M

MH1962

Member
So, die Sache hat sich so gut wie erledigt.

Ich habe mittlerweile gelernt, wie man sekundäre CPUs startet und stoppt (Inter-Processor-Interrupts über den APIC) und konnte das auch nach etwas Startschwierigkeiten in einem grub-Modul umsetzen.

Ich habe auch ein Forum entdeckt, wo man über diese Dinge diskutieren kann, auf osdev.org . EIn deutschsprachiges Forum "gab" es mal auf lowlevel.eu , das scheint aber nach Jahren intensiver Aktivität mal irgendwann völlig eingeschlafen zu sein. Es scheint ja Interesse für das Thema zu geben, weiß irgendjemand, wo sich die Leute jetzt auf Deutsch austauschen? (Ich weiß, dass die Antwort auf eine solche Frage meistens "Facebook" ist, aber bei dem Thema kann ich es mir nicht wirklich vorstellen...)
 
Oben