Framebuffer no Boot: 1400×900 com módulo NVIDIA
Encontrei um pequeno desafio para minha vida geek… hehehe.
Até então, estava eu utilizando um monitor de 15″ com resolução nativa de 1024×768; como disse, até então.
Consegui vender tal monitor LCD e com isso agora sou o felizardo dono de um Flatron W1752T (LG) (17″ Wide com resolução nativa de 1400×900).

Em um primeiro momento, nem dei muita bola para a resolução no boot (1024×768 ) e sim pela configuração no X (/etc/X11/xorg.conf), que me permitiu não fazer nada para que esta se auto ajustasse a nova resolução nativa, e eu deslumbrasse com o visual incrível com que o KDE 4.2 se mostrou.
Mais sabe como são as coisas nesta vida nerd (neh?)… nada nunca está perfeito! E toda vez quando nos deparamos com alguma imperfeição, o que fazemos? Sim, escovamos bits! (rss)
A primeira coisa que pensei, foi em simplesmente descobrir os “números mágicos“ que podem ser utilizados na parâmetro “vga” nas linhas referentes ao carregamento da imagem do kernel em /boot/grub/menu.lst que estaria tudo resolvido. Não deu certo, pois, por padrão, o módulo utilizado para fornecer o framebuffer no boot é o vesafb, e ele trabalha apenas com resoluções á 4:3 não suportando opções em 16:10.
Até eu descobrir isso, passou um tempo e precisei baixar o hwinfo no AUR , compilar e instalar o software. Depois de instalado rodei um hwinfo –framebuffer que me retornou os modos de operação:
02: None 00.0: 11001 VESA Framebuffer [Created at bios.447] Unique ID: rdCR.G89VdJ4sMmF Hardware Class: framebuffer Model: "NVIDIA G86 Board - p403h20 " Vendor: "NVIDIA Corporation" Device: "G86 Board - p403h20 " SubVendor: "NVIDIA" SubDevice: Revision: "Chip Rev" Memory Size: 14 MB Memory Range: 0xe9000000-0xe9dfffff (rw) (...) Mode 0x0364: 1440x900 (+1440), 8 bits Mode 0x0365: 1440x900 (+5760), 24 bits (...)
O “x” da questão é que o Módulo nvidia no kernel, estava carregado, e isso faz com que os modos suportados por ele sejam mostrados; estas resoluções, como disse, não são suportadas no vesafb.
Sabendo desse modo ( 0×0365), minha primeira tentativa foi passar o parâmetro para o kernel no carregamento do sistema. Para isso modifiquei a linha referente a isto em /boot/grub/menu.lst:
kernel /boot/vmlinuz26 root=/dev/mapper/nvidia_abacfabc3 video=vesafb:nomtrr,1440×900-32@60 vga=0×365 ro
Se repararem bem, faz sentido, mas em meu próximo boot, nada aconteceu! Por que?
Esta é mais simples de responder… hehehe.. simplesmente porque estou usando o vesafb e não o módulo nvidia. Para resolver meu problema, resolvi enfiar o módulo da nvidia diretamente na initrd (/boot/kernel26.img).
O procedimento é fácil… basta editar o arquivo /etc/mkinitcpio.conf, adicionando o módulo da nvidia na linha MODULES, deixando o arquivo conforme o exemplo:
MODULES=”dm_mod pata_acpi pata_amd ata_generic scsi_mod sata_nv sata_via jfs xfs reiserfs nvidia”
Após isto, salvei o arquivo e gerei uma nova imagem de disco de ram para o kernel através do mkinitcpio -p kernel26 . Então editei novamente o /boot/grub/menu.lst e fiz esta alteração:
kernel /boot/vmlinuz26 root=/dev/mapper/nvidia_abacfabc3 video=nvidiafb:nomtrr,1440×900-32@60 vga=0×365 ro
Salvei, reiniciei e voilá.. funcionando perfeitamente; como eu queria:
- Resolução de boot a 1440×900.
Só não tentei utilizar o nvidiafb antes de carregar o módulo da nvidia na initrd.. então não sei responder no momento se este passo do mkinitcpio seria necessário. Coisa linda ficou o modo verbose no boot de meu linux assim!
Algumas informações podem ser encontradas nos links abaixo:
http://bbs.archlinux.org/viewtopic.php?id=25133
http://tldp.org/HOWTO/Framebuffer-HOWTO-5.html
http://www.mail-archive.com/debian-user-portuguese@lists.debian.org/msg107891.html








RSS - Posts
ehehhe…
Ô saudade dessas coisas de nerd..
;)