[wellylug] Framebuffer troubles
jumbophut at gmail.com
Fri Jan 7 13:17:55 NZDT 2005
On Fri, 07 Jan 2005 11:18:28 +1300, Cliff Pratt wrote:
> jumbophut wrote:
> > I was under the impression that vesafb uses the BIOS to set the video
> > mode and only works in real mode, so that loading the module in a bash
> > script (which is what the initrd does) after boot is not going to
> > work.
> As I understand it, the initrd is for exactly this situation
> - it loads the modules that are *required* at boot time, eg
> scsi drivers, sata drivers and whatnot.
I've been doing some more digging. My current understanding is:
1) The vesafb code needs to be run in real mode, which means early in
the kernel boot (see vesafb.c in the kernel source).
2) Only one kernel is ever loaded, whether initrd is used or not. It
loads completely before the initrd file system is mounted, which -- I
understand -- is well after the kernel switches from real to protected
3) The initrd just runs a shell script (linuxrc), which attempts to
load modules, mount the real root file system and change the root to
the real root file system.
4) All the modules load fine, except vesafb, which can't load because
the kernel has switched to protected mode some time ago.
I wondered if I might be missing some trick to load the module in
protected mode (e.g. BIOS emulation, or using Gentoo vesafb-tng
patches). If not, I just don't understand why the stock Debian
2.6.8-1 kernel, which _requires_ initrd, would make vesafb a module
rather than compiling it in.
Is anybody else using Debian 2.6.8-1 with initrd? If so, I'd be
interested to know if vesafb fails to load (dmesg | grep vesafb would
tell you). You wouldn't even notice if you were running X by default,
since everything can be supported in X without vesafb. I'm not
running X, so I do notice.
I'll report this to the Debian guys if I'm not the only person having a problem.
> When you say "it fails", what exactly happens?
It fails to probe with error -6 (I have no idea what that is).
I'm sort of resigning myself to recompiling the kernel, which means --
yechhh! -- installing all the devel tools.
Tony (echo 'spend!,pocket awide' | sed 'y/acdeikospntw!, /l at omcgtjuba.phi/')
More information about the wellylug