Add documentation as Documentation/fb/fbcon.txt describing the framebuffer console and its boot options. Signed-off-by: Antonino Daplas <adaplas@pol.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>tirimbino
parent
a812c94b94
commit
efb985f6b2
@ -0,0 +1,152 @@ |
||||
The Framebuffer Console |
||||
======================= |
||||
|
||||
The framebuffer console (fbcon), as its name implies, is a text |
||||
console running on top of the framebuffer device. It has the functionality of |
||||
any standard text console driver, such as the VGA console, with the added |
||||
features that can be attributed to the graphical nature of the framebuffer. |
||||
|
||||
In the x86 architecture, the framebuffer console is optional, and |
||||
some even treat it as a toy. For other architectures, it is the only available |
||||
display device, text or graphical. |
||||
|
||||
What are the features of fbcon? The framebuffer console supports |
||||
high resolutions, varying font types, display rotation, primitive multihead, |
||||
etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature |
||||
made available by the underlying graphics card are also possible. |
||||
|
||||
A. Configuration |
||||
|
||||
The framebuffer console can be enabled by using your favorite kernel |
||||
configuration tool. It is under Device Drivers->Graphics Support->Support for |
||||
framebuffer devices->Framebuffer Console Support. Select 'y' to compile |
||||
support statically, or 'm' for module support. The module will be fbcon. |
||||
|
||||
In order for fbcon to activate, at least one framebuffer driver is |
||||
required, so choose from any of the numerous drivers available. For x86 |
||||
systems, they almost universally have VGA cards, so vga16fb and vesafb will |
||||
always be available. However, using a chipset-specific driver will give you |
||||
more speed and features, such as the ability to change the video mode |
||||
dynamically. |
||||
|
||||
To display the penguin logo, choose any logo available in Logo |
||||
Configuration->Boot up logo. |
||||
|
||||
Also, you will need to select at least one compiled-in fonts, but if |
||||
you don't do anything, the kernel configuration tool will select one for you, |
||||
usually an 8x16 font. |
||||
|
||||
GOTCHA: A common bug report is enabling the framebuffer without enabling the |
||||
framebuffer console. Depending on the driver, you may get a blanked or |
||||
garbled display, but the system still boots to completion. If you are |
||||
fortunate to have a driver that does not alter the graphics chip, then you |
||||
will still get a VGA console. |
||||
|
||||
B. Loading |
||||
|
||||
Possible scenarios: |
||||
|
||||
1. Driver and fbcon are compiled statically |
||||
|
||||
Usually, fbcon will automatically take over your console. The notable |
||||
exception is vesafb. It needs to be explicitly activated with the |
||||
vga= boot option parameter. |
||||
|
||||
2. Driver is compiled statically, fbcon is compiled as a module |
||||
|
||||
Depending on the driver, you either get a standard console, or a |
||||
garbled display, as mentioned above. To get a framebuffer console, |
||||
do a 'modprobe fbcon'. |
||||
|
||||
3. Driver is compiled as a module, fbcon is compiled statically |
||||
|
||||
You get your standard console. Once the driver is loaded with |
||||
'modprobe xxxfb', fbcon automatically takes over the console with |
||||
the possible exception of using the fbcon=map:n option. See below. |
||||
|
||||
4. Driver and fbcon are compiled as a module. |
||||
|
||||
You can load them in any order. Once both are loaded, fbcon will take |
||||
over the console. |
||||
|
||||
C. Boot options |
||||
|
||||
The framebuffer console has several, largely unknown, boot options |
||||
that can change its behavior. |
||||
|
||||
1. fbcon=font:<name> |
||||
|
||||
Select the initial font to use. The value 'name' can be any of the |
||||
compiled-in fonts: VGA8x16, 7x14, 10x18, VGA8x8, MINI4x6, RomanLarge, |
||||
SUN8x16, SUN12x22, ProFont6x11, Acorn8x8, PEARL8x8. |
||||
|
||||
Note, not all drivers can handle font with widths not divisible by 8, |
||||
such as vga16fb. |
||||
|
||||
2. fbcon=scrollback:<value>[k] |
||||
|
||||
The scrollback buffer is memory that is used to preserve display |
||||
contents that has already scrolled past your view. This is accessed |
||||
by using the Shift-PageUp key combination. The value 'value' is any |
||||
integer. It defaults to 32KB. The 'k' suffix is optional, and will |
||||
multiply the 'value' by 1024. |
||||
|
||||
3. fbcon=map:<0123> |
||||
|
||||
This is an interesting option. It tells which driver gets mapped to |
||||
which console. The value '0123' is a sequence that gets repeated until |
||||
the total length is 64 which is the number of consoles available. In |
||||
the above example, it is expanded to 012301230123... and the mapping |
||||
will be: |
||||
|
||||
tty | 1 2 3 4 5 6 7 8 9 ... |
||||
fb | 0 1 2 3 0 1 2 3 0 ... |
||||
|
||||
('cat /proc/fb' should tell you what the fb numbers are) |
||||
|
||||
One side effect that may be useful is using a map value that exceeds |
||||
the number of loaded fb drivers. For example, if only one driver is |
||||
available, fb0, adding fbcon=map:1 tells fbcon not to take over the |
||||
console. |
||||
|
||||
Later on, when you want to map the console the to the framebuffer |
||||
device, you can use the con2fbmap utility. |
||||
|
||||
4. fbcon=vc:<n1>-<n2> |
||||
|
||||
This option tells fbcon to take over only a range of consoles as |
||||
specified by the values 'n1' and 'n2'. The rest of the consoles |
||||
outside the given range will still be controlled by the standard |
||||
console driver. |
||||
|
||||
NOTE: For x86 machines, the standard console is the VGA console which |
||||
is typically located on the same video card. Thus, the consoles that |
||||
are controlled by the VGA console will be garbled. |
||||
|
||||
4. fbcon=rotate:<n> |
||||
|
||||
This option changes the orientation angle of the console display. The |
||||
value 'n' accepts the following: |
||||
|
||||
0 - normal orientation (0 degree) |
||||
1 - clockwise orientation (90 degrees) |
||||
2 - upside down orientation (180 degrees) |
||||
3 - counterclockwise orientation (270 degrees) |
||||
|
||||
The angle can be changed anytime afterwards by 'echoing' the same |
||||
numbers to any one of the 2 attributes found in |
||||
/sys/class/graphics/fb{x} |
||||
|
||||
con_rotate - rotate the display of the active console |
||||
con_rotate_all - rotate the display of all consoles |
||||
|
||||
Console rotation will only become available if Console Rotation |
||||
Support is compiled in your kernel. |
||||
|
||||
NOTE: This is purely console rotation. Any other applications that |
||||
use the framebuffer will remain at their 'normal'orientation. |
||||
Actually, the underlying fb driver is totally ignorant of console |
||||
rotation. |
||||
|
||||
--- |
||||
Antonino Daplas <adaplas@pol.net> |
Loading…
Reference in new issue