GRUB2 und Kernel vga = Parameter

16

Gemäß der Dokumentation ist die Verwendung des vga=Kernel-Parameters ab GRUB2 veraltet. Die Tatsache, dass einige neuere Kernel es auf bestimmten Adaptern anscheinend nicht mehr unterstützen, spielt keine Rolle, da meine Grafikkarte sieben bis acht Jahre alt ist.

Das Problem ist jetzt, dass ich einen Textmodus mit höherer Auflösung verwenden möchte, z. B. 80 x 50 anstelle der Standardzeichen von 80 x 25. Anscheinend kommen für diese Grafikkarte (ATI Rage XL) alle Grafikmodi (VBE / VESA) nicht in Frage - die Liste der verfügbaren Modi ist nur 0durchscheinend 6. 6ist 80x60aber sieht schrecklich aus, deshalb würde ich gerne mit 1(80x50) gehen.

Ich habe gesehen, wie 80x50 und 80x60 funktionierten, nachdem ich die Liste der verfügbaren Modi abgerufen hatte, wenn der Standardmodus nicht unterstützt wurde (wobei der Standard auskommentiert war GRUB_TERMINAL=console), und ich wurde aufgefordert, auszuwählen.

Wie kann ich den Modus einstellen, wenn ich ihn nicht in der Kernel-Befehlszeile einstellen soll und jede Verwendung von GRUB_GFXMODE(mit oder ohne vorab ladendem vbeModul) und GRUB_GFXPAYLOAD_LINUX=keepfehlschlägt? Fehler wie in: Bildschirm bleibt leer, weil es ein ungültiger Grafikmodus für die Karte ist, die ich in diesem Computer habe?

Meine Idee wäre, immer noch an nomodesetden Kernel zu übergeben, aber der Bootloader müsste dann immer noch den Grafikmodus einstellen. Und ich sehe keine anderen Optionen als den vga=Kernel-Parameter dafür.

Hinweis: Mit den Befehlen vbetestund videotestauf der GRUB2-Konsole wird der Bildschirm ausgeblendet, und der Bildschirm wechselt in den Ruhemodus, nachdem behauptet wurde, dass kein Videoeingang vorhanden ist. vbeinfound videoinfozeigen einige andere verfügbare Modi als die oben genannten, aber es wird nicht erwähnt, wo dies eingestellt werden soll. Wenn ich die Kernel-Befehlszeile vga=1(ohne nomodeset) übergebe, sehe ich eine sehr kurze Warnung, dass sie veraltet ist, aber sie ist zu lang, um vollständig gelesen zu werden - und die Ausgabe erscheint nicht in dmesg.

0xC0000022L
quelle
Der vgaParameter gilt für den Kernel, nicht für grub2. Egal wie grub2Entwickler versuchen, einfache Komplexität zu erreichen, es funktioniert immer noch, solange die Kernel diesen Parameter verstehen.
20.

Antworten:

9

Vielleicht ist es von grub2 veraltet, aber es sollte immer noch funktionieren und muss weiter funktionieren. Es funktioniert für mich mit grub2 und debian wheezy sowie rhel7.3 (bestätigt 01-2017). Auch nach der offiziellen Dokumentation ist es nicht veraltet:

https://www.kernel.org/doc/Documentation/x86/boot.txt

Wenn die vom Bootloader bereitgestellte Befehlszeile vom Benutzer eingegeben wird, kann der Benutzer davon ausgehen, dass die folgenden Befehlszeilenoptionen funktionieren. Sie sollten normalerweise nicht von der Kernel-Befehlszeile gelöscht werden, obwohl nicht alle für den Kernel von Bedeutung sind.

vga = hier ist entweder eine ganze Zahl (in C-Notation entweder dezimal, oktal oder hexadezimal) oder eine der Zeichenfolgen "normal" (bedeutet 0xFFFF), "ext" (bedeutet 0xFFFE) oder "ask" (bedeutet 0xFFFD). Dieser Wert sollte in das Feld vid_mode eingegeben werden, da er vom Kernel verwendet wird, bevor die Befehlszeile analysiert wird.

Und https://www.kernel.org/doc/Documentation/svga.txt sagt Ihnen alles, was Sie wissen müssen. Nachfolgend einige Beispiele für Auflösungen, die ich häufig verwende:

vga=0x31b --> 1280x1024x32
vga=0x34d --> 1600x900x32
vga=0x31e --> 1600x1200x32

Um eine Liste der unterstützten Modi zu erhalten, verwenden Sie:

vga=ask

Für einen 1024 × 768x24-Bildschirm, den ich gefunden habe, funktioniert dies auf so ziemlich allen Systemen und Monitoren, die ich verwende (diesmal in Dezimal- und Hexadezimalform):

vga=792
vga=0x318
aseq
quelle
1
Dies funktioniert für mich , wenn ich das Bearbeiten /etc/default/grubdurch Anhängen vga=792an den vorhandenen Wert vonGRUB_CMDLINE_LINUX
Shashank Vyas
Ein Ubuntu-Update, das heute veröffentlicht wurde, installierte neue UEFI-Boot-Komponenten von Grub und schlug eine Befehlszeilenänderung vor, die vga=currentzusammen mit Crash-Dump-Komponenten hinzugefügt werden sollte . Ich lehnte die Änderungen ab, kam aber hierher und fragte mich, was das vga=currentbedeutete.
WinEunuuchs2Unix
1

Der Parameter vga wird weiterhin mit den Befehlen linux16 und initrd16 unterstützt. Wenn Sie also "linux" in "linux16" oder "initrd" in "initrd16" ändern, können Sie das alte Verhalten erhalten. Ich bin mir nicht sicher, welche anderen Änderungen das verursacht, aber es hat gut genug für mich funktioniert. :-)

Adam M.
quelle
Das ist ein toller Rat! Drücken Sie einfach e, um in grub2 zu bearbeiten, navigieren Sie dann nach unten zu Linux und setzen Sie 16 am Ende. Dann können Sie vga = ask am Ende der Zeile einfügen. Wenn der Framebuffer im Kernel noch aktiviert ist, wird er wahrscheinlich ziemlich bald vom schnellen VGA-Text in diesen Modus wechseln.
Alex Cannon