]>
Commit | Line | Data |
---|---|---|
efb985f6 AD |
1 | The Framebuffer Console |
2 | ======================= | |
3 | ||
4 | The framebuffer console (fbcon), as its name implies, is a text | |
5 | console running on top of the framebuffer device. It has the functionality of | |
6 | any standard text console driver, such as the VGA console, with the added | |
7 | features that can be attributed to the graphical nature of the framebuffer. | |
8 | ||
9 | In the x86 architecture, the framebuffer console is optional, and | |
10 | some even treat it as a toy. For other architectures, it is the only available | |
11 | display device, text or graphical. | |
12 | ||
13 | What are the features of fbcon? The framebuffer console supports | |
14 | high resolutions, varying font types, display rotation, primitive multihead, | |
15 | etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature | |
16 | made available by the underlying graphics card are also possible. | |
17 | ||
18 | A. Configuration | |
19 | ||
20 | The framebuffer console can be enabled by using your favorite kernel | |
21 | configuration tool. It is under Device Drivers->Graphics Support->Support for | |
22 | framebuffer devices->Framebuffer Console Support. Select 'y' to compile | |
23 | support statically, or 'm' for module support. The module will be fbcon. | |
24 | ||
25 | In order for fbcon to activate, at least one framebuffer driver is | |
26 | required, so choose from any of the numerous drivers available. For x86 | |
27 | systems, they almost universally have VGA cards, so vga16fb and vesafb will | |
28 | always be available. However, using a chipset-specific driver will give you | |
29 | more speed and features, such as the ability to change the video mode | |
30 | dynamically. | |
31 | ||
32 | To display the penguin logo, choose any logo available in Logo | |
33 | Configuration->Boot up logo. | |
34 | ||
35 | Also, you will need to select at least one compiled-in fonts, but if | |
36 | you don't do anything, the kernel configuration tool will select one for you, | |
37 | usually an 8x16 font. | |
38 | ||
39 | GOTCHA: A common bug report is enabling the framebuffer without enabling the | |
40 | framebuffer console. Depending on the driver, you may get a blanked or | |
41 | garbled display, but the system still boots to completion. If you are | |
42 | fortunate to have a driver that does not alter the graphics chip, then you | |
43 | will still get a VGA console. | |
44 | ||
45 | B. Loading | |
46 | ||
47 | Possible scenarios: | |
48 | ||
49 | 1. Driver and fbcon are compiled statically | |
50 | ||
51 | Usually, fbcon will automatically take over your console. The notable | |
52 | exception is vesafb. It needs to be explicitly activated with the | |
53 | vga= boot option parameter. | |
54 | ||
55 | 2. Driver is compiled statically, fbcon is compiled as a module | |
56 | ||
57 | Depending on the driver, you either get a standard console, or a | |
58 | garbled display, as mentioned above. To get a framebuffer console, | |
59 | do a 'modprobe fbcon'. | |
60 | ||
61 | 3. Driver is compiled as a module, fbcon is compiled statically | |
62 | ||
63 | You get your standard console. Once the driver is loaded with | |
64 | 'modprobe xxxfb', fbcon automatically takes over the console with | |
65 | the possible exception of using the fbcon=map:n option. See below. | |
66 | ||
67 | 4. Driver and fbcon are compiled as a module. | |
68 | ||
69 | You can load them in any order. Once both are loaded, fbcon will take | |
70 | over the console. | |
71 | ||
72 | C. Boot options | |
73 | ||
74 | The framebuffer console has several, largely unknown, boot options | |
75 | that can change its behavior. | |
76 | ||
77 | 1. fbcon=font:<name> | |
78 | ||
79 | Select the initial font to use. The value 'name' can be any of the | |
80 | compiled-in fonts: VGA8x16, 7x14, 10x18, VGA8x8, MINI4x6, RomanLarge, | |
81 | SUN8x16, SUN12x22, ProFont6x11, Acorn8x8, PEARL8x8. | |
82 | ||
83 | Note, not all drivers can handle font with widths not divisible by 8, | |
84 | such as vga16fb. | |
85 | ||
86 | 2. fbcon=scrollback:<value>[k] | |
87 | ||
88 | The scrollback buffer is memory that is used to preserve display | |
89 | contents that has already scrolled past your view. This is accessed | |
90 | by using the Shift-PageUp key combination. The value 'value' is any | |
91 | integer. It defaults to 32KB. The 'k' suffix is optional, and will | |
92 | multiply the 'value' by 1024. | |
93 | ||
94 | 3. fbcon=map:<0123> | |
95 | ||
96 | This is an interesting option. It tells which driver gets mapped to | |
97 | which console. The value '0123' is a sequence that gets repeated until | |
98 | the total length is 64 which is the number of consoles available. In | |
99 | the above example, it is expanded to 012301230123... and the mapping | |
100 | will be: | |
101 | ||
102 | tty | 1 2 3 4 5 6 7 8 9 ... | |
103 | fb | 0 1 2 3 0 1 2 3 0 ... | |
104 | ||
105 | ('cat /proc/fb' should tell you what the fb numbers are) | |
106 | ||
107 | One side effect that may be useful is using a map value that exceeds | |
108 | the number of loaded fb drivers. For example, if only one driver is | |
109 | available, fb0, adding fbcon=map:1 tells fbcon not to take over the | |
110 | console. | |
111 | ||
112 | Later on, when you want to map the console the to the framebuffer | |
113 | device, you can use the con2fbmap utility. | |
114 | ||
115 | 4. fbcon=vc:<n1>-<n2> | |
116 | ||
117 | This option tells fbcon to take over only a range of consoles as | |
118 | specified by the values 'n1' and 'n2'. The rest of the consoles | |
119 | outside the given range will still be controlled by the standard | |
120 | console driver. | |
121 | ||
122 | NOTE: For x86 machines, the standard console is the VGA console which | |
123 | is typically located on the same video card. Thus, the consoles that | |
124 | are controlled by the VGA console will be garbled. | |
125 | ||
126 | 4. fbcon=rotate:<n> | |
127 | ||
128 | This option changes the orientation angle of the console display. The | |
129 | value 'n' accepts the following: | |
130 | ||
131 | 0 - normal orientation (0 degree) | |
132 | 1 - clockwise orientation (90 degrees) | |
133 | 2 - upside down orientation (180 degrees) | |
134 | 3 - counterclockwise orientation (270 degrees) | |
135 | ||
136 | The angle can be changed anytime afterwards by 'echoing' the same | |
137 | numbers to any one of the 2 attributes found in | |
138 | /sys/class/graphics/fb{x} | |
139 | ||
140 | con_rotate - rotate the display of the active console | |
141 | con_rotate_all - rotate the display of all consoles | |
142 | ||
143 | Console rotation will only become available if Console Rotation | |
144 | Support is compiled in your kernel. | |
145 | ||
146 | NOTE: This is purely console rotation. Any other applications that | |
147 | use the framebuffer will remain at their 'normal'orientation. | |
148 | Actually, the underlying fb driver is totally ignorant of console | |
149 | rotation. | |
150 | ||
151 | --- | |
152 | Antonino Daplas <adaplas@pol.net> |