Linux framebuffer

Abstraction layer for Linux kernel to show graphics on the system console

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources.
Find sources: "Linux framebuffer" – news · newspapers · books · scholar · JSTOR (March 2011) (Learn how and when to remove this message)

|

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Linux framebuffer" – news · newspapers · books · scholar · JSTOR (March 2010) (Learn how and when to remove this message)

|

(Learn how and when to remove this message)

Knoppix booting on the framebuffer

The framebuffer subsystem in the Linux kernel fbdev is used to show graphics on a computer monitor, typically on the system console.[1]

It was designed as a hardware-independent API to give user space software access to the framebuffer (the part of a computer's video memory containing a current video frame) using only the Linux kernel's own basic facilities and its device file system interface, avoiding the need for libraries like SVGAlib which effectively implemented video drivers in user space.

In most applications, fbdev has been superseded by the Linux Direct Rendering Manager (DRM) subsystem, but as of 2022, several drivers provide both DRM and fbdev APIs for backwards compatibility with software that has not been updated to use the DRM system, and there are still fbdev drivers for older (mostly embedded) hardware that does not have a DRM driver.[2]

## Applications

[edit]

There are three applications of the Linux framebuffer:

* An implementation of text Linux console that doesn't use hardware text mode (useful when that mode is unavailable, or to overcome its restrictions on glyph size, number of code points, etc.). One popular aspect of this is the ability to have console show the Tux logo at boot up.
* A graphic output method for a display server, independent of video adapter hardware and its drivers.
* Graphic programs avoiding the overhead of the X Window System.

Examples of the third application include Linux programs such as MPlayer, links2, NetSurf, w3m, fbff,[3] fbida,[4] and fim,[5] and libraries such as GLUT, SDL (version 1.2), GTK, and Qt, which can all use the framebuffer directly.[6] This use case is particularly popular in embedded systems.

The now defunct[7] DirectFB is another project aimed at providing a framework for hardware acceleration of the Linux framebuffer.

There was also a windowing system called FramebufferUI (fbui) implemented in kernel space that provided a basic two-dimensional windowing experience with very little memory use.[8]

## History

[edit]

Linux has had generic framebuffer support since the 2.1.109 kernel.[9]

It was originally implemented to allow the kernel to emulate a text console on systems such as the Apple Macintosh that do not have a text-mode display, and was later expanded to the IBM PC compatible platform.

## See also

[edit]

* Free and open-source software portal

* Direct Rendering Infrastructure
* Kernel mode setting

## References

[edit]

1. ^ The Frame Buffer Device, Linux Kernel Documentation
2. ^ "Developer Steps up Wanting to Maintain Linux's FBDEV Subsystem".
3. ^ fbff media player repository, GitHub
4. ^ fbi/fbida image viewer homepage
5. ^ FIM (Fbi IMproved) image viewer homepage
6. ^ HiGFXback (History of graphics backends) project with the Linux Framebuffer graphics backend, GitHub
7. ^ "DirectFB Is Back To Being Dormant". www.phoronix.com. Retrieved 2024-01-01.
8. ^ Framebuffer UI (fbui) in-kernel Linux windowing system, GitHub
9. ^ Buell, Alex (5 August 2010). "Framebuffer HOWTO". tldp.org. Archived from the original on 10 December 2023 – via Internet Archive.

## External links

[edit]

* Linux framebuffer on SourceForge
* XFree86 doc

* v
* t
* e

Linux kernel

Organization|

| Kernel|

* Linux Foundation
* Linux Mark Institute
* Linus's law
* Tanenbaum–Torvalds debate
* Tux
* SCO disputes
* Linaro
* GNU GPL v2
* menuconfig
* Supported computer architectures
* Version history
* Criticism

|

Support|

* Developers
* The Linux Programming Interface
* kernel.org
* LKML
* Linux conferences
* Users
* Linux User Group (LUG)

People|

* Werner Almesberger
* H. Peter Anvin
* Jens Axboe
* Moshe Bar
* Suparna Bhattacharya
* Andries Brouwer
* Rémy Card
* Alan Cox
* Matthew Garrett
* Avi Kivity
* Con Kolivas
* Greg Kroah-Hartman
* Benson Leung
* Robert Love
* David S. Miller
* Ingo Molnár
* Andrew Morton
* Hans Reiser
* Rusty Russell
* Shuah Khan
* Linus Torvalds
* Theodore Ts'o
* Stephen Tweedie
* Harald Welte
* Chris Wright

Technical|

| Debugging|

* CRIU
* ftrace
* kdump
* Linux kernel oops
* SystemTap
* BPF

|

Startup|

* vmlinux
* System.map
* dracut
* initrd
* initramfs

ABIs|

* Linux Standard Base
* x32 ABI

APIs|

| Kernel|

| System Call
Interface|

* POSIX
* ioctl
* select
* open
* read
* close
* sync
* …
* Linux-only
* futex
* epoll
* splice
* dnotify
* inotify
* readahead
* …

|

In-kernel|

* ALSA
* Crypto API
* io uring
* DRM
* kernfs
* Memory barrier
* New API
* RCU
* Video4Linux
* IIO

Userspace|

| Daemons,
File systems|

* bpffs
* configfs
* devfs
* devpts
* debugfs
* FUSE
* hugetlbfs
* pipefs
* procfs
* securityfs
* sockfs
* sysfs
* tmpfs
* systemd
* udev
* Kmscon
* binfmt_misc

|

Wrapper
libraries|

* C standard library
* glibc
* uClibc
* Bionic
* libhybris
* dietlibc
* EGLIBC
* klibc
* musl
* Newlib
* libcgroup
* libdrm
* libalsa
* libevdev
* libusb
* liburing

Components|

* Kernel modules
* BlueZ
* cgroups
* Console
* bcache
* Device mapper
* dm-cache
* dm-crypt
* DRM
* EDAC
* evdev
* Kernel same-page merging (KSM)
* LIO
* Framebuffer
* LVM
* KMS driver
* Netfilter
* Netlink
* nftables
* Network scheduler
* perf
* SLUB
* zram
* zswap

* Process and I/O schedulers:
* Brain Fuck Scheduler
* Completely Fair Scheduler (CFS)
* Earliest eligible virtual deadline first (EEVDF)
* Noop scheduler
* O(n) scheduler
* O(1) scheduler
* SCHED_DEADLINE
* SCHED_FIFO
* SCHED_RR

* Security Modules: AppArmor
* Exec Shield
* seccomp
* SELinux
* Smack
* Tomoyo Linux
* Linux PAM

* Device drivers
* 802.11
* graphics
* Raw device

* initramfs
* KernelCare
* kexec
* kGraft
* kpatch
* Ksplice

Variants|

* Mainline
* Linux kernel
* Linux-libre
* High-performance computing
* INK
* Compute Node Linux
* SLURM
* Real-time computing
* RTLinux
* RTAI
* Xenomai
* PREEMPT_RT
* MMU-less
* μClinux
* PSXLinux

| Virtualization|

* Hypervisor
* KVM
* Xen
* OS-level virtualization
* Linux-VServer
* Lguest
* LXC
* OpenVZ
* Other
* L4Linux
* User-mode Linux
* MkLinux
* coLinux

|

Adoption|

| Range
of use|

* Desktop
* Embedded
* Gaming
* Thin client:
* LTSP
* Server:
* LAMP
* LYME-LYCE
* Devices

|

Adopters|

* List of Linux adopters

* Linux portal
* Free and open-source software portal
* Category

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template