20131126-1 Linux 内核专题更新两篇 Part 18 和 Part 19

This commit is contained in:
DeadFire 2013-11-26 08:55:36 +08:00
parent 32bd22a551
commit fa55e15333
2 changed files with 252 additions and 0 deletions

View File

@ -0,0 +1,125 @@
22 The Linux Kernel: Configuring the Kernel Part 18
================================================================================
![](http://www.linux.org/attachments/slide-jpg.616/)
Aloha! Ready for the next article? In this article, we will discuss the auxiliary-screen. The auxiliary displays are small LCD screens; most are equal to or less than 128x64. Then, we will discuss Userspace IO drivers, some virtual drivers, Hyper-V, staging drivers, IOMMU, and other kernel features.
The first driver to configure for the auxiliary display is the "KS0108 LCD Controller" driver. The KS0108 LCD Controller is a graphics controller made by Samsung.
Next, the parallel port address for the LCD can be set (Parallel port where the LCD is connected). The first port address is 0x378, the next is 0x278 and the third is 0x3BC. These are not the only choices of addresses. The majority of people will not need to change this. The shell command "cat /proc/ioports" will list the available parallel ports and the addresses.
The kernel developer can set the writing delay of the KS0108 LCD Controller to the parallel port (Delay between each control writing (microseconds)). The default value is almost always correct, so this typically does not need to be changed.
The "CFAG12864B LCD" screen is a 128x64, two-color LCD screen. This screen relies on the KS0108 LCD Controller.
The refresh rate of these LCD screens can be changed (Refresh rate (hertz)). Generally, a higher refresh rate causes more CPU activity. This means slower systems will need a smaller refresh rate.
After the auxiliary displays are configured, the "Userspace I/O drivers" are then set. The userspace system allows the user's applications and processes to access kernel interrupts and memory addresses. With this enabled, some drivers will be placed in the userspace.
The "generic Hilscher CIF Card driver" is a userspace driver for Profibus cards and Hilscher CIF Cards.
The "Userspace I/O platform driver" creates a general system for drivers to be in the userspace.
The next driver is the same as above, but adds IRQ handling (Userspace I/O platform driver with generic IRQ handling).
The following driver is again like the one before, but with dynamic memory abilities added (Userspace platform driver with generic irq and dynamic memory).
Next, some vendor/device specific drivers are available.
Then, there is a generic PCI/PCIe card driver (Generic driver for PCI 2.3 and PCI Express cards).
The following driver is for "VFIO support for PCI devices". VFIO stands for Virtual Function Input/Output. VFIO allows devices to directly access userspace in a secure fashion.
The "VFIO PCI support for VGA devices" allows VGA to be supported by PCI through VFIO.
Next, are virtio drivers. Virtio is a IO virtualization platform. This virtual software is for operating system virtualization. This is required for running an operating system in a virtual machine on the Linux system.
The first virtio driver we can configure is the "PCI driver for virtio devices". This allows virtual access to PCI.
The "Virtio balloon driver" allows the memory owned by a virtual system to be expanded or decreased as needed. Generally, no one wants a virtual system to reserve memory it may never use when the host operating system needs the memory.
The following driver supports memory mapped virtio devices (Platform bus driver for memory mapped virtio devices).
If the Linux kernel being configured is intended to run on a Microsoft Hyper-V system, then enable this driver (Microsoft Hyper-V client drivers). This would allow Linux to be the guest/client system on Hyper-V.
![](http://www.linux.org/attachments/kernel_18-png.617/)
Next, we have the staging drivers. These are drivers that are under development, may change soon, or are not up to the standard quality for the Linux kernel. The only group of drivers in this category (in this kernel version 3.9.4) are the Android drivers. Yes, Android uses the Linux kernel which would make Android a Linux system. However, this is still debated. If the kernel is intended for Android, then it may be wise to enable all of the drivers.
The "Android Binder IPC Driver" provides support for Binder which is a system that allows processes to communicate with each other on Android systems.
The ashmem driver can be enabled next (Enable the Anonymous Shared Memory Subsystem). Ashmem stands for "Anonymous SHared MEMory" or "Android SHared MEMory". This supports a file-based memory system for userspace.
The "Android log driver" offers the complete Android logging system.
The "Timed output class driver" and "Android timed gpio driver" allow the Android system to manipulate GPIO pins and undo the manipulations after the timeout.
The "Android Low Memory Killer" closes processes when more memory is needed. This feature kills the tasks that are not used or inactive.
The "Android alarm driver" makes the kernel wakeup at set intervals.
After the staging drivers are configured, the next set of drivers are for the X86 platform. These drivers are vendor/device specific for X86 (32-bit) hardware.
The next driver is for "Mailbox Hardware Support". This framework controls mailbox queues and interrupt signals for hardware mailbox systems.
"IOMMU Hardware Support" links the memory to devices that are able to use DMA. IOMMU enhances DMA. The IOMMU maps addresses and blocks faulty devices from accessing the memory. IOMMU also allows hardware to access more memory than it could without IOMMU.
The "AMD IOMMU support" driver offers better IOMMU support for AMD devices.
Debugging abilities exist for the AMD IOMMU support (Export AMD IOMMU statistics to debugfs).
A newer version of the IOMMU driver exists for AMD hardware (AMD IOMMU Version 2 driver).
The Linux kernel also provides an IOMMU driver specifically for Intel devices (Support for Intel IOMMU using DMA Remapping Devices).
Some devices may be able to accept a variety of voltages and clock frequencies. This driver allows the operating system to control the device's voltage output and clock rate (Generic Dynamic Voltage and Frequency Scaling (DVFS) support). With this driver enabled, other kernel features can be enabled for power/performance management as seen below.
"Simple Ondemand" is like above, but specifically changes the clock rate based on the device's activity. Generally, more activity means the device needs a faster clock speed to accommodate for the larger resource demand.
"Performance" allows the system to set the clock speed to the maximum supported amount for best performance. This increases power consumption.
"Powersave" sets the clock rate to the lowest value to save power.
"Userspace" allows the userspace to set the clock speed.
"External Connector Class (extcon) support" provides the userspace with a way to watch external connectors like USB and AC ports. This allows applications to know if a cable was plugged into a port. Users will almost always want this enabled. If anyone has purposely disabled this for a legitimate reason, please share with us why that would be needed.
The "GPIO extcon support" driver is just like the above driver, but is made specifically for GPIO pins.
Next, there is a list of various vendor/device specific controllers for memory (Memory Controller drivers). Memory chip controllers may be separate devices or built inside the memory chips. These controllers manage the incoming and outgoing data flow.
The "Industrial I/O support" driver provides a standard interface for sensors despite the bus type they are on (that is, PCIe, spi, GPIO, etc.). IIO is a common abbreviation for Industrial Input/Output.
The Linux kernel offers support for a large variety of accelerometers, amplifiers, analog to digital converters, inertial measurement units, light sensors, magnetometer sensors, and many other sensors and converters.
The "Intel Non-Transparent Bridge support" driver supports PCIe hardware bridges which connect to systems. All writes to mapped memory will be mirrored on both systems.
"VME bridge support" is the same as above except the bridge uses VME which is a different bus standard.
"Pulse-Width Modulation (PWM) Support" controls the back-light and fan speed by regulating the average power received by such devices.
"IndustryPack bus support" offers drivers for the IndustryPack bus standards.
In the next article, we will configure the firmware drivers. Mahalo!
--------------------------------------------------------------------------------
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-18.4896/
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:
[2]:
[3]:
[4]:
[5]:
[6]:
[7]:
[8]:
[9]:
[10]:
[11]:
[12]:

View File

@ -0,0 +1,127 @@
23 The Linux Kernel: Configuring the Kernel Part 19
================================================================================
![](http://www.linux.org/attachments/slide-jpg.626/)
Aloha and welcome to the next article of the Linux kernel series! We are getting closer to the end of the configuration process. In this article, we will discuss firmware drivers and then the filesystem drivers.
The first driver in this category is for finding the boot-disk (BIOS Enhanced Disk Drive calls determine boot disk). Sometimes, Linux does not know which drive is the bootable drive. This driver allows the kernel to ask the BIOS. Linux then stores the information on sysfs. Linux needs to know this for setting up bootloaders.
Even if BIOS EDD services are compiled in the kernel, this option can set such services to be inactive by default (Sets default behavior for EDD detection to off ). EDD stands for Enhanced Disk Drive.
When using kexec to load a different kernel, performance can be increased by having the firmware provide a memory map (Add firmware-provided memory map to sysfs).
The "Dell Systems Management Base Driver" gives the Linux kernel better control of the Dell hardware via the sysfs interface.
The hardware's information can be accessed by the software via /sys/class/dmi/id/ with this driver enabled (Export DMI identification via sysfs to userspace). DMI stands for Desktop Management Interface. The DMI manages the components of the hardware and can access the hardware's data. The structure of the data in the BIOS and hardware is regulated by the System Management BIOS (SMBIOS) specification.
The raw data tables from the DMI can be accessed with this driver (DMI table support in sysfs).
To boot from an iSCSI driver, enable this driver (iSCSI Boot Firmware Table Attributes).
The last firmware driver is a set of "Google Firmware Drivers". These are drivers for Google-specific hardware. Do not enable this driver unless you work for Google and need to use Linux on such hardware or if you are making a Linux kernel for a computer you stole from Google.
Next, we can configure the file system support of the kernel.
The "Second extended fs support" driver provides the EXT2 filesystem. [http://www.linux.org/threads/ext-file-system.4365/][1]
![](http://www.linux.org/attachments/kernel_19-png.627/)
The "Ext2 extended attributes" offers the ability to use extra metadata not natively supported by the filesystem.
The "Ext2 POSIX Access Control Lists" driver adds additional permission schemes not native to EXT2.
The "Ext2 Security Labels" enhances the security provided by SElinux.
Enabling "Ext2 execute in place support" allows executables to be executed in the current location without being executed using the paged cache.
The EXT3 filesystem is offered by this driver (Ext3 journaling file system support). [http://www.linux.org/threads/ext-file-system.4365/][2]
The "Default to 'data=ordered' in ext3" driver sets the data ordering mode to "Ordered". This deals with the way the journaling and writing work. Data ordering is explained in this article - [http://www.linux.org/threads/journal-file-system.4136/][3]
The "Ext3 extended attributes" offers the ability to use extra metadata not natively supported by the filesystem. Again, the following EXT3 drivers/features are the same as for EXT2 - "Ext3 POSIX Access Control Lists" and "Ext3 Security Labels". Also, the same is true for the following EXT4 drivers/features - "Ext4 POSIX Access Control Lists", "Ext4 Security Labels", and "EXT4 debugging support".
Journal Block Device debugging is supported by EXT3 (JBD debugging support) and EXT4 (JBD2 debugging support).
The next driver offers the Reiser filesystem (Reiserfs support). [http://www.linux.org/threads/reiser-file-system-reiser3-and-reiser4.4403/][4]
Debugging exists for the Reiser filesystem (Enable reiserfs debug mode).
The kernel can store ReiserFS statistics in /proc/fs/reiserfs (Stats in /proc/fs/reiserfs).
The following Reiser drivers/features are the same as the ones for EXT2/3/4 - "ReiserFS extended attributes", "ReiserFS POSIX Access Control Lists", and "ReiserFS Security Labels".
JFS is also supported by the Linux kernel and includes various features - "JFS filesystem support", "JFS POSIX Access Control Lists", "JFS Security Labels", "JFS debugging", and "JFS statistics". [http://www.linux.org/threads/journaled-file-system-jfs.4404/][5]
Again, XFS is supported with drivers/features that can be enabled - "XFS filesystem support", "XFS Quota support", "XFS POSIX ACL support", "XFS Realtime subvolume support", and "XFS Debugging support". [http://www.linux.org/threads/xfs-file-system.4364/][6]
The Global FileSystem 2 is supported by the Linux kernel (GFS2 file system support). This filesystem is used to share storage in a cluster.
The "GFS2 DLM locking" driver offers a distributed lock manager (DLM) for GFS2.
The Oracle Cluster FileSystem 2 is supported by the Linux kernel (OCFS2 file system support). This filesystem is used to share storage in a cluster.
The "O2CB Kernelspace Clustering" driver offers various services for the OCFS2 filesystem.
The "OCFS2 Userspace Clustering" driver allows the cluster stack to execute in userspace.
The "OCFS2 statistics" driver allows the user to get statistics concerning the filesystem.
Like with most of the Linux kernel, the OCFS2 offers logging (OCFS2 logging support). This may be used to watch for errors or for debugging purposes.
The "OCFS2 expensive checks" driver offers storage consistency checks at the cost of performance. Some Linux users recommend only enabling this feature for debugging purposes.
The kernel also contains the new B-Tree FileSystem; this driver offers the disk formatter (Btrfs filesystem Unstable disk format). BTRFS is still in development and is planned to one day become as popular or more popular than EXT4. [http://www.linux.org/threads/b-tree-file-system-btrfs.4430/][7]
The "Btrfs POSIX Access Control Lists" driver adds additional permission schemes not native to BTRFS.
Next, there is a BTRFS check tool (Btrfs with integrity check tool compiled in (DANGEROUS)). Since, BTRFS is a newly developing filesystem, most of the software associated with it are unstable.
The NIL-FileSystem is also supported by Linux (NILFS2 file system support). [http://www.linux.org/threads/new-implementation-of-a-log-structured-file-system-nilfs.4547/][8]
To support the flock() system call used by some filesystems, enable this driver (Enable POSIX file locking API). Disabling this driver will reduce the kernel size by about eleven kilobytes. The driver provides file-locking. File-locking is the process of allowing one process to read a file at a time. This is commonly used with network filesystems like NFS.
The "Dnotify support" driver is a legacy filesystem notification system that informs the userspace of events on the file system. One use of this and the successor notifications software is to monitor the filesystem for applications. Certain applications tell this daemon what events to watch. Otherwise, each userspace application would need to complete this task themselves.
Remember, Dnotify is a legacy system, so what is the new notification system? It is Inotify which is provided by this driver (Inotify support for userspace).
An alternative notification system is fanotify (Filesystem wide access notification). Fanotify is the same as Inotify, but fanotify relays more information to the userspace than Inotify.
Fanotify can check permissions with this driver enabled (fanotify permissions checking).
For systems that need to divide the storage space by user will want "Quota support". [http://www.linux.org/threads/atomic-disk-quotas.4277/][9]
The following driver allows disk quota warnings and messages to be reported through netlink (Report quota messages through netlink interface). Netlink is a socket interface on the userspace that communicates with the kernel.
Quota messages can also be sent to a console (Print quota warnings to console (OBSOLETE)).
This driver allows the quota system to perform extra sanity checks (Additional quota sanity checks). In computer technology, a sanity check is the process of checking for errors that may be due to poor programming. The files and output are inspected to ensure the data is what it should be and not structured in some odd fashion.
Some old system use the old quota system but want to retain the old quota system when upgrading to a newer kernel. This is easily solved by enabling this driver (Old quota format support). Many readers may be wondering why someone would want to keep the old quota system instead of upgrading. Well, imagine being the manager of the IT department of a very large corporation that has many servers running very important tasks. Would you want to create and configure a new (and possibly large) quota system when you can continue using the one that works well? Generally, with computers, follow the principle - If it is not broken or will not cause security issues, do not fix it.
The newer quota system supports 32-bit UIDs and GIDs with this driver (Quota format vfsv0 and vfsv1 support).
To automatically mount remote storage units, enable this driver (Kernel automounter version 4 support).
FUSE filesystems are supported by this driver (FUSE (Filesystem in Userspace) support). Filesystem in Userspace (FUSE) allows any user to create their own filesystem and utilize it in userspace.
A special extension for FUSE can be used to utilize character devices in userspace (Character device in Userspace support).
In the next article, we will discuss caches, optical disc filesystems, FAT32 on Linux, and other interesting filesystem topics. Mahalo!
--------------------------------------------------------------------------------
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-19.4929/
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://www.linux.org/threads/ext-file-system.4365/
[2]:http://www.linux.org/threads/ext-file-system.4365/
[3]:http://www.linux.org/threads/journal-file-system.4136/
[4]:http://www.linux.org/threads/reiser-file-system-reiser3-and-reiser4.4403/
[5]:http://www.linux.org/threads/journaled-file-system-jfs.4404/
[6]:http://www.linux.org/threads/xfs-file-system.4364/
[7]:http://www.linux.org/threads/b-tree-file-system-btrfs.4430/
[8]:http://www.linux.org/threads/new-implementation-of-a-log-structured-file-system-nilfs.4547/
[9]:http://www.linux.org/threads/atomic-disk-quotas.4277/