Konsolen-Auflösung
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt die speziellen Boot-Parameter zur Änderung der Konsolen-Auflösung. Eine Übersicht über alle Bootparameter findet man im Artikel Booten.
Die Auflösung beim Booten beträgt nach der Installation immer 640x480 Pixel. In den virtuellen Konsolen wird dabei der VGA-Textmodus mit 80x25 Zeichen verwendet. Möchte man hier eine höhere Auflösung einstellen, so müssen die Terminals im Grafikmodus betrieben werden. Dies geschieht über ein sogenanntes "Framebuffer-Kernelmodul", welches dem System den Zugriff auf den Bildspeicher (Framebuffer) der Grafikkarte ermöglicht.
Dazu muss wie oben beschrieben ein Parameter hinzugefügt werden. Je nach eingesetzter Ubuntu-Version lauten diese Parameter anders.
Vorbereitung¶
Auswahl eines Kernelmoduls¶
Zunächst muss man sich für eines der Framebuffer-Module entscheiden.
Für die meisten Anwender dürfte das Modul
uvesafb
das Optimum darstellen. Es ist der Nachfolger des älterenvesafb
-Moduls. Genau wie dieses unterstützt es praktisch alle Grafikkarten, ermöglicht es im Gegensatz zum Vorgänger aber auch, die Bildwiederholfrequenz einzustellen. Außerdem ist es einfacher zu konfigurieren und funktioniert auch auf nicht-x86-Rechnern. Allerdings benötigt es das Programm v86d, welches erst ab Ubuntu 8.10 in den Paketquellen enthalten ist.vesafb
ist unter Ubuntu 8.04 etwas einfacher einzurichten alsuvesafb
, da es v86d nicht benötigt. Es ist einen Versuch wert, wennuvesafb
aus irgendeinem Grund nicht eingesetzt werden kann. Allerdings hat es Probleme mit einigen Auflösungen (z.B. bestimmte Breitbild-Formate wie 1024x600).nvidiafb
ist für die Besitzer von Nvidia-Grafikkarten gedacht. Es ist nicht mit dem offiziellen X.org-Treiber von nvidia kompatibel, so dass Anwender dieses Treibers aufuvesafb
zurückgreifen sollten.intelfb
ist das Modul für Intel-Grafikchips. Dieses Modul hat sich als äußerst "unkooperativ" erwiesen, so dass Intel-Grafikchip-Besitzern zuuvesafb
geraten wird.eine Liste weiterer Module erhält man durch einen Blick in den Ordner /lib/modules/<kernelversion>/kernel/drivers/video/. Bei den in diesem Ordner und seinen Unterordnern enthaltenen .ko-Dateien handelt es sich um die Module.
Hat man das Paket linux-doc installiert, so findet man unter /usr/share/doc/linux-doc/fb/ Informationen zu einigen der Module. Auch kann man mittels modinfo
Informationen über ein Modul erhalten (siehe Kernelmodule).
Laden des Moduls¶
Man startet einen Editor mit Root-Rechten [3], und öffnet die Datei /etc/initramfs-tools/modules. Hier fügt man den Namen des ausgewählten Moduls, bspw. uvesafb
oder nvidiafb
, hinzu. Außerdem muss man in /etc/modprobe.d/blacklist-framebuffer.conf den Namen des Moduls auskommentieren, also ein Raute-Zeichen # davor setzen.
Danach liest man die Änderungen ein [1]:
sudo update-initramfs -u
Wenn man sich für uvesafb
entschieden hat, sollte man nun noch das Paket
v86d
Befehl zum Installieren der Pakete:
sudo apt-get install v86d
Oder mit apturl installieren, Link: apt://v86d
installieren.
Kernel-Parameter ermitteln¶
Damit beim Start des Rechners der richtige Grafikmodus eingestellt wird, müssen dem Kernel beim Start bestimmte Parameter übergeben werden. Dies geschieht, indem man die Parameter in der GRUB-Konfiguration verankert.
Für uvesafb, nvidiafb, radeonfb und weitere¶
Der Parameter folgt dem Schema video=<modul>:mode_option=<Auflösung>-<Farbiefe>@<Wiederholfrequenz>
. Die Wiederholfrequenz kann hierbei weggelassen werden. Beispiele wären video=uvesafb:mode_option=1024x600-16
oder video=nvidiafb:mode_option=1280x1024-24@85
.
Hinweis:
Je nach ausgewähltem Modul können die Parameter auch anders lauten; insbesondere erwarten vesafb und intelfb andere Parameter. Der folgende Befehl gibt eine Liste der Module aus, die die hier vorgestellte Syntax unterstützen:
find /lib/modules/$(uname -r)/kernel/drivers/video -name *.ko | while read x; do if /sbin/modinfo $x | grep -q mode_option; then echo $(basename $x .ko); fi; done
Für vesafb¶
Um die korrekten Parameter für vesafb herauszufinden, installiert [5] man am besten das Programm hwinfo aus den Ubuntu-Paketquellen. Dieses kann Hardwaredaten auslesen.
hwinfo (universe, bis einschließlich Ubuntu 13.04)
Befehl zum Installieren der Pakete:
sudo apt-get install hwinfo
Oder mit apturl installieren, Link: apt://hwinfo
Ist das Programm installiert, können die Informationen über den Framebuffer ausgelesen werden [1]:
Hinweis:
Dieser Befehl gibt nur die gewünschten Informationen aus, falls der Nvidia-Treiber geladen ist!
sudo hwinfo --framebuffer
Die Ausgabe ähnelt dieser. Gegen Ende stehen die relevanten Daten.
... Mode 0x0300: 640x400 (+640), 8 bits Mode 0x0301: 640x480 (+640), 8 bits Mode 0x0303: 800x600 (+800), 8 bits Mode 0x0305: 1024x768 (+1024), 8 bits Mode 0x0307: 1280x1024 (+1280), 8 bits Mode 0x0340: 1400x1050 (+1400), 8 bits ...
Alternativ kann man sich auch an folgender Tabelle orientieren.
vga-Parameter für den Framebuffer* | ||||||
Farbtiefe | 640×480 | 800×600 | 1024×768 | 1280×1024 | 1440×900 | 1600×1200 |
8 bit, 256 Farben | 769 (0x0301) | 771 (0x0303) | 773 (0x0305) | 775 (0x0307) | 864 (0x0360) | 796 (0x031C) |
16 bit, 65.536 Farben | 785 (0x0311) | 788 (0x0314) | 791 (0x0317) | 794 (0x031A) | 866 (0x0362) | 798 (0x031E) |
24 bit, 16,7 Mio Farben | 786 (0x0312) | 789 (0x0315) | 792 (0x0318) | 795 (0x031B) | 867 (0x0363) | 799 (0x031F) |
*Man kann entweder die dezimalen oder die hexadezimalen Werte wählen, das macht keinen Unterschied. |
Neben den beschriebenen Werten gibt es noch vga=normal
(normaler 80x25-VGA-Modus ohne Framebuffer), vga=ext
(80x50) und vga=ask
(Nachfragen).
Diesen Modus, also z.B. 0x0307
, trägt man in den Bereich defoptions
der /boot/grub/menu.lst ein [3]:
915resolution¶
(Dieser Abschnitt betrifft nur Nutzer von Intel-Grafikchips. Andere können beim Abschnitt GRUB-Konfiguration weiterlesen.)
Achtung!
Der folgende Abschnitt zu 915resolution und initramfs ist komplex und kann unter Umständen zu einem nicht mehr ordnungsgemäß startenden System führen. Entsprechend sollten Einsteiger diese Anleitung nicht auf Produktivsystemen ausprobieren.
Aufgrund einer Eigenheit im VESA-BIOS zahlreicher Intel-Grafikchips ist es auf einigen Computern nicht ohne weiteres möglich, bestimmte Auflösungen einzustellen. Dies betrifft insbesondere Geräte mit Breitbildauflösungen wie 1024x600 u.ä. Um dem entgegenzuwirken, muss vor dem Laden des Grafiktreibers das Tool 915resolution mit den passenden Optionen gestartet werden. Im X.org-Treiber für Intel-Hardware ist dessen Funktionalität zwar mittlerweile enthalten, aber auf der Konsole muss man nach wie vor auf 915resolution zurückgreifen.
Folgende Schritte sind nötig:
Installation¶
Man lädt sich von mango.lang.org 🇬🇧 915resolution herunter und entpackt es. In dem Ordner führt man dann den Befehl
sudo make install
aus.
Bestimmen der notwendigen Optionen¶
Mittels
sudo 915resolution -l
lässt man sich eine Liste der Videomodi ausgeben. Normalerweise sollte 915resolution den vorhandenen Grafikchip automatisch erkennen. Sollte dies nicht der Fall sein, so kann man mit der Option -c explizit einen Grafikchip, hier als Beispiel für einen 945GM-Chip:
sudo 915resolution -c 945GM -l
Die unterstützten Chipsätze sind in der README.txt aufgeführt.
Die Ausgabe des Befehls sollte etwa so aussehen:
Intel 800/900 Series VBIOS Hack : version 0.5.3 Chipset: 945GM BIOS: TYPE 1 Mode Table Offset: $C0000 + $269 Mode Table Entries: 36 Mode 32 : 800x600, 8 bits/pixel Mode 34 : 1024x768, 8 bits/pixel Mode 38 : 1280x1024, 8 bits/pixel Mode 3a : 1600x1200, 8 bits/pixel Mode 3c : 1920x1440, 8 bits/pixel Mode 41 : 1024x600, 16 bits/pixel Mode 43 : 800x600, 16 bits/pixel Mode 45 : 1024x768, 16 bits/pixel Mode 49 : 1280x1024, 16 bits/pixel Mode 4b : 1600x1200, 16 bits/pixel Mode 4d : 1920x1440, 16 bits/pixel Mode 50 : 1024x600, 32 bits/pixel Mode 52 : 800x600, 32 bits/pixel Mode 54 : 1024x768, 32 bits/pixel Mode 58 : 1280x1024, 32 bits/pixel Mode 5a : 1600x1200, 32 bits/pixel Mode 5c : 1920x1440, 32 bits/pixel
Nun sucht man sich einen der Modi aus, den man nicht nutzen will, und ersetzt ihn mittels 915resolution durch den gewünschten. Als Beispiel kann man bei einem 945GM-Chip den Modus 5c (1920x1440, 32 bits/pixel) durch 1024x600, 24 bits/pixel ersetzen:
915resolution -c 945GM 5c 1024 600 24
Einfügen ins initramfs¶
Experten-Info:
Hier werden die Schritte, die für die Integration von 915resolution in das initramfs nötig sind, beschrieben. Wer ein tieferes Verständnis für das Thema initramfs entwickeln möchte, sei auf die Manpage zu initramfs-tools verwiesen.
Nun erstellt man in /etc/initramfs-tools/scripts/init-top eine Textdatei namens 915resolution mit folgendem Inhalt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/bin/sh OPTIONS="-c 945GM 5c 1024 600 24" case $1 in prereqs) exit 0 ;; esac if [ -c /dev/mem ]; then 915resolution $OPTIONS else mknod -m 640 /dev/mem c 1 1 915resolution $OPTIONS rm /dev/mem fi |
Hierbei muss der Wert von OPTIONS
in der zweiten Zeile an die zuvor ermittelten Parameter für 915resolution angepasst werden. Zuletzt muss die Datei ausführbar gemacht werden (siehe chmod):
sudo chmod +x /etc/initramfs-tools/scripts/init-top/915resolution
Außerdem muss man in /etc/initramfs-tools/hooks/ eine Datei namens 915resolution mit folgendem Inhalt anlegen:
1 2 3 4 5 6 7 8 9 | #!/bin/sh case $1 in prereqs) exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions copy_exec /usr/sbin/915resolution /bin/915resolution |
und ausführbar machen:
sudo chmod +x /etc/initramfs-tools/hooks/915resolution
Zu guter Letzt muss man dem System mitteilen, dass 915resolution vor dem Laden des Framebuffer-Moduls gestartet werden soll. Dazu editiert man die Datei /usr/share/initramfs-tools/scripts/init-top/framebuffer (Root-Rechte werden benötigt) und ersetzt die Zeile PREREQS=""
durch PREREQS="915resolution"
. Das schließt die nötigen Änderungen an den Konfigurationsdateien für das initramfs ab, so dass man die Änderungen mittels
sudo update-initramfs -u
aktiv werden lassen kann.
GRUB-Konfiguration¶
Nun muss man die zuvor ermittelten Kernel-Parameter in die Archiv/menu.lst eintragen. Hierzu öffnet man die Datei /boot/grub/menu.lst in einem Editor mit Root-Rechten und sucht nach der Zeile, die mit # defoptions
beginnt. Ab Ubuntu 9.10 wird GRUB 2 verwendet, hier muss man stattdessen die Datei /etc/default/grub mit Root-Rechten bearbeiten und die gewünschte Option an die Zeile GRUB_CMDLINE_LINUX_DEFAULT
anhängen. Diese kann z.B. so aussehen:
GRUB 2:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash video=uvesafb:mode_option=1400x1050-32@60"
GRUB (Legacy):
# defoptions=quiet splash vga=0x0307
Wenn ein vga=xxxxx
- oder video=xxxx
-Parameter vorhanden ist, so ersetzt man ihn durch die im Abschnitt Kernel-Parameter ermitteln ermittelten Parameter. Ist keiner vorhanden, so hängt man diese Parameter einfach an die vorhandenen an. Anschließend wird in einem Terminal (nur bei GRUB 2 notwendig!) der Befehl:
sudo update-grub
eingegeben, um die Änderungen zu übernehmen. Nach einem Neustart sollte das Terminal in der gewünschten Auflösung erstrahlen.
Achtung!
Fehlerhafte Parameter können zu einem nicht mehr startenden System führen! Daher sollte man die gewünschten Parameter unbedingt temporär - wie unter Bootoptionen beschrieben - auszuprobieren, bevor man sie fest einträgt.
Problembehebung¶
vesafb auf ATI - Bildwiederholrate zu hoch¶
Bei einigen älteren Grafikkarten der ATI-Radeon Reihe wird im Framebuffer-Modus die Bildwiederholrate automatisch zu hoch für analog angeschlossene Flachbildschirme eingestellt. Abhilfe schafft hier die Installation des Paketes
fbset
Befehl zum Installieren der Pakete:
sudo apt-get install fbset
Oder mit apturl installieren, Link: apt://fbset
oder die Verwendung von uvesafb
mit expliziter Angabe der Wiederholfrequenz (z.B. video=uvesafb:mode_option=1280x1024-16@60
).
Links¶