Manuelle Installation von uvesafb, der Nachfolger von vesafb
In den neueren Linux-Kernel ist anstelle vom alten vesafb das uvesafb Modul enthalten, welches sich ebenfalls hervorragend zum Nutzen einer hochauflösenden Konsole eignet. Allerdings wird hierfür ein weiteres Programm benötigt, namens v86d, welches unbedingt benötigt wird, da es eine Brücke zwischen Grafikkarte und dem Kernel darstellt.
Dieses Packet v86d ist in der Version 0.1.5 in gewissen Ubuntuquellen vorhanden, allerdings eignet sich diese Version nicht, da sie gegen falsche Abhängigkeiten gelinkt wurde. Deshalb holt man sich kurzentschlossen die neue Version 0.1.6 auf http://dev.gentoo.org/~spock/projects/uvesafb/ und entpackt sie in /opt/
Um nun das Packet nun selber zu bauen werden Kernelquellen benötigt, am besten die von den Ubuntu-Repos mit der aktuellen Config-Datei aus /boot/ als Grundlage Siehe hierzu folgenden Wiki Eintrag //wiki.ubuntuusers.de/Kernel:
Man entpacke den Kernel im Verzeichnis /usr/src/ und erstelle dann einen symbolischen link auf das Quellverzeichnis linux im gleichen Ordner, also z.b.
root@PrinzIP:/usr/src# ln -s ./linux-source-2.6.27 ./linux
Man wechselt man ins Quellenverzeichnis.
Nun bearbeitet man den Kernel mit
make menuconfig
und ändert folgende Module die man in der Kategorie "Device" findet, indem man sie fest in den Kernel einbaut (also ein * (Sternchen) statt M (Modul))
Device Drivers –→ Connector - unified userspace ←> kernelspace linker und Device Drivers –→ Graphics support –→ Support for frame buffer devices –→ Userspace VESA VGA graphics support
und als letztes unter General Setup ––→ unter der Stelle Initial RAM Filesystem folgende location eingeben /opt/v86d-0.1.6/misc/initramfs
nun diese Konfiguration speichern und den Kernel folgendermaßen bauen (mit initrd und am besten mit Headers, die kann man später immer brauchen)
root@PrinzIP:/usr/src/linux# make-kpkg --initrd kernel-image kernel-headers
anschließend installiert man den Kernel (ich musste dafür die ältere Kernelversion 2.6.27-1-generic entfernen, da es sonst zu Komplikationen mit der firmware gekommen wäre)
nun startet man den neuen Kernel neu, ACHTUNG: noch funktioniert es nicht, aber beim nächsten start!
Nun wechselt man ins Verzeichnis /opt/v86d-0.1.6/ und macht folgende 3 Schritte:
./configure --with-x86emu
anschließend baut man es und verlinkt auf das Source Verzeichnis vom Kernel, hier /usr/src/linux, falls man die Quellen an diesen Ort verlinkt hat, wie oben beschrieben
make KDIR=/usr/src/linux
← Eben das Verzeichnis zum Kernel Source
als letztes installiert man nun v86d als root mit
make install
Nun muss das Modul korrekt in den initramfs aufgenommen werden. Hierfür muss die Datei /usr/share/initramfs-tools/hooks/udev mit Rootrechten bearbeitet werden und, folgende Zeile hinzufügen:
copy_exec /sbin/v86d /sbin
anschließend folgende Datei mit Rootrechten bearbeiten /etc/initramfs-tools/modules und hier das modul uvesafb hinzufügen
Nun den initrd updaten mit
update-initramfs -u -k ''Kernelversion''
(Kernelversion ist die Ausgabe von uname -r)
und als letztes das Grubmenu bearbeiten /boot/grub/menu.lst und zwar nicht wie gehabt mit vga= sondern mit
video=uvesafb:1024x768-32,mtrr:3,ywrap,v86d
andere Einstellungsmöglichkeiten findet man unter http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/fb/framebuffer.txt;hb=HEAD
nach einem Neustart müsste jetzt sehr schöne Auflösung am start sein ☺