diff --git a/documentation/content/en/books/handbook/glossary.adoc b/documentation/content/en/books/handbook/glossary.adoc index de369e8d2f..005a10e66f 100644 --- a/documentation/content/en/books/handbook/glossary.adoc +++ b/documentation/content/en/books/handbook/glossary.adoc @@ -1,1078 +1,1096 @@ --- title: FreeBSD Glossary prev: books/handbook/pgpkeys next: books/handbook/colophon description: FreeBSD Handbook Glossary showBookMenu: true weight: 45 params: path: "/books/handbook/glossary/" --- [glossary] [[freebsd-glossary]] = FreeBSD Glossary :doctype: book :toc: macro :toclevels: 1 :icons: font :!sectnums: :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/glossary/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] This glossary contains terms and acronyms used within the FreeBSD community and documentation. [discrete] == A ACL:: See crossref:glossary[acl-glossary,Access Control List]. ACPI:: See crossref:glossary[acpi-glossary,Advanced Configuration and Power Interface]. AMD:: See crossref:glossary[amd-glossary,Automatic Mount Daemon]. AML:: See crossref:glossary[aml-glossary,ACPI Machine Language]. API:: See crossref:glossary[api-glossary,Application Programming Interface]. APIC:: See crossref:glossary[apic-glossary,Advanced Programmable Interrupt Controller]. APM:: See crossref:glossary[apm-glossary,Advanced Power Management]. APOP:: See crossref:glossary[apop-glossary,Authenticated Post Office Protocol]. ASL:: See crossref:glossary[asl-glossary,ACPI Source Language]. ATA:: See crossref:glossary[ata-glossary,Advanced Technology Attachment]. ATM:: See crossref:glossary[atm-glossary,Asynchronous Transfer Mode]. [[aml-glossary]] ACPI Machine Language:: Pseudocode, interpreted by a virtual machine within an ACPI-compliant operating system, providing a layer between the underlying hardware and the documented interface presented to the OS. [[asl-glossary]] ACPI Source Language:: The programming language AML is written in. [[acl-glossary]] Access Control List:: A list of permissions attached to an object, usually either a file or a network device. [[acpi-glossary]] Advanced Configuration and Power Interface:: A specification which provides an abstraction of the interface the hardware presents to the operating system, so that the operating system should need to know nothing about the underlying hardware to make the most of it. ACPI evolves and supersedes the functionality provided previously by APM, PNPBIOS and other technologies, and provides facilities for controlling power consumption, machine suspension, device enabling and disabling, etc. [[api-glossary]] Application Programming Interface:: A set of procedures, protocols and tools that specify the canonical interaction of one or more program parts; how, when and why they do work together, and what data they share or operate on. [[apm-glossary]] Advanced Power Management:: An API enabling the operating system to work in conjunction with the BIOS in order to achieve power management. APM has been superseded by the much more generic and powerful ACPI specification for most applications. [[apic-glossary]] Advanced Programmable Interrupt Controller:: {empty} [[ata-glossary]] Advanced Technology Attachment:: {empty} [[atm-glossary]] Asynchronous Transfer Mode:: {empty} [[apop-glossary]] Authenticated Post Office Protocol:: {empty} [[amd-glossary]] Automatic Mount Daemon:: A daemon that automatically mounts a filesystem when a file or directory within that filesystem is accessed. [discrete] == B BAR:: See crossref:glossary[bar-glossary,Base Address Register]. BIND:: See crossref:glossary[bind-glossary,Berkeley Internet Name Domain]. BIOS:: See crossref:glossary[bios-glossary,Basic Input/Output System]. BSD:: See crossref:glossary[bsd-glossary,Berkeley Software Distribution]. [[bar-glossary]] Base Address Register:: The registers that determine which address range a PCI device will respond to. [[bios-glossary]] Basic Input/Output System:: The definition of BIOS depends a bit on the context. Some people refer to it as the ROM chip with a basic set of routines to provide an interface between software and hardware. Others refer to it as the set of routines contained in the chip that help in bootstrapping the system. Some might also refer to it as the screen used to configure the bootstrapping process. The BIOS is PC-specific but other systems have something similar. [[bind-glossary]] Berkeley Internet Name Domain:: An implementation of the DNS protocols. [[bsd-glossary]] Berkeley Software Distribution:: This is the name that the Computer Systems Research Group (CSRG) at link:http://www.berkeley.edu[The University of California at Berkeley] gave to their improvements and modifications to AT&T's 32V UNIX(R). FreeBSD is a descendant of the CSRG work. [[bikeshed-glossary]] Bikeshed Building:: A phenomenon whereby many people will give an opinion on an uncomplicated topic, whilst a complex topic receives little or no discussion. See the extref:{faq}[FAQ, bikeshed-painting] for the origin of the term. [discrete] == C CD:: See crossref:glossary[cd-glossary,Carrier Detect]. CHAP:: See crossref:glossary[chap-glossary,Challenge Handshake Authentication Protocol]. CLIP:: See crossref:glossary[clip-glossary,Classical IP over ATM]. COFF:: See crossref:glossary[coff-glossary,Common Object File Format]. CPU:: See crossref:glossary[cpu-glossary,Central Processing Unit]. CTS:: See crossref:glossary[cts-glossary,Clear To Send]. [[cd-glossary]] Carrier Detect:: An RS232C signal indicating that a carrier has been detected. [[cpu-glossary]] Central Processing Unit:: Also known as the processor. This is the brain of the computer where all calculations take place. There are a number of different architectures with different instruction sets. Among the more well-known are the Intel-x86 and derivatives, Arm, and PowerPC. [[chap-glossary]] Challenge Handshake Authentication Protocol:: A method of authenticating a user, based on a secret shared between client and server. [[clip-glossary]] Classical IP over ATM:: {empty} [[cts-glossary]] Clear To Send:: An RS232C signal giving the remote system permission to send data. + See crossref:glossary[rts-glossary,Also Request To Send]. [[coff-glossary]] Common Object File Format:: {empty} [discrete] == D DAC:: See crossref:glossary[dac-glossary,Discretionary Access Control]. DDB:: See crossref:glossary[ddb-glossary,Debugger]. DES:: See crossref:glossary[des-glossary,Data Encryption Standard]. DHCP:: See crossref:glossary[dhcp-glossary,Dynamic Host Configuration Protocol]. DNS:: See crossref:glossary[dns-glossary,Domain Name System]. +DRM:: +See crossref:glossary[drm-glossary,Direct Rendering Manager]. + DSDT:: See crossref:glossary[dsdt-glossary,Differentiated System Description Table]. DSR:: See crossref:glossary[dsr-glossary,Data Set Ready]. DTR:: See crossref:glossary[dtr-glossary,Data Terminal Ready]. DVMRP:: See crossref:glossary[dvmrp-glossary,Distance-Vector Multicast Routing Protocol]. [[dac-glossary]] Discretionary Access Control:: {empty} [[des-glossary]] Data Encryption Standard:: A method of encrypting information, traditionally used as the method of encryption for UNIX(R) passwords and the man:crypt[3] function. [[dsr-glossary]] Data Set Ready:: An RS232C signal sent from the modem to the computer or terminal indicating a readiness to send and receive data. + See crossref:glossary[dtr-glossary,Also Data Terminal Ready]. [[dtr-glossary]] Data Terminal Ready:: An RS232C signal sent from the computer or terminal to the modem indicating a readiness to send and receive data. [[ddb-glossary]] Debugger:: An interactive in-kernel facility for examining the status of a system, often used after a system has crashed to establish the events surrounding the failure. [[dsdt-glossary]] Differentiated System Description Table:: An ACPI table, supplying basic configuration information about the base system. [[dvmrp-glossary]] Distance-Vector Multicast Routing Protocol:: {empty} [[dns-glossary]] Domain Name System:: The system that converts humanly readable hostnames (i.e., mail.example.net) to Internet addresses and vice versa. +[[drm-glossary]] +Direct Rendering Manager:: +The man:drm[7] kernel module allows client applications direct access to the graphical hardware via the Direct Rendering Infrastructure. + [[dhcp-glossary]] Dynamic Host Configuration Protocol:: A protocol that dynamically assigns IP addresses to a computer (host) when it requests one from the server. The address assignment is called a “lease”. [discrete] == E ECOFF:: See crossref:glossary[ecoff-glossary,Extended COFF]. ELF:: See crossref:glossary[elf-glossary,Executable and Linking Format]. ESP:: See crossref:glossary[esp-glossary,Encapsulated Security Payload]. Encapsulated Security Payload:: {empty} [[elf-glossary]] Executable and Linking Format:: {empty} [[ecoff-glossary]] Extended COFF:: {empty} [discrete] == F FADT:: See crossref:glossary[fadt-glossary,Fixed ACPI Description Table]. FAT:: See crossref:glossary[fat-glossary,File Allocation Table]. FAT16:: See crossref:glossary[fat16-glossary,File Allocation Table (16-bit)]. FTP:: See crossref:glossary[ftp-glossary,File Transfer Protocol]. [[fat-glossary]] File Allocation Table:: {empty} [[fat16-glossary]] File Allocation Table (16-bit):: {empty} [[ftp-glossary]] File Transfer Protocol:: A member of the family of high-level protocols implemented on top of TCP which can be used to transfer files over a TCP/IP network. [[fadt-glossary]] Fixed ACPI Description Table:: {empty} [discrete] == G GUI:: See crossref:glossary[gui-glossary,Graphical User Interface]. [[giant-glossary]] Giant:: The name of a mutual exclusion mechanism (a sleep `mutex`) that protects a large set of kernel resources. Although a simple locking mechanism was adequate in the days where a machine might have only a few dozen processes, one networking card, and certainly only one processor, in current times it is an unacceptable performance bottleneck. FreeBSD developers are actively working to replace it with locks that protect individual resources, which will allow a much greater degree of parallelism for both single-processor and multi-processor machines. [[gui-glossary]] Graphical User Interface:: A system where the user and computer interact with graphics. [discrete] == H HTML:: See crossref:glossary[html-glossary,HyperText Markup Language]. HUP:: See crossref:glossary[hup-glossary,HangUp]. [[hup-glossary]] HangUp:: {empty} [[html-glossary]] HyperText Markup Language:: The markup language used to create web pages. [discrete] == I I/O:: See crossref:glossary[io-glossary,Input/Output]. IASL:: See crossref:glossary[iasl-glossary,Intel’s ASL compiler]. IMAP:: See crossref:glossary[imap-glossary,Internet Message Access Protocol]. IP:: See crossref:glossary[ip-glossary,Internet Protocol]. IPFW:: See crossref:glossary[ipfw-glossary,IP Firewall]. IPP:: See crossref:glossary[ipp-glossary,Internet Printing Protocol]. IPv4:: See crossref:glossary[ipv4-glossary,IP Version 4]. IPv6:: See crossref:glossary[ipv6-glossary,IP Version 6]. ISP:: See crossref:glossary[isp-glossary,Internet Service Provider]. [[ipfw-glossary]] IP Firewall:: {empty} [[ipv4-glossary]] IP Version 4:: The IP protocol version 4, which uses 32 bits for addressing. This version is still the most widely used, but it is slowly being replaced with IPv6. + See crossref:glossary[ipv6-glossary,Also IP Version 6]. [[ipv6-glossary]] IP Version 6:: The new IP protocol. Invented because the address space in IPv4 is running out. Uses 128 bits for addressing. [[io-glossary]] Input/Output:: {empty} [[iasl-glossary]] Intel’s ASL compiler:: Intel’s compiler for converting ASL into AML. [[imap-glossary]] Internet Message Access Protocol:: A protocol for accessing email messages on a mail server, characterised by the messages usually being kept on the server as opposed to being downloaded to the mail reader client. + See Also Post Office Protocol Version 3. [[ipp-glossary]] Internet Printing Protocol:: {empty} [[ip-glossary]] Internet Protocol:: The packet transmitting protocol that is the basic protocol on the Internet. Originally developed at the U.S. Department of Defense and an extremely important part of the TCP/IP stack. Without the Internet Protocol, the Internet would not have become what it is today. For more information, see link:ftp://ftp.rfc-editor.org/in-notes/rfc791.txt[RFC 791]. [[isp-glossary]] Internet Service Provider:: A company that provides access to the Internet. [discrete] == K [[kame-glossary]] KAME:: Japanese for “turtle”, the term KAME is used in computing circles to refer to the link:http://www.kame.net/[KAME Project], who work on an implementation of IPv6. KDC:: See crossref:glossary[kdc-glossary,Key Distribution Center]. KLD:: See crossref:glossary[kld-glossary,Kernel ld(1)]. +KMS:: +See crossref:glossary[kms-glossary,Kernel Mode Setting]. + KSE:: See crossref:glossary[kse-glossary,Kernel Scheduler Entities]. KVA:: See crossref:glossary[kva-glossary,Kernel Virtual Address]. Kbps:: See crossref:glossary[kbps-glossary,Kilo Bits Per Second]. +[[kms-glossary]] +Setting the display mode in kernel space. + [[kld-glossary]] Kernel man:ld[1]:: A method of dynamically loading functionality into a FreeBSD kernel without rebooting the system. [[kse-glossary]] Kernel Scheduler Entities:: A kernel-supported threading system. See the link:http://www.freebsd.org/kse[project home page] for further details. [[kva-glossary]] Kernel Virtual Address:: {empty} [[kdc-glossary]] Key Distribution Center:: {empty} [[kbps-glossary]] Kilo Bits Per Second:: Used to measure bandwidth (how much data can pass a given point at a specified amount of time). Alternates to the Kilo prefix include Mega, Giga, Tera, and so forth. [discrete] == L LAN:: See crossref:glossary[lan-glossary,Local Area Network]. LOR:: See crossref:glossary[lor-glossary,Lock Order Reversal]. LPD:: See crossref:glossary[lpd-glossary,Line Printer Daemon]. [[lpd-glossary]] Line Printer Daemon:: {empty} [[lan-glossary]] Local Area Network:: A network used on a local area, e.g. office, home, or so forth. [[lor-glossary]] Lock Order Reversal:: The FreeBSD kernel uses a number of resource locks to arbitrate contention for those resources. A run-time lock diagnostic system found in FreeBSD-CURRENT kernels (but removed for releases), called man:witness[4], detects the potential for deadlocks due to locking errors. (man:witness[4] is actually slightly conservative, so it is possible to get false positives.) A true positive report indicates that “if you were unlucky, a deadlock would have happened here”. + True positive LORs tend to get fixed quickly, so check https://lists.FreeBSD.org/subscription/freebsd-current and the link:http://sources.zabbadoz.net/freebsd/lor.html[LORs Seen] page before posting to the mailing lists. [discrete] == M MAC:: See crossref:glossary[mac-glossary,Mandatory Access Control]. MADT:: See crossref:glossary[madt-glossary,Multiple APIC Description Table]. MFC:: See crossref:glossary[mfc-glossary,Merge From Current]. MFH:: See crossref:glossary[mfh-glossary,Merge From Head]. MFS:: See crossref:glossary[mfs-glossary,Merge From Stable]. MFV:: See crossref:glossary[mfv-glossary,Merge From Vendor]. MIT:: See crossref:glossary[mit-glossary,Massachusetts Institute of Technology]. MLS:: See crossref:glossary[mls-glossary,Multi-Level Security]. MOTD:: See crossref:glossary[motd-glossary,Message Of The Day]. MTA:: See crossref:glossary[mta-glossary,Mail Transfer Agent]. MUA:: See crossref:glossary[mua-glossary,Mail User Agent]. [[mta-glossary]] Mail Transfer Agent:: An application used to transfer email. An MTA has traditionally been part of the BSD base system. Today Sendmail is included in the base system, but there are many other MTAs, such as postfix, qmail and Exim. [[mua-glossary]] Mail User Agent:: An application used by users to display and write email. [[mac-glossary]] Mandatory Access Control:: {empty} [[mit-glossary]] Massachusetts Institute of Technology:: {empty} [[mfc-glossary]] Merge From Current:: To merge functionality or a patch from the -CURRENT branch to another, most often -STABLE. [[mfh-glossary]] Merge From Head:: To merge functionality or a patch from a repository HEAD to an earlier branch. [[mfs-glossary]] Merge From Stable:: In the normal course of FreeBSD development, a change will be committed to the -CURRENT branch for testing before being merged to -STABLE. On rare occasions, a change will go into -STABLE first and then be merged to -CURRENT. + This term is also used when a patch is merged from -STABLE to a security branch. + See crossref:glossary[mfc-glossary,Also Merge From Current]. [[mfv-glossary]] Merge From Vendor:: {empty} [[motd-glossary]] Message Of The Day:: A message, usually shown on login, often used to distribute information to users of the system. [[mls-glossary]] Multi-Level Security:: {empty} [[madt-glossary]] Multiple APIC Description Table:: {empty} [discrete] == N NAT:: See crossref:glossary[nat-glossary,Network Address Translation]. NDISulator:: See crossref:glossary[projectevil-glossary,Project Evil]. NFS:: See crossref:glossary[nfs-glossary,Network File System]. NTFS:: See crossref:glossary[ntfs-glossary,New Technology File System]. NTP:: See crossref:glossary[ntp-glossary,Network Time Protocol]. [[nat-glossary]] Network Address Translation:: A technique where IP packets are rewritten on the way through a gateway, enabling many machines behind the gateway to effectively share a single IP address. [[nfs-glossary]] Network File System:: {empty} [[ntfs-glossary]] New Technology File System:: A filesystem developed by Microsoft and available in its “New Technology” operating systems, such as Windows(R) 2000, Windows NT(R) and Windows(R) XP. [[ntp-glossary]] Network Time Protocol:: A means of synchronizing clocks over a network. [discrete] == O OBE:: See crossref:glossary[obe-glossary,Overtaken By Events]. ODMR:: See crossref:glossary[odmr-glossary,On-Demand Mail Relay]. OS:: See crossref:glossary[os-glossary,Operating System]. [[odmr-glossary]] On-Demand Mail Relay:: {empty} [[os-glossary]] Operating System:: A set of programs, libraries and tools that provide access to the hardware resources of a computer. Operating systems range today from simplistic designs that support only one program running at a time, accessing only one device to fully multi-user, multi-tasking and multi-process systems that can serve thousands of users simultaneously, each of them running dozens of different applications. [[obe-glossary]] Overtaken By Events:: Indicates a suggested change (such as a Problem Report or a feature request) which is no longer relevant or applicable due to such things as later changes to FreeBSD, changes in networking standards, the affected hardware having since become obsolete, and so forth. [discrete] == P PAE:: See crossref:glossary[pae-glossary,Physical Address Extensions]. PAM:: See crossref:glossary[pam-glossary,Pluggable Authentication Modules]. PAP:: See crossref:glossary[pap-glossary,Password Authentication Protocol]. PC:: See crossref:glossary[pc-glossary,Personal Computer]. PCNSFD:: See crossref:glossary[pcnfsd-glossary,Personal Computer Network File System Daemon]. PDF:: See crossref:glossary[pdf-glossary,Portable Document Format]. PID:: See crossref:glossary[pid-glossary,Process ID]. POLA:: See crossref:glossary[pola-glossary,Principle Of Least Astonishment]. POP:: See crossref:glossary[pop-glossary,Post Office Protocol]. POP3:: See crossref:glossary[pop3-glossary,Post Office Protocol Version 3]. PPD:: See crossref:glossary[ppd-glossary,PostScript Printer Description]. PPP:: See crossref:glossary[ppp-glossary,Point-to-Point Protocol]. PPPoA:: See crossref:glossary[pppoa-glossary,PPP over ATM]. PPPoE:: See crossref:glossary[pppoe-glossary,PPP over Ethernet]. [[pppoa-glossary]] PPP over ATM:: {empty} [[pppoe-glossary]] PPP over Ethernet:: {empty} PR:: See crossref:glossary[pr-glossary,Problem Report]. PXE:: See crossref:glossary[pxe-glossary,Preboot eXecution Environment]. [[pap-glossary]] Password Authentication Protocol:: {empty} [[pc-glossary]] Personal Computer:: {empty} [[pcnfsd-glossary]] Personal Computer Network File System Daemon:: {empty} [[pae-glossary]] Physical Address Extensions:: A method of enabling access to up to 64 GB of RAM on systems which only physically have a 32-bit wide address space (and would therefore be limited to 4 GB without PAE). [[pam-glossary]] Pluggable Authentication Modules:: {empty} [[ppp-glossary]] Point-to-Point Protocol:: {empty} [[pointyhat]] Pointy Hat:: A mythical piece of headgear, much like a dunce cap, awarded to any FreeBSD committer who breaks the build, makes revision numbers go backwards, or creates any other kind of havoc in the source base. Any committer worth his or her salt will soon accumulate a large collection. The usage is (almost always?) humorous. [[pdf-glossary]] Portable Document Format:: {empty} [[pop-glossary]] Post Office Protocol:: See Also Post Office Protocol Version 3. [[pop3-glossary]] Post Office Protocol Version 3:: A protocol for accessing email messages on a mail server, characterised by the messages usually being downloaded from the server to the client, as opposed to remaining on the server. + See crossref:glossary[imap-glossary,Also Internet Message Access Protocol]. [[ppd-glossary]] PostScript Printer Description:: {empty} [[pxe-glossary]] Preboot eXecution Environment:: {empty} [[pola-glossary]] Principle Of Least Astonishment:: As FreeBSD evolves, changes visible to the user should be kept as unsurprising as possible. For example, arbitrarily rearranging system startup variables in [.filename]#/etc/defaults/rc.conf# violates POLA. Developers consider POLA when contemplating user-visible system changes. +[[prime-glossary]] +PRIME:: +A method of multiple physical graphics coprocessors coexisting by +sharing their direct memory access buffers. + [[pr-glossary]] Problem Report:: A description of some kind of problem that has been found in either the FreeBSD source or documentation. See extref:{problem-reports}[Writing FreeBSD Problem Reports]. [[pid-glossary]] Process ID:: A number, unique to a particular process on a system, which identifies it and allows actions to be taken against it. [[projectevil-glossary]] Project Evil:: The working title for the NDISulator, written by Bill Paul, who named it referring to how awful it is (from a philosophical standpoint) to need to have something like this in the first place. The NDISulator is a special compatibility module to allow Microsoft Windows(TM) NDIS miniport network drivers to be used with FreeBSD/i386. This is usually the only way to use cards where the driver is closed-source. See [.filename]#src/sys/compat/ndis/subr_ndis.c#. [discrete] == R RA:: See crossref:glossary[ra-glossary,Router Advertisement]. RAID:: See crossref:glossary[raid-glossary,Redundant Array of Inexpensive Disks]. RAM:: See crossref:glossary[ram-glossary,Random Access Memory]. RD:: See crossref:glossary[rd-glossary,Received Data]. RFC:: See crossref:glossary[rfc-glossary,Request For Comments]. RISC:: See crossref:glossary[risc-glossary,Reduced Instruction Set Computer]. RPC:: See crossref:glossary[rpc-glossary,Remote Procedure Call]. RS232C:: See crossref:glossary[rs232c-glossary,Recommended Standard 232C]. RTS:: See crossref:glossary[rts-glossary,Request To Send]. [[ram-glossary]] Random Access Memory:: {empty} [[rcs-glossary]] Revision Control System:: The _Revision Control System (RCS)_ is one of the oldest software suites that implement “revision control” for plain files. It allows the storage, retrieval, archival, logging, identification and merging of multiple revisions for each file. RCS consists of many small tools that work together. It lacks some of the features found in more modern revision control systems, like Git, but it is very simple to install, configure, and start using for a small set of files. + See crossref:glossary[svn-glossary,Also Subversion]. [[rd-glossary]] Received Data:: An RS232C pin or wire that data is received on. + See crossref:glossary[td-glossary,Also Transmitted Data]. [[rs232c-glossary]] Recommended Standard 232C:: A standard for communications between serial devices. [[risc-glossary]] Reduced Instruction Set Computer:: An approach to processor design where the operations the hardware can perform are simplified but made as general purpose as possible. This can lead to lower power consumption, fewer transistors and in some cases, better performance and increased code density. Examples of RISC processors include the Alpha, SPARC(R), ARM(R) and PowerPC(R). [[raid-glossary]] Redundant Array of Inexpensive Disks:: {empty} [[rpc-glossary]] Remote Procedure Call:: {empty} [[rfc-glossary]] Request For Comments:: A set of documents defining Internet standards, protocols, and so forth. See www.rfc-editor.org. + Also used as a general term when someone has a suggested change and wants feedback. [[rts-glossary]] Request To Send:: An RS232C signal requesting that the remote system commences transmission of data. + See crossref:glossary[cts-glossary,Also Clear To Send]. [[ra-glossary]] Router Advertisement:: {empty} [discrete] == S SCI:: See crossref:glossary[sci-glossary,System Control Interrupt]. SCSI:: See crossref:glossary[scsi-glossary,Small Computer System Interface]. SG:: See crossref:glossary[sg-glossary,Signal Ground]. SLAAC:: See crossref:glossary[slaac-glossary,StateLess Address AutoConfiguration]. SMB:: See crossref:glossary[smb-glossary,Server Message Block]. SMP:: See crossref:glossary[smp-glossary,Symmetric MultiProcessor]. SMTP:: See crossref:glossary[smtp-glossary,Simple Mail Transfer Protocol]. SMTP AUTH:: See crossref:glossary[smtpauth-glossary,SMTP Authentication]. SSH:: See crossref:glossary[ssh-glossary,Secure Shell]. STR:: See crossref:glossary[str-glossary,Suspend To RAM]. SVN:: See crossref:glossary[svn-glossary,Subversion]. [[slaac-glossary]] StateLess Address AutoConfiguration:: {empty} [[smtpauth-glossary]] SMTP Authentication:: {empty} [[smb-glossary]] Server Message Block:: {empty} [[sg-glossary]] Signal Ground:: An RS232 pin or wire that is the ground reference for the signal. [[smtp-glossary]] Simple Mail Transfer Protocol:: {empty} [[ssh-glossary]] Secure Shell:: {empty} [[scsi-glossary]] Small Computer System Interface:: {empty} [[svn-glossary]] Subversion:: Subversion is a version control system currently used by the FreeBSD project. [[str-glossary]] Suspend To RAM:: {empty} [[smp-glossary]] Symmetric MultiProcessor:: {empty} [[sci-glossary]] System Control Interrupt:: {empty} [discrete] == T TCP:: See crossref:glossary[tcp-glossary,Transmission Control Protocol]. TCP/IP:: See crossref:glossary[tcpip-glossary,Transmission Control Protocol/Internet Protocol]. TD:: See crossref:glossary[td-glossary,Transmitted Data]. TFTP:: See crossref:glossary[tftp-glossary,Trivial FTP]. TGT:: See crossref:glossary[tgt-glossary,Ticket-Granting Ticket]. TSC:: See crossref:glossary[tsc-glossary,Time Stamp Counter]. [[tgt-glossary]] Ticket-Granting Ticket:: {empty} [[tsc-glossary]] Time Stamp Counter:: A profiling counter internal to modern Pentium(R) processors that counts core frequency clock ticks. [[tcp-glossary]] Transmission Control Protocol:: A protocol that sits on top of (e.g.) the IP protocol and guarantees that packets are delivered in a reliable, ordered, fashion. [[tcpip-glossary]] Transmission Control Protocol/Internet Protocol:: The term for the combination of the TCP protocol running over the IP protocol. Much of the Internet runs over TCP/IP. [[td-glossary]] Transmitted Data:: An RS232C pin or wire that data is transmitted on. + See crossref:glossary[rd-glossary,Also Received Data]. [[tftp-glossary]] Trivial FTP:: {empty} [discrete] == U UDP:: See crossref:glossary[udp-glossary,User Datagram Protocol]. UFS1:: See crossref:glossary[ufs1-glossary,Unix File System Version 1]. UFS2:: See crossref:glossary[ufs2-glossary,Unix File System Version 2]. UID:: See crossref:glossary[uid-glossary,User ID]. URL:: See crossref:glossary[url-glossary,Uniform Resource Locator]. USB:: See crossref:glossary[usb-glossary,Universal Serial Bus]. [[url-glossary]] Uniform Resource Locator:: A method of locating a resource, such as a document on the Internet and a means to identify that resource. [[ufs1-glossary]] Unix File System Version 1:: The original UNIX(R) file system, sometimes called the Berkeley Fast File System. [[ufs2-glossary]] Unix File System Version 2:: An extension to UFS1, introduced in FreeBSD 5-CURRENT. UFS2 adds 64 bit block pointers (breaking the 1T barrier), support for extended file storage and other features. [[usb-glossary]] Universal Serial Bus:: A hardware standard used to connect a wide variety of computer peripherals to a universal interface. [[uid-glossary]] User ID:: A unique number assigned to each user of a computer, by which the resources and permissions assigned to that user can be identified. [[udp-glossary]] User Datagram Protocol:: A simple, unreliable datagram protocol which is used for exchanging data on a TCP/IP network. UDP does not provide error checking and correction like TCP. [discrete] == V VPN:: See crossref:glossary[vpn-glossary,Virtual Private Network]. [[vpn-glossary]] Virtual Private Network:: A method of using a public telecommunication such as the Internet, to provide remote access to a localized network, such as a corporate LAN. diff --git a/documentation/content/en/books/handbook/x11/_index.adoc b/documentation/content/en/books/handbook/x11/_index.adoc index ea2b2954ea..ed08ab6298 100644 --- a/documentation/content/en/books/handbook/x11/_index.adoc +++ b/documentation/content/en/books/handbook/x11/_index.adoc @@ -1,818 +1,1055 @@ --- title: Chapter 5. The X Window System part: Part I. Getting Started prev: books/handbook/ports next: books/handbook/wayland -description: This chapter describes how to install and configure Xorg on FreeBSD, which provides the open source X Window System used to provide a graphical environment -tags: ["X11", "Xorg", "TrueType", "Intel", "AMD", "NVIDIA", "Anti-Aliased", "VESA", "SCFB"] +description: This chapter describes how to install and configure the X Window System providing a graphical environment +tags: ["AMD", "DRM", "Fonts", "Graphics", "Input", "Intel", "Monitor", "NVIDIA", "PRIME", "SCFB", "TrueType", "VESA", "Video", "X11", "Xf86", "Xorg"] showBookMenu: true weight: 7 params: path: "/books/handbook/x11/" --- [[x11]] = The X Window System :doctype: book :toc: macro -:toclevels: 1 +:toclevels: 2 :icons: font :sectnums: :sectnumlevels: 6 :sectnumoffset: 5 :partnums: :source-highlighter: rouge :experimental: :images-path: books/handbook/x11/ ifdef::env-beastie[] ifdef::backend-html5[] :imagesdir: ../../../../images/{images-path} endif::[] ifndef::book[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] toc::[] endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] toc::[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [[x11-synopsis]] == Synopsis -An installation of FreeBSD using bsdinstall does not automatically install a graphical user interface. -This chapter describes how to install and configure Xorg, which provides the open source X Window System used to provide a graphical environment. -It then describes how to find and install a desktop environment or window manager. +An crossref:bsdinstall[bsdinstall-synopsis,installation] +of FreeBSD using man:bsdinstall[8] +does not automatically install a graphical user interface. +This chapter describes how to install and configure +the man:Xorg[1] server, which provides the open source X Window System +(colloquially X11) used to provide a graphical environment. Before reading this chapter, you should: -* Know how to install additional third-party software as described in crossref:ports[ports,Installing Applications: Packages and Ports]. +* Know how to install additional third-party software as described +in crossref:ports[ports,Installing Applications: Packages and Ports]. After reading this chapter, you will know: -* The various components of the X Window System, and how they interoperate. -* How to install and configure Xorg. -* How to use TrueType(R) fonts in Xorg. -* How to set up your system for graphical logins (XDM). +* How to select and install drivers for your graphics processor (GPU). +* The various components of the X Window System, +and how they interoperate. +* How to install and configure the X.org server. +* How to install fonts for the X Window System. -[[x-install]] -== Installing Xorg - -On FreeBSD, Xorg can be installed as a package or port. - -The binary meta package can be installed quickly but with fewer options for customization: - -[source,shell] -.... -# pkg install xorg -.... - -Either of these installations results in the complete Xorg system being installed. - -The current user must be a member of the `video` group. -To add a user to `video` group, execute the following command: - -[source,shell] -.... -# pw groupmod video -m username -.... +[[x-graphic-card-drivers]] +== Graphics Drivers -[TIP] -==== -A smaller version of the X system suitable for experienced users is available in package:x11/xorg-minimal[]. -Most of the documents, libraries, and applications will not be installed. -Some applications require these additional components to function. -==== +_**abstract**: Identify your GPU, the port providing a driver for it, +install it, then enable it to run at subsequent boot with man:sysrc[8]._ -[TIP] -==== -Video cards, monitors, and input devices are automatically detected and do not require any manual configuration. -Do not create `xorg.conf` or run a `-configure` step unless automatic configuration fails. -==== +Before FreeBSD can render a graphical environment, +it needs a kernel module to drive the graphics processor. +Graphics drivers are a fast-moving, cross-platform target, +which is why this is developed and distributed +separately from the FreeBSD base system. -[[x-graphic-card-drivers]] -== Graphic card drivers +The following table shows the different graphics processors +supported by FreeBSD, their corresponding module, +and which port provides it: -The following table shows the different graphics cards supported by FreeBSD, which package should be installed and its corresponding module. - -.Graphic card packages +.Supported Graphics Devices [options="header", cols="1,1,1,1"] |=== -| Brand | Type | Package | Module +| Type | License | Module | Port | Intel(R) | Open Source -| drm-kmod | `i915kms` +| package:graphics/drm-kmod[] | AMD(R) | Open Source -| drm-kmod -| `amdgpu` and `radeonkms` +| `amdgpu` or `radeonkms` +| package:graphics/drm-kmod[] | NVIDIA(R) | Proprietary -| nvidia-driver -| `nvidia` or `nvidia-modeset` +| `nvidia-drm`, `nvidia-modeset`, or `nvidia` +| package:graphics/nvidia-drm-kmod[] or + +package:x11/nvidia-driver[] -| VESA +| System Console Framebuffer | Open Source -| xf86-video-vesa -| vesa +| `scfb` +| package:x11-drivers/xf86-video-scfb[] -| SCFB +| VESA BIOS Extension | Open Source -| xf86-video-scfb -| scfb +| `vesa` +| package:x11-drivers/xf86-video-vesa[] | VirtualBox(R) | Open Source -| virtualbox-ose-additions -| VirtualBox(R) OSE additions include the `vboxvideo` driver. +| `vboxvideo` +| package:emulators/virtualbox-ose-additions[] | VMware(R) | Open Source -| xf86-video-vmware -| vmwgfx - +| `vmwgfx` +| package:x11-drivers/xf86-video-vmware[] |=== -The following command can be used to identify which graphics card is installed in the system: +There are several generations of driver technologies supported. + +* Direct Rendering drivers allowing PRIME offloading. +PRIME allows for multiple providers of graphics processing to coexist. +PRIME is described further in <>. + +* Kernel Modesetting (crossref:glossary[kms-glossary,KMS]) +This allows the driver to directly specify the display mode. +This is required to support suspend and resume when using the man:vt[4] +console driver. + +* User Modesetting +The oldest class of drivers is still supported, however they +may only be used with man:sc[4] console and older versions of the +man:Xorg[1] graphical environment. + +The following command can be used to identify +which graphics processor is installed in the system: [source,shell] .... -% pciconf -lv|grep -B4 VGA +% pciconf -lv | grep -B3 display .... The output should be similar to the following: [.programlisting] .... -vgapci0@pci0:0:2:0: class=0x030000 rev=0x07 hdr=0x00 vendor=0x8086 device=0x2a42 subvendor=0x17aa subdevice=0x20e4 +vgapci1@pci0:0:2:0: class=0x030000 rev=0x0c hdr=0x00 vendor=0x8086 device=0x46a6 subvendor=0x1028 subdevice=0x0b29 vendor = 'Intel Corporation' - device = 'Mobile 4 Series Chipset Integrated Graphics Controller' + device = 'Alder Lake-P GT2 [Iris Xe Graphics]' class = display - subclass = VGA .... +Detailed instructions on installing and enabling these drivers +are in the subsequent subsections. + [WARNING] ==== -If the graphics card is not supported by Intel(R), AMD(R) or NVIDIA(R) drivers, then VESA or SCFB modules should be used. -VESA module must be used when booting in BIOS mode and SCFB module must be used when booting in UEFI mode. +If the graphics processor is not supported by Intel(R), AMD(R), +or NVIDIA(R) drivers, then SCFB or VESA modules should be used. +SCFB module must be used when booting in UEFI mode. +VESA module must be used when booting in BIOS mode. This command can be used to check the booting mode: [source,shell] .... % sysctl machdep.bootmethod .... The output should be similar to the following: [.programlisting] .... -machdep.bootmethod: BIOS +machdep.bootmethod: UEFI .... ==== [[x-configuration-intel]] -=== Intel(R) +=== Intel(R) Graphics -Intel(R) Graphics refers to the class of graphics chips that are integrated on the same die as an Intel(R) CPU. -Wikipedia offers link:https://en.wikipedia.org/wiki/List_of_Intel_graphics_processing_units[a good overview of the variations and names used for generations of Intel HD Graphics]. +The package:graphics/drm-kmod[] package indirectly provides +a range of kernel modules for use with Intel(R) Graphics. +Recent versions of these modules can be used in conjunction +with other graphics processors in PRIME with no special configuration. -The package:graphics/drm-kmod[] package indirectly provides a range of kernel modules for use with Intel(R) Graphics cards. -The Intel(R) driver can be installed by executing the following command: +The Intel(R) Graphics driver can be installed +by executing the following command: [source,shell] .... # pkg install drm-kmod .... -Then add the module to `/etc/rc.conf` file, executing the following command: +Then add the module to [.filename]#/etc/rc.conf# file, +by executing the following command: [source,shell] .... # sysrc kld_list+=i915kms .... [[x-configuration-amd]] -=== AMD(R) +=== AMD(R) Graphics -The package:graphics/drm-kmod[] package indirectly provides a range of kernel modules for use with AMD(R) Graphics cards. -The modules `amdgpu` and `radeonkms` can be used depending the generation of the hardware. -The FreeBSD project maintains an link:https://wiki.freebsd.org/Graphics/AMD-GPU-Matrix[AMD graphics support matrix to determine which driver must be used]. +The package:graphics/drm-kmod[] package indirectly provides +kernel modules for a range of AMD(R) Graphics processors. +The modules `amdgpu` or `radeonkms` can be used +depending the generation of the hardware. +The FreeBSD project maintains a link:https://wiki.freebsd.org/Graphics/AMD-GPU-Matrix[AMD graphics support matrix] +showing support levels and to determine which driver must be used. -AMD(R) driver can be installed by executing the following command: +The AMD(R) Graphics drivers can be installed +by executing the following command: [source,shell] .... # pkg install drm-kmod .... -For post-HD7000 or Tahiti graphic cards add the module to `/etc/rc.conf` file, executing the following command: +Enable the current module by adding it to the [.filename]#/etc/rc.conf# +file, executing the following command: [source,shell] .... # sysrc kld_list+=amdgpu .... -For older graphic cards (pre-HD7000 or pre-Tahiti) add the module to `/etc/rc.conf` file, executing the following command: +For older graphics (pre-HD7000/Tahiti), +instead enable the legacy module by adding it to the +[.filename]#/etc/rc.conf# file, executing the following command: [source,shell] .... # sysrc kld_list+=radeonkms .... [[x-configuration-nvidia]] -=== NVIDIA(R) +=== NVIDIA(R) Graphics -FreeBSD supports different versions of the proprietary NVIDIA(R) driver. -Users of newer graphics cards should install the package:x11/nvidia-driver[] package. -Those with older cards will have to check below which version supports them. +NVIDIA(R) produces standalone or discrete graphics processors, +and provides a proprietary driver for FreeBSD. +The FreeBSD Ports Collection provides over a decade of drivers +for supporting generations of NVIDIA graphics. -.Supported versions of NVIDIA(R) drivers -[options="header", cols="1,1"] -|=== -| Package | Supported hardware +Administrators should install the latest driver +supported by their hardware. -| package:x11/nvidia-driver-304[] -| link:https://www.nvidia.com/Download/driverResults.aspx/123712/en-us/[supported hardware] +The following table shows the port containing the driver, +the kernel module recommended for loading, +and a link to the list of hardware supported by that driver: -| package:x11/nvidia-driver-340[] -| link:https://www.nvidia.com/Download/driverResults.aspx/156167/en-us/[supported hardware] +.Supported versions of NVIDIA(R) Graphics drivers +[options="header", cols="1,1,1"] +|=== +| Port | Module | Supported hardware -| package:x11/nvidia-driver-390[] -| link:https://www.nvidia.com/Download/driverResults.aspx/191122/en-us/[supported hardware] +| package:graphics/nvidia-drm-kmod[] +| `nvidia-drm` or + +`nvidia-modeset` +| link:https://www.nvidia.com/Download/driverResults.aspx/210651/en-us/[supported hardware] | package:x11/nvidia-driver-470[] +| `nvidia-modeset` | link:https://www.nvidia.com/Download/driverResults.aspx/194639/en-us/[supported hardware] -| package:x11/nvidia-driver[] -| link:https://www.nvidia.com/Download/driverResults.aspx/210651/en-us/[supported hardware] +| package:x11/nvidia-driver-390[] or + +package:x11/nvidia-secondary-driver-390[] +| `nvidia-modeset` +| link:https://www.nvidia.com/Download/driverResults.aspx/191122/en-us/[supported hardware] + +| package:x11/nvidia-driver-340[] +| `nvidia` +| link:https://www.nvidia.com/Download/driverResults.aspx/156167/en-us/[supported hardware] + +| package:x11/nvidia-driver-304[] +| `nvidia` +| link:https://www.nvidia.com/Download/driverResults.aspx/123712/en-us/[supported hardware] |=== -[WARNING] -==== -Version 304 of the NVIDIA(R) graphics driver (package:x11/nvidia-driver-304[]) does not support xorg-server 1.20 or later. -==== +The latest NVIDIA(R) Graphics driver can be installed +by running the following command: + +[source,shell] +.... +# pkg install nvidia-drm-kmod +.... + +To enable the driver, add the module to +[.filename]#/etc/rc.conf# file, by executing the following command: + +[source,shell] +.... +# sysrc kld_list+=nvidia-drm +.... -The latest NVIDIA(R) driver can be installed by running the following command: +This is the direct rendering crossref:glossary[glossary-kms,KMS] driver. + +Kernel modesetting is the option to set the graphics mode in the kernel. +Enable it for subsequent boots with the following man:loader.conf[5] +tunable: [source,shell] .... -# pkg install nvidia-driver +hw.nvidiadrm.modeset="1' .... -Then add the module to `/etc/rc.conf` file, executing the following command: +Both PRIME and crossref:wayland[wayland-synopsis,Wayland] +require kernel modesetting. +Prior versions of the driver do not support Direct Rendering. +Instead use the modesetting module, +by executing the following command: [source,shell] .... # sysrc kld_list+=nvidia-modeset .... -[WARNING] -==== -The `nvidia` driver must be used if the packages package:x11/nvidia-driver-304[] or package:x11/nvidia-driver-340[] have been installed. +If requiring Nvidia drivers prior to 390, +note that they do not support kernel modesetting, +and thus they must be used with the legacy man:sc[4] console driver, +and a package:x11/xorg-server[] version prior to 1.20. + +Enable them in [.filename]#/etc/rc.conf# with the following command: [source,shell] .... # sysrc kld_list+=nvidia .... -==== -[[x-config]] -== Xorg Configuration +[[x-overview]] +== X Window System Overview -Xorg supports most common video cards, keyboards, and pointing devices. +The X Window System is the heritage +graphical stack for UNIX(R) platforms, +supporting the latest technologies +while maintaining support for generations of applications. +Applications, including the components of the desktop, +are hosted by the man:Xorg[1] server. +This system is network aware and its various components +can interoperate across networks. -[WARNING] -==== -Video cards, monitors, and input devices are automatically detected and do not require any manual configuration. -Do not create [.filename]#xorg.conf# or run a `Xorg -configure` step unless automatic configuration fails. -==== +[[x-install]] +== Installing The X.org Server -[[x-config-files]] -=== Configuration Files +_**abstract**: The package:x11/xorg[X.org] server +must be installed to host the crossref:desktop[desktop-synopsis,desktop]. +Users must be added to the `video` group to use it._ + +Once a graphics driver is installed and enabled, +the X.org server can be installed as a meta-package, +or compiled locally with the ports tree. -Xorg looks in several directories for configuration files. -[.filename]#/usr/local/etc/X11/# is the *recommended* directory for these files on FreeBSD. -Using this directory helps keep application files separate from operating system files. +The full meta-package can be installed quickly +but with fewer options for customization: -[[x-config-files-single-or-multi]] -=== Single or Multiple Files +[source,shell] +.... +# pkg install xorg +.... + +This installation results in the complete X Window System +being installed, including a traditional window manager, man:twm[1], +and surrounding traditional desktop suite. +Most users will want to install and configure a +contemporary crossref:desktop[desktop-synopsis,desktop] of their choice. + +The current user must be a member of the `video` group +to run a graphical environment. +To add a user to the `video` group, execute the following command: -It is easier to use multiple files that each configure a specific setting than the traditional single [.filename]#xorg.conf#. -These files are stored in the [.filename]#/usr/local/etc/X11/xorg.conf.d/# subdirectory. +[source,shell] +.... +# pw groupmod video -m username +.... + +To run the X Window System, use man:startx[1] from package:x11/xinit[], +or install and configure a display manager +to start a graphical login on boot. [TIP] ==== -The traditional single [.filename]#xorg.conf# still works, but is neither as clear nor as flexible as multiple files in the [.filename]#/usr/local/etc/X11/xorg.conf.d/# subdirectory. +A smaller version of the X Window System suitable for experienced users +is available in package:x11/xorg-minimal[]. +Most of the documents, libraries, and applications will not be installed. +Some applications require these additional components to function. ==== -[[x-config-video-cards]] -=== Video Cards +[[x-config]] +== X.org Configuration + +_**abstract**: If the defaults for your monitor or input devices, +are not satisfactory, +crossref:desktop[desktop-synopsis,desktops] +include GUIs for configuring them, or they can be configured manually._ + +The X.org server supports most common graphics processors, monitors, +and input devices. +First, try the defaults. +This subsection provides an overview of their configuration. + +[[x-config-files]] +=== X.org Configuration Files + +Historically, the X.org server was configured with files in +[.filename]#/usr/local/etc/X11/#. +This is still supported for edge cases, +but conflicts with dynamic autoconfiguration. + +Do not create configuration for the X.org server in +[.filename]#xorg.conf# +or run `Xorg -configure` unless automatic configuration fails. + +X.org server looks in several directories for configuration files. +[.filename]#/usr/local/etc/X11/# is the *recommended* directory +for these files on FreeBSD. +Using this directory helps keep application files separate from +operating system files. + +It is easier to use multiple files that each configure a +specific setting than the traditional single [.filename]#xorg.conf#. +These files are stored in the +[.filename]#/usr/local/etc/X11/xorg.conf.d/# subdirectory. + +[[x-config-gpu]] +=== Graphics Configuration + +Direct rendering provides the ability to seamlessly +use a discrete graphics processor (dGPU) alongside +an integrated graphics processor (iGPU), called PRIME. +The drivers will automatically offload intensive tasks to the dGPU +when required, and power it down when able. -The driver for the graphics card can be specified in the [.filename]#/usr/local/etc/X11/xorg.conf.d/# directory. +To launch applications on the more powerful GPU in PRIME, +use the `DRI_PRIME=1` enviroment variable. + +If multiple graphics drivers are conflicting, +the driver for the graphics processor can be specified in the +[.filename]#/usr/local/etc/X11/xorg.conf.d/# directory. To configure the Intel(R) driver in a configuration file: [[x-config-video-cards-file-intel]] -.Select Intel(R) Video Driver in a File +.Select Intel(R) Graphics Driver in a File [example] ==== [.filename]#/usr/local/etc/X11/xorg.conf.d/20-intel.conf# [.programlisting] .... Section "Device" Identifier "Card0" Driver "intel" EndSection .... ==== To configure the AMD(R) driver in a configuration file: [[x-config-video-cards-file-amd]] -.Select AMD(R) Video Driver in a File +.Select AMD(R) Graphics Driver in a File [example] ==== [.filename]#/usr/local/etc/X11/xorg.conf.d/20-radeon.conf# [.programlisting] .... Section "Device" Identifier "Card0" Driver "radeon" EndSection .... ==== To configure the NVIDIA(R) driver in a configuration file: [[x-config-video-cards-file-nvidia]] -.Select NVIDIA(R) Video Driver in a File +.Select NVIDIA(R) Graphics Driver in a File [example] ==== [.filename]#/usr/local/etc/X11/xorg.conf.d/20-nvidia.conf# [.programlisting] .... Section "Device" Identifier "Card0" - Driver "nvidia" + Driver "nvidia-modeset" EndSection .... ==== [TIP] ==== -package:x11/nvidia-xconfig[] can also be used to perform basic control over configuration options available in the NVIDIA driver. +package:x11/nvidia-xconfig[] can also be used to perform basic control +over configuration options available in the NVIDIA driver. ==== -To configure the VESA driver in a configuration file: +To configure the SCFB driver in a configuration file: -[[x-config-video-cards-file-vesa]] -.Select VESA Video Driver in a File +[[x-config-video-cards-file-sfcb]] +.Select SCFB Graphics Driver in a File [example] ==== -[.filename]#/usr/local/etc/X11/xorg.conf.d/20-vesa.conf# +[.filename]#/usr/local/etc/X11/xorg.conf.d/20-scfb.conf# [.programlisting] .... Section "Device" Identifier "Card0" - Driver "vesa" + Driver "scfb" EndSection .... ==== -To configure the SCFB driver in a configuration file: +To configure the VESA driver in a configuration file: -[[x-config-video-cards-file-sfcb]] -.Select SCFB Video Driver in a File +[[x-config-video-cards-file-vesa]] +.Select VESA Graphics Driver in a File [example] ==== -[.filename]#/usr/local/etc/X11/xorg.conf.d/20-scfb.conf# +[.filename]#/usr/local/etc/X11/xorg.conf.d/20-vesa.conf# [.programlisting] .... Section "Device" Identifier "Card0" - Driver "scfb" + Driver "vesa" EndSection .... ==== -To configure multiple video cards, the `BusID` can be added. -A list of video card bus ``ID``s can be displayed by executing: +To configure multiple graphics processors, the `BusID` can be added. +A list of graphics processor bus ``ID``s can be displayed by executing: [source,shell] .... % pciconf -lv | grep -B3 display .... The output should be similar to the following: [.programlisting] .... -vgapci0@pci0:0:2:0: class=0x030000 rev=0x07 hdr=0x00 vendor=0x8086 device=0x2a42 subvendor=0x17aa subdevice=0x20e4 +vgapci0@pci0:0:2:0: class=0x030000 rev=0x0c hdr=0x00 vendor=0x8086 device=0x46a6 subvendor=0x1028 subdevice=0x0b29 vendor = 'Intel Corporation' - device = 'Mobile 4 Series Chipset Integrated Graphics Controller' + device = 'Alder Lake-P GT2 [Iris Xe Graphics]' class = display -- -vgapci1@pci0:0:2:1: class=0x038000 rev=0x07 hdr=0x00 vendor=0x8086 device=0x2a43 subvendor=0x17aa subdevice=0x20e4 - vendor = 'Intel Corporation' - device = 'Mobile 4 Series Chipset Integrated Graphics Controller' +vgapci0@pci0:1:0:0: class=0x030200 rev=0xa1 hdr=0x00 vendor=0x10de device=0x25b9 subvendor=0x1028 subdevice=0x0b29 + vendor = 'NVIDIA Corporation' + device = 'GA107GLM [RTX A1000 Laptop GPU]' class = display .... [[x-config-video-cards-file-multiple]] -.Select Intel(R) Video Driver and NVIDIA(R) Video Driver in a File +.Select Intel(R) Graphics Driver and NVIDIA(R) Graphics Driver in a File [example] ==== [.filename]#/usr/local/etc/X11/xorg.conf.d/20-drivers.conf# [.programlisting] .... Section "Device" Identifier "Card0" Driver "intel" BusID "pci0:0:2:0" EndSection Section "Device" - Identifier "Card0" - Driver "nvidia" + Identifier "Card1" + Driver "nvidia-modeset" BusID "pci0:0:2:1" EndSection .... ==== [[x-config-monitors]] -=== Monitors +=== Monitor Configuration -Almost all monitors support the Extended Display Identification Data standard (`EDID`). -Xorg uses `EDID` to communicate with the monitor and detect the supported resolutions and refresh rates. -Then it selects the most appropriate combination of settings to use with that monitor. +Almost all monitors support the Extended Display Identification Data +standard (`EDID`). +X.org uses `EDID` to communicate with the monitor +and detect the supported resolutions and refresh rates. +Then it selects the most appropriate combination of settings +to use with that monitor. -Other resolutions supported by the monitor can be chosen by setting the desired resolution in configuration files, or after the X server has been started with man:xrandr[1]. +Other resolutions supported by the monitor can be selected atomically +after the X server has been started with man:xrandr[1], +or in the X.org server configuration files. [[x-config-monitors-xrandr]] ==== Using RandR (Resize and Rotate) -Run man:xrandr[1] without any parameters to see a list of video outputs and detected monitor modes: +Run man:xrandr[1] in an X session without any parameters +to see a list of video outputs and detected monitor modes: [source,shell] .... % xrandr .... The output should be similar to the following: [.programlisting] .... Screen 0: minimum 320 x 200, current 2560 x 960, maximum 8192 x 8192 LVDS-1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm 1280x800 59.99*+ 59.81 59.91 50.00 1280x720 59.86 59.74 1024x768 60.00 1024x576 59.90 59.82 960x540 59.63 59.82 800x600 60.32 56.25 864x486 59.92 59.57 640x480 59.94 720x405 59.51 58.99 640x360 59.84 59.32 VGA-1 connected primary 1280x960+1280+0 (normal left inverted right x axis y axis) 410mm x 257mm 1280x1024 75.02 60.02 1440x900 74.98 60.07 1280x960 60.00* 1280x800 74.93 59.81 1152x864 75.00 1024x768 75.03 70.07 60.00 832x624 74.55 800x600 72.19 75.00 60.32 56.25 640x480 75.00 72.81 66.67 59.94 720x400 70.08 HDMI-1 disconnected (normal left inverted right x axis y axis) DP-1 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis) DP-2 disconnected (normal left inverted right x axis y axis) DP-3 disconnected (normal left inverted right x axis y axis) .... -This shows that the `VGA-1` output is being used to display a screen resolution of 1280x960 pixels at a refresh rate of about 60 Hz. -The `LVDS-1` is being used as a secondary monitor to display a screen resolution of 1280x800 pixels at a refresh rate of about 60 Hz. -Monitors are not attached to the `HDMI-1`, `HDMI-2`, `DP-1`, `DP-2` and `DP-3` connectors. +This shows that the `VGA-1` output is being used to display +a screen resolution of 1280x960 pixels at a refresh rate of about 60 Hz. +The `LVDS-1` is being used as a secondary monitor to display +a screen resolution of 1280x800 pixels at a refresh rate of about 60 Hz. +Monitors are not attached to the `HDMI-1`, `HDMI-2`, `DP-1`, `DP-2`, and +`DP-3` connectors. Any of the other display modes can be selected with man:xrandr[1]. For example, to switch to 1280x1024 at 60 Hz: [source,shell] .... % xrandr --output LVDS-1 --mode 1280x720 --rate 60 .... -[[x-config-monitors-files]] -==== Using the Xorg configuration file +[TIP] +==== +Oftentimes, a black screen upon starting X can be fixed +by adding an `xrandr --auto` step to the initialization process. +==== + +[[x-config-monitors-file]] +==== Using the X.org Configuration Files The monitor configuration can also be set in a configuration file. To set a screen resolution of 1024x768 in a configuration file: .Set Screen Resolution in a File [example] ==== [.filename]#/usr/local/etc/X11/xorg.conf.d/10-monitor.conf# [.programlisting] .... Section "Screen" Identifier "Screen0" Device "Card0" SubSection "Display" Modes "1024x768" EndSubSection EndSection .... ==== [[x-config-input]] -=== Input Devices +=== Input Configuration + +The package:Xorg[X.org] server provides the package:x11/libinput[] +library, a cross-platform effort to support all touch, pointing, +and keyboard devices under a unified library. +Unless specified otherwise, this is loaded automatically. + +Individual device settings for man:libinput[4] can be tuned in your +crossref:desktop[desktop-synopsis,desktop's] GUI, +or manually with package:x11/xinput[xinput] +and package:x11/setxkbmap[setxkbmap]. + +Alternatively, there are older, lightweight, individual drivers for +specific input devices available in the package:x11-drivers[] catagory +named x11/xf86-input-[foo]. +This approach requires manual configuration of the X.org server. +Both are described in this subsection. + +[[x-config-input-atmoic]] +==== Using Atomic Input Configuration + +Devices supported by man:libinput[4] can be configured +with graphical utilities included with your +crossref:desktop[desktop-synopsis,desktop] of choice, +or manually and atomically at runtime with package:x11/xinput[] +and package:x11/setxkbmap[]. + +To ask man:libinput[4] what devices it's currently attached to, +run man:xinput[1] with no arguments: + +[source,shell] +.... +$ xinput +.... + +Its output should be similar to the following: + +[example] +.... + +⎡ Virtual core pointer id=2 [master pointer (3)] +⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)] +⎜ ↳ System mouse id=7 [slave pointer (2)] +⎜ ↳ VEN_0488:00 0488:1031 Mouse id=11 [slave pointer (2)] +⎜ ↳ VEN_0488:00 0488:1031 TouchPad id=12 [slave pointer (2)] +⎣ Virtual core keyboard id=3 [master keyboard (2)] + ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)] + ↳ System keyboard multiplexer id=6 [slave keyboard (3)] + ↳ Power Button id=8 [slave keyboard (3)] + ↳ Sleep Button id=9 [slave keyboard (3)] + ↳ AT keyboard id=10 [slave keyboard (3)] +.... + +All settings supported by these devices are provided as properties, +which can be listed and set atomically. +Pointing devices have many configurable properties, keyboards usually need none. + +To customize your keyboard, take a look at man:setxkbmap[1]. + +Once satisfied with your configuration, simply add the lines to your +X initialization script such as [.filename]#~/.Xsession# or [.filename]#~/.xinitrc#. + +[[x-config-input-file]] +==== Using X.org Configuration Files -Xorg supports the vast majority of input devices via package:x11/libinput[]. [TIP] ==== -Some desktop environments (such as KDE Plasma) provide a graphical UI for setting these parameters. +Some desktop environments (such as crossref:desktop[kde-environment,KDE Plasma]) provide a graphical UI for setting these parameters. Check if this is the case before resorting to manual configuration editing. ==== [[x-config-input-keyboard-layout]] -For example, to configure the keyboard layout: +For example, to manually configure the X.org server for the keyboard layout: .Setting a Keyboard Layout [example] ==== [.filename]#/usr/local/etc/X11/xorg.conf.d/00-keyboard.conf# [.programlisting] .... Section "InputClass" Identifier "Keyboard1" MatchIsKeyboard "on" Option "XkbLayout" "es, fr" Option "XkbModel" "pc104" Option "XkbVariant" ",qwerty" Option "XkbOptions" "grp:win_space_toggle" EndSection .... ==== [[x-fonts]] -== Using Fonts in Xorg +== Using Fonts in the X Window System -The default fonts that ship with Xorg are less than ideal for typical desktop publishing applications. -Large presentation fonts show up jagged and unprofessional looking, and small fonts are almost completely unintelligible. -However, there are several free, high quality Type1 (PostScript(R)) fonts available which can be readily used with Xorg. +_**abstract**: Additional fonts can be installed from the +package:x11-fonts[] category or placed in [.filename]#~/.fonts#. +They are available immediately to modern applications. +Configuration for older applications is available and described as well._ -[[type1]] -=== Type1 Fonts +The X Window System provides the X FreeType interface library +(man:Xft[3]) to render vector or outline fonts, +as well as the traditional X Logical Font Description system +maintaining compatibility with generations of applications and fonts. -The URW font collection (package:x11-fonts/urwfonts[]) includes high quality versions of standard type1 fonts (Times Roman(TM), Helvetica(TM), Palatino(TM) and others). -The Freefonts collection (package:x11-fonts/freefonts[]) includes many more fonts, but most of them are intended for use in graphics software such as the Gimp, and are not complete enough to serve as screen fonts. -In addition, Xorg can be configured to use TrueType(R) fonts with a minimum of effort. -For more details on this, see the man:X[7] manual page or crossref:x11[truetype, TrueType(R) Fonts]. +There are primarily two types of fonts users will be interested in: -To install the above Type1 font collections from binary packages, run the following commands: +* OpenType fonts or TrueType(R) fonts are for displaying on a screen. +* Adobe(R) PostScript(R) Type 1 fonts are for printing to paper. -[source,shell] -.... -# pkg install urwfonts -.... +These are both vector or outline fonts, there are also bitmap fonts. -And likewise with the freefont or other collections. -To have the X server detect these fonts, add an appropriate line to the X server configuration file ([.filename]#/usr/local/etc/X11/xorg.conf.d/90-fonts.conf#), which reads: +The FreeBSD Ports Collection includes a wide and growing catalog +of free, high quality fonts available for installation +in the package:x11-fonts[] catagory. -[.programlisting] -.... -Section "Files" - FontPath "/usr/local/share/fonts/urwfonts/" -EndSection -.... +System-wide font packages installed from the ports collection +live in `[.filename]#/usr/local/share/fonts/#`. +Fonts for a single user can be placed in `[.filename]#~/.fonts/#`, +or `[.filename]#~/.local/share/fonts/#`. -Alternatively, at the command line in the X session run: +Fonts in either directory or subdirectories will be available +for immediate use when the font information cache is rebuilt. +To trigger this manually, issue: [source,shell] .... -% xset fp+ /usr/local/share/fonts/urwfonts -% xset fp rehash +% fc-cache .... -This will work but will be lost when the X session is closed, unless it is added to the startup file ([.filename]#~/.xinitrc# for a normal `startx` session, or [.filename]#~/.xsession# when logging in through a graphical login manager like XDM). -A third way is to use the new [.filename]#/usr/local/etc/fonts/local.conf# as -demonstrated in crossref:x11[antialias, Anti-Aliased Fonts]. +Plenty of free, high quality fonts of both types are available in the +ports tree which can be readily used with X Window System. +This chapter provides a brief overview of both, +as well as configuring the X FreeType interface. + +For more information about how to install and configure fonts on FreeBSD, +please read the article link:{fonts}[Fonts and FreeBSD]. [[truetype]] === TrueType(R) Fonts -Xorg has built in support for rendering TrueType(R) fonts. +X.org has built in support for rendering TrueType(R) fonts. There are two different modules that can enable this functionality. The freetype module is used in this example because it is more consistent with the other font rendering back-ends. To enable the freetype module just add the following line to the `"Module"` section of [.filename]#/usr/local/etc/X11/xorg.conf.d/90-fonts.conf#. [.programlisting] .... Load "freetype" .... Now make a directory for the TrueType(R) fonts (for example, [.filename]#/usr/local/share/fonts/TrueType#) and copy all of the TrueType(R) fonts into this directory. -Keep in mind that TrueType(R) fonts cannot be directly taken from an Apple(R) Mac(R); they must be in UNIX(R)/MS-DOS(R)/Windows(R) format for use by Xorg. +Keep in mind that TrueType(R) fonts cannot be directly taken from an Apple(R) Mac(R); they must be in UNIX(R)/MS-DOS(R)/Windows(R) format for use by X.org. Once the files have been copied into this directory, use mkfontscale to create a [.filename]#fonts.dir#, so that the X font renderer knows that these new files have been installed. `mkfontscale` can be installed as a package: [source,shell] .... # pkg install mkfontscale .... Then create an index of X font files in a directory: [source,shell] .... # cd /usr/local/share/fonts/TrueType # mkfontscale .... Now add the TrueType(R) directory to the font path. -This is just the same as described in crossref:x11[type1, Type1 Fonts]: +This is just the same as described in <>: [source,shell] .... % xset fp+ /usr/local/share/fonts/TrueType % xset fp rehash .... or add a `FontPath` line to [.filename]#xorg.conf#. Now Gimp, LibreOffice, and all of the other X applications should now recognize the installed TrueType(R) fonts. Extremely small fonts (as with text in a high resolution display on a web page) and extremely large fonts (within LibreOffice) will look much better now. +[[type1]] +=== Type1 Fonts + +The URW font collection (package:x11-fonts/urwfonts[]) includes high quality versions of standard type1 fonts (Times Roman(TM), Helvetica(TM), Palatino(TM) and others). +The Freefonts collection (package:x11-fonts/freefonts[]) includes many more fonts, but most of them are intended for use in graphics software such as the Gimp, and are not complete enough to serve as screen fonts. + +To install the above Type1 font collections from binary packages, run the following commands: + +[source,shell] +.... +# pkg install urwfonts +.... + +And likewise with the freefont or other collections. +To have a manually configured X server detect these fonts, add an appropriate line to the X server configuration file ([.filename]#/usr/local/etc/X11/xorg.conf.d/90-fonts.conf#), which reads: + +[.programlisting] +.... +Section "Files" + FontPath "/usr/local/share/fonts/urwfonts/" +EndSection +.... + +Alternatively, at the command line in the X session run: + +[source,shell] +.... +% xset fp+ /usr/local/share/fonts/urwfonts +% xset fp rehash +.... + +This will work but will be lost when the X session is closed, unless it is added to the startup file ([.filename]#~/.xinitrc# for a normal `startx` session, or [.filename]#~/.xsession# when logging in through a graphical login manager like XDM). +A third way is to use the new [.filename]#/usr/local/etc/fonts/local.conf# as demonstrated in <>. + [[antialias]] === Anti-Aliased Fonts -All fonts in Xorg that are found in [.filename]#/usr/local/share/fonts/# and [.filename]#~/.fonts/# are automatically made available for anti-aliasing to Xft-aware applications. Most recent applications are Xft-aware, including KDE, GNOME, and Firefox. +All fonts in X.org that are found in [.filename]#/usr/local/share/fonts/# and [.filename]#~/.fonts/# are automatically made available for anti-aliasing to Xft-aware applications. +Most recent applications are Xft-aware, including KDE, GNOME, and Firefox. To control which fonts are anti-aliased, or to configure anti-aliasing properties, create (or edit, if it already exists) the file [.filename]#/usr/local/etc/fonts/local.conf#. Several advanced features of the Xft font system can be tuned using this file; this section describes only some simple possibilities. For more details, please see man:fonts-conf[5]. This file must be in XML format. Pay careful attention to case, and make sure all tags are properly closed. The file begins with the usual XML header followed by a DOCTYPE definition, and then the `` tag: [.programlisting] .... .... As previously stated, all fonts in [.filename]#/usr/local/share/fonts/# as well as [.filename]#~/.fonts/# are already made available to Xft-aware applications. To add another directory outside of these two directory trees, add a line like this to [.filename]#/usr/local/etc/fonts/local.conf#: [.programlisting] .... /path/to/my/fonts .... After adding new fonts, and especially new font directories, rebuild the font caches: [source,shell] .... # fc-cache -f .... Anti-aliasing makes borders slightly fuzzy, which makes very small text more readable and removes "staircases" from large text, but can cause eyestrain if applied to normal text. To exclude font sizes smaller than 14 point from anti-aliasing, include these lines: [.programlisting] .... 14 false 14 false .... Spacing for some monospaced fonts might also be inappropriate with anti-aliasing. This seems to be an issue with KDE, in particular. One possible fix is to force the spacing for such fonts to be 100. Add these lines: [.programlisting] .... fixed mono console mono .... (this aliases the other common names for fixed fonts as `"mono"`), and then add: [.programlisting] .... mono 100 .... Certain fonts, such as Helvetica, may have a problem when anti-aliased. Usually this manifests itself as a font that seems cut in half vertically. At worst, it may cause applications to crash. To avoid this, consider adding the following to [.filename]#local.conf#: [.programlisting] .... Helvetica sans-serif .... After editing [.filename]#local.conf#, make certain to end the file with the `` tag. Not doing this will cause changes to be ignored. Users can add personalized settings by creating their own [.filename]#~/.config/fontconfig/fonts.conf#. This file uses the same `XML` format described above. One last point: with an LCD screen, sub-pixel sampling may be desired. This basically treats the (horizontally separated) red, green and blue components separately to improve the horizontal resolution; the results can be dramatic. To enable this, add the line somewhere in [.filename]#local.conf#: [.programlisting] .... unknown rgb .... [NOTE] ==== Depending on the sort of display, `rgb` may need to be changed to `bgr`, `vrgb` or `vbgr`: experiment and see which works best. ==== - -For more information about how to install and configure fonts on FreeBSD, please read the article link:{fonts}[Fonts and FreeBSD].