Grub 2 + Frame Buffer + Intel

Certaines fois, on part d’un besoin banal, on se retrouve à chercher dans la documentation d’une application à priori sans rapport…

Mon souci de départ était de pouvoir avoir un frame buffer avec pour résolution celle native de l’écran de mon portable: 1024×600, or le kernel actuel (2.6.27 sous archlinux) ne permet pas pour l’instant d’avoir cette résolution avec une Intel 945GME, et il est impossible (ou je n’ai pas trouvé) d’en changer une fois le système démarré.

Suite à des recherches, il apparait qu’il est possible de fixer cette résolution depuis grub 2 (j’aurais jamais fait le lien tout seul…), mais il est nécessaire de patcher grub à l’aide du patch de Nathan Coulson.

Il reste plus qu’à appliquer ceci au paquet grub2 d’archlinux, un PKGBUILD est disponible sous AUR sous le nom de grub2-915resolution.

J’ai du modifier le patch (juste une histoire de ligne) pour le rendre compatible avec la version grub d’archlinux et j’en ai profité pour y inclure un fichier de police afin de permettre à grub de basculer sur un mode graphique.

Pour installer ce paquet sous une version 64 bits, il faut modifier la variable DESTARCH dans le PKGBUILD et le compiler sous une machine i686.

Pour la configuration de base, le fichier par défaut est assez explicite, il faut juste faire attention aux numéros de partitions qui contrairement à grub 1er du nom commencent à 1 et non à 0.

Mais modifions ce fichier pour activer la résolution voulue ainsi que le mode graphique de grub2, mon fichier de configuration:

# Config file for GRUB2 - The GNU GRand Unified Bootloader
# /boot/grub/grub.cfg

# Timeout for menu
set timeout=0

# Set default boot entry as Entry 0
set default=0

set root=(hd0,1)

insmod 915resolution
insmod gfxterm
insmod video
insmod jpeg
insmod vbe

# Change le mode de l'interface vesa de la carte intel
915resolution 32 1024 600
# Charge le fichier de polices
font (hd0,2)/usr/share/grub/unicode.pff
# Définit la liste de résolutions à définir
set gfxmode="1024x600x32;1024x768x32;"
# Passe en mode graphique
terminal_output gfxterm
# Charge une image de fond
background_image (hd0,1)/grub/bg.jpg

# (0) Arch Linux
menuentry "Arch Linux" {
linux /vmlinuz26 root=/dev/disk/by-uuid/c2b4f4d8-c996-4c67-ab02-8ba48baf625b ro  resume=/dev/sda3 quiet pci=nomsi vga=789
initrd /kernel26.img
}

menuentry "Arch Linux Fallback" {
linux /vmlinuz26 root=/dev/disk/by-uuid/c2b4f4d8-c996-4c67-ab02-8ba48baf625b ro  resume=/dev/sda3 quiet pci=nomsi vga=789
initrd /kernel26-fallback.img
}

menuentry "Arch Linux runlevel 3" {
linux /vmlinuz26 root=/dev/disk/by-uuid/c2b4f4d8-c996-4c67-ab02-8ba48baf625b ro  resume=/dev/sda3 quiet pci=nomsi vga=789 3
initrd /kernel26.img
}

Ce qui donne:

Grub 1.96

Du coup, mon besoin d’origine est satisfait, je peux utiliser mon portable en frame buffer pour voir un film par exemple, ce qui me fait, entre autre, économiser de la batterie et en sus, j’ai un meilleur aspect pour le chargeur de démarrage, même si en fin de compte, je ne le vois même pas :-)

Vu que je ne le vois pas, je me suis arrêté ici, mais pour ceux qui cherchent à rendre plus attrayant leur chargeur de démarrage, vous pouvez jeter un coup d’oeil aux lien suivants:
Grub 2 menu
Discussion sur le forum anglais d’archlinux pourvue d’exemples multiples.

Par contre, n’oubliez pas que ce n’est pas anodin de modifier le chargeur de démarrage ou son fichier de configuration, gardez sous la main une clé ou cd sur lequel vous pourrez démarrer au cas où, et je ne peux que vous conseiller de tester les commandes directement dans la console grub avant de les écrire dans le fichier de configuration.

Commentaires (3)