[[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Shell/Einführung: Shell-Grundlagen] [:Editor: Einen Editor öffnen] [:Booten: Kernelparameter ausprobieren] [:Pakete_installieren: Pakete installieren] }}} [[Inhaltsverzeichnis(2)]] 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 [:Terminal:virtuellen Konsolen] wird dabei der [wikipedia:Textmodus: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 [wikipedia:Framebuffer: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 älteren `vesafb`-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 als `uvesafb`, da es v86d nicht benötigt. Es ist einen Versuch wert, wenn `uvesafb` 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 [:Grafikkarten/Nvidia:Nvidia-Grafikkarten] gedacht. Es ist nicht mit dem offiziellen X.org-Treiber von nvidia kompatibel, so dass Anwender dieses Treibers auf `uvesafb` zurückgreifen sollten. * `intelfb` ist das Modul für [:Grafikkarten/Intel:Intel-Grafikchips]. Dieses Modul hat sich als äußerst "unkooperativ" erwiesen, so dass Intel-Grafikchip-Besitzern zu `uvesafb` geraten wird. * eine Liste weiterer Module erhält man durch einen Blick in den Ordner '''/lib/modules//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]: {{{#!vorlage Befehl sudo update-initramfs -u }}} Wenn man sich für `uvesafb` entschieden hat, sollte man nun noch das Paket {{{#!vorlage Paketinstallation 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 GRUB-Konfiguration] verankert. === Für uvesafb, nvidiafb, radeonfb und weitere === Der Parameter folgt dem Schema `video=:mode_option=-@`. Die Wiederholfrequenz kann hierbei weggelassen werden. Beispiele wären `video=uvesafb:mode_option=1024x600-16` oder `video=nvidiafb:mode_option=1280x1024-24@85`. {{{#!vorlage 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: }}} {{{#!vorlage Befehl 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. {{{#!vorlage Paketinstallation hwinfo, universe, bis einschließlich [:Raring:Ubuntu 13.04] }}} Ist das Programm installiert, können die Informationen über den Framebuffer ausgelesen werden [1]: {{{#!vorlage Hinweis Dieser Befehl gibt nur die gewünschten Informationen aus, falls der Nvidia-Treiber geladen ist! }}} {{{#!vorlage Befehl 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. ||<-7 cellstyle="text-align: center;" rowclass="titel">vga-Parameter für den Framebuffer~-(^^(*)^^)-~|| || Farbtiefe||640×480||800×600||1024×768||1280×1024||1440×900||1600×1200|| ||8 bit,[[BR]]256 Farben||769[[BR]](0x0301)||771[[BR]](0x0303)||773[[BR]](0x0305)||775[[BR]](0x0307)||864[[BR]](0x0360)||796[[BR]](0x031C)|| ||16 bit,[[BR]]65.536 Farben||785[[BR]](0x0311)||788[[BR]](0x0314)||791[[BR]](0x0317)||794[[BR]](0x031A)||866[[BR]](0x0362)||798[[BR]](0x031E)|| ||24 bit,[[BR]]16,7 Mio Farben||786[[BR]](0x0312)||789[[BR]](0x0315)||792[[BR]](0x0318)||795[[BR]](0x031B)||867[[BR]](0x0363)||799[[BR]](0x031F)|| ||<-7>~-(^^(*)^^)-~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/[:Archiv/menu.lst:menu.lst]''' ein [3]: == 915resolution == (Dieser Abschnitt betrifft nur Nutzer von Intel-Grafikchips. Andere können beim Abschnitt GRUB-Konfiguration weiterlesen.) {{{#!vorlage Warnung 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 [http://915resolution.mango-lang.org/ mango.lang.org] {en} 915resolution herunter und entpackt es. In dem Ordner führt man dann den Befehl {{{#!vorlage Befehl sudo make install }}} aus. === Bestimmen der notwendigen Optionen === Mittels {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 915resolution -c 945GM 5c 1024 600 24 }}} === Einfügen ins initramfs === {{{#!vorlage Experten 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 [:man:Manpage] zu initramfs-tools verwiesen. }}} Nun erstellt man in '''/etc/initramfs-tools/scripts/init-top''' eine Textdatei namens '''915resolution''' mit folgendem Inhalt: {{{#!code bash #!/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:]): {{{#!vorlage Befehl 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: {{{#!code bash #!/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: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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 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: {{{#!vorlage Befehl sudo update-grub }}} eingegeben, um die Änderungen zu übernehmen. Nach einem Neustart sollte das Terminal in der gewünschten Auflösung erstrahlen. {{{#!vorlage Warnung 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 {{{#!vorlage Paketinstallation fbset }}} oder die Verwendung von `uvesafb` mit expliziter Angabe der Wiederholfrequenz (z.B. `video=uvesafb:mode_option=1280x1024-16@60`). = Links = * [wikipedia_en:VBE#Linux_video_mode_numbers: VESA Video Modes] {en} * [http://915resolution.mango-lang.org/ Projektseite 915resolution] {en} # tag: System, Booten, GRUB, GRUB 2, Server