谁能讲讲linux2.6.23以后active arch x86 64/x86/boot中的setup.s的功能谁来实

linux内核(5)
计算机在启动时都是先加电,然后进行硬件检测并引导操作系统的初始化程序,然后操作系统的初始化程序程负责读入系统内核并建产系统的运行环境.一这过程相对来说比较复而且与CPU体系结构相关,这里我们通过linux并以i386的体系结构对这一过程进行较为详细的说明.
一、硬件检测
当机器加电后它首先执行BIOS(基本输入输出系统)中的代码,BIOS首先执行加电自检程序(POST),当自检通过程便完成了硬件的启动。POST程序通过对内存及其他硬件的设备的诊断检测确定硬件的存在并可正确操作。BIOS是固化在芯片里的程序,执行这一过程一般只需要几秒钟。当自检完成后 BIOS按照系统COMS中设置的启动顺序搜寻有效的启动驱动器(这里我们以硬盘为例),并读入系统引导扇区,并将系统控制权交给引导程序。
二、加载和执行引导程序
系统引导程序主要是把系统内核装载到内存,启动盘必须在第一个逻辑磁道上包含引导记录。这512个字节的扇区又被称作是引导扇区,在系统完成加电自检后, BIOS从启动盘中将引导扇区读入到内存中。引导记录中包含了一些磁盘的物理特性的参数。在引导扇区被读入内存后,BIOS就能从这里读取到启动盘的物理参数。一旦引导记录加载完毕,BIOS就交出系统的执行控制权,跳转到引导程序
的头部执行。引导记录开头是一条无条件转移指令,它将立即跳转到地址0x03e执行引导程序,在引导扇区中这个引导程序将从磁盘中读出其他几个更为复杂的程序并由它们加载系统内核。
Linux的引导程序由汇编代码文件arch/i386/boot/bootsect.S生成,它利用对BIOS功能的调用将 arch/i386/boot/下的setup.S文件和内核映象加载到内存。i386的体系结构的CPU分保护模式和实模式两种,在实模式下只能使用低端的640K内存。系统在加载引导程序时CPU是处在实模式下,而现在的内核映象文件一般都超过了640K的限制,即使是经过压缩过的内核映象,这个内核映象文件通常是bzImage,我们在编译内核时通常要用到这个文件。由于bzImage超出了640K这一限制,所以linux设计了一个
bootsect_helper子程序(定义在arch/i386/boot/setup.S中),引导程序通过循环调用bootsect_helper 将内核映象一块一块的装入内存,当内核加载完毕,系统跳转到setup.S的开始位置开始执行,setup.S仍在实模式下运行,主要功能是设置系统参数 (如:内存、磁盘等),并为进入保护模式做准备,最后进入到保护模式并跳转到内核映象文件的头部开始执行内核。这里提一下有关linux的引导程序
lilo和grub,lilo和grub可以引导多个系统,如果机器上要装多系统的话一般都会用到它们,这一引导程序也储存在引导扇区中或者存放在主引导记录中(MBR),lilo和grub都许允用户自己配置,它们在系统安装时建立了关于系统内核占用磁盘数据块的位置对照表。当用户选择启动linux系统后,同样也跳转到setup.S上运行。
三、内核初始化
当setup.S执行完后,CPU进行保护模式,并开始执行内核,如果内核是经过压缩的,那么首先执行 arch/i386/boot/compressed目录下的head.S建立堆栈并解压内核映象文件,然后再转入arch/i386/kernel下的
head.S。如果没有压缩则直接转到arch/i386/kernel下的head.S开始执行。arch/i386/kernel/head.S程序负责数据区(BBS)、中断描述表(IDT)、段描述表(GDT)、页表和寄存器的初始化。最后进入start_kernel()模块。
此时系统运行在内核模式(0级别)下,转入到init/main.c中的start_kernel()。start_kernel()继续其他方面的初始化工作,主要是初始化系统的核心数据结构,主要包括:
setup_arch():执行与体系结构相关的设置。
trap_init():设置各种入口地址。
init_IRQ():初始化IRQ中断处理机制。
sched_init():设置并启动第一个进程init_task()。
softirq_init():对软中断子系统进行初始化。
console_init():初始化控制台、显示器.
init_modules():初始化kernel_module。
fork_init():定义系统最大进程数.
最后进入rest_init()函数并调用kernel_thread()创建init内核线程,进行系统配置。
init内核线程占用进程描述表的第一项,由它来创建其他完成系统初始他的进程。
init内核线程首先要销定内核,然后调用do_basic_setup()来初始化外部设备及加载驱动程序。主
要的初始化工作包括:
PCI总线初始化。
网络初始化。
文件系统初始化。
加载文件系统。
在do_basic_setup()调用完成后,init()会释放初始化函数据占用的内存,并且打开/dev/console
设备重新定向控制台,用系统调用execve来执行用户态程序/sbin/init。至此,linux的内核初始化工作完成。
下面的工作就由用户态的/sbin/init程序来完成。init程序程读取/etc/inittab文件来决定它具体的工作。在inittab中比较重要的几条是:
id:5:initdefault 决定操作系统启动时缺省的执行级别(这里说讲的是系统的运行级别,而不同于CPU的级别)
si:sysinit:/etc/rc.d/rc.sysinit 执行/etc/rc.d/rc.sysinit的脚本。rc.sysinit主要的工作是 激活交换分区、检查磁盘、加载硬件模块。
1:2345:respawn:/sbin/mingetty tty1 显示登录界面
至此,整个系统的引导过程就完成了。希望这篇文章对大家学习操作系统能有所帮助。&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:33533次
排名:千里之外
转载:37篇
(1)(4)(3)(15)(3)(7)(5)(1)编译内核时候出错了 提示 sh /mnt/linux-2.6.25.19/arch/x86/boot/install.sh 2.6.25.19 arch/x86/boot/bz_百度知道
编译内核时候出错了 提示 sh /mnt/linux-2.6.25.19/arch/x86/boot/install.sh 2.6.25.19 arch/x86/boot/bz
6.19 arch&#47.6;boot&#47.19&#47.25;cp -avp &#47.6;boot&#47.21&#47.25.el5
.6.19.6.tar.19/arch&#47.sh 2.8 Linux 系统编译内核如下;kernel-2..25.patchcd linux-2.25,选择“IP.tar.18-92;请Linux高手指点;boot&quot:tar -xjvf linux-2我在redhat 4.&#47.map &quot.6;netfilter-layer7-v2.21;bzImage Sboot&#47.;linux-2.gzcd linux-2.25.;x86&#47.25;config-2.19/core netfilter configuration &quot.25-layer7-2;mnt&#47:Netfilter Configuration” 中的 “IPv4 connection tracking support”
“ REDIRECT target support”
cd linux-2.sh &#47.6;make make modules_installmake install在最后一步 make install 执行后 出现下面错误信息.19/x86// ;patch -p1 &lt.21;.6;install.bz2tar -xzvf netfilter-layer7-v2.configmake menuconfig选择 “Networking”选择 “Networking options”选择 “Network packet filtering framework(netfilter)”选择 “Core Netfilter Configuration”选择 “Netfilter connection tracking support” 返回
我有更好的答案
我编译了3次没成功,但是没解决,耗费时间啊,不过好像现在编译完成的内核能够使用了!我也碰到过!,现在还在编译
确认下载的内核版本跟cpu比如32位和64位的问题
上面这个不是错误啊,linux下错误前面都会有 error字样的。这只是系统提示
把所有显示信息都贴出来了吗?目前没看出来...sorry
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Immutable Page
More Actions:
Print View
Delete Cache
------------
Check Spelling
Like Pages
Local Site Map
------------
Rename Page
Delete Page
------------
Attach File
Package Pages
Render As Docbook
Subscribe User
Linux 2 6 24
Spam: Ulrich Drepper, the libc maintainer, has published a
about "What every programmer should know about memory"
Linux kernel version 2.6.24 Released 24 January 2008 ()
2.6.24 includes CPU "group scheduling", memory fragmentation avoidance, tickless support for x86-64/ppc and other architectures, many new wireless drivers and a new wireless configuration interface, SPI/SDIO MMC support, USB authorization, per-device dirty memory thresholds, support for PID and network namespaces, support for static probe markers, SELinux performance improvements, SATA link power management and port multiplier support, Large Receive Offload in network devices, memory hot-remove support, a new framework for controlling the idle processor power management, CIFS ACLs support, many new drivers and many other features and fixes.
Performance/size improvements
The CFS task scheduler
is getting
in 2.6.24. 2.6.23's CFS context switching is more than 10% slower than the old task scheduler. With the optimization done in 2.6.24, CFS is now even a bit faster than the old task scheduler (which is quite fast already). The compiled size of the scheduler has also improved and now it's a bit smaller on UP and a lot smaller in SMP.
Fair Group Scheduling
You can read
about the Fair Group Scheduling feature.
Another feature in the scheduler is Fair Group Scheduling. Normally the scheduler operates on individual tasks and strives to provide fair CPU time to each task. Sometimes, it may be desirable to group tasks and provide fair CPU time to each such task group. For example, it may be desirable to first provide fair CPU time to each user on the system and then to each task belonging to a user. In other words, given two users, one running one cpu-bound process and the other two cpu-bound processes, you may want to give 50% of CPU time to the first users and his task, and 50% to the other user, which will be shared between his two processes - 25% of CPU time for each. Group Scheduling provides the ability to choose partitions to support the previous scenario.
At present, there are two (mutually exclusive) mechanisms to group tasks for CPU bandwidth control purpose: 1) Group scheduling based on user id, which is the case previously mentioned as example. This mechanism is configurable, which means you can have more CPU time than just a 50%/50% rule - for example, you can assign user root double the priority of other users. 2) Group scheduling. This mechanism (based in the "task control groups", see section 2.10) lets the administrator create arbitrary groups of tasks (ie: "multimedia", "compiling"), set how much CPU time 'priority' you want to give that group by catting the value to its cpu_share file, and then attach a PID to whatever task group you want. Documentation on how to use those two features can be found in .
guest time reporting
Additionally, the task scheduler in 2.6.24 is adding a new "guest" field after "system" and "user" in /proc/&PID&/stat, where it tracks how much CPU time a task is spending in running a 'virtual' CPU.
The Tickless feature was . This feature allows the kernel to disable timer interrupts for longer, variable periods, saving some power and improving performance, especially in virtual guests. 2.6.24 adds tickless support to the widespread 64-bit x86 architecture, but also to PPC, the virtualized architecture UML, and some variants of ARM and MIPS. They join the already tickless supported x86-32, SPARC-64 and SH.
New wireless configuration interface
In , Linux got a
new wireless stack. This new stack is backwards compatible with the old ioctl-based configuration of the old stack. However, the new stack was designed to have a much better configuration interface, based on netlink. While the backwards compatibility isn't going away, all wireless configuration tools are recommended to have long-term plans to switch to the new interface.
In Linux 2.6.22, the mac80211 (formerly d80211) wireless stack was , but not many drivers that use this new stack have been merged (only one). Linux 2.6.24 will have a lot of new wireless drivers 2.3 MB of source files in total:
iwlwifi driver for the Intel PRO/Wireless 3945ABG/BG Network Connection and Intel Wireless Wifi Link AGN (4965) adapters
rt2x00 driver for Ralink wireless hardware (rt2400 pci/pcmcia, rt2500 pci/pcmcia, rt61 pci/pcmcia, rt2500 usb, rt73 usb). Check the
adm8211 driver for the ADMtek ADM8211x based wireless cards. These are PCI/mini-PCI/Cardbus 802.11b chips found in cards such as: Xterasys Cardbus XN-2411b, Blitz Netwave Point PC, Trendnet 221pc, Belkin F5d6001, SMC 2635W, Linksys WPC11 v1, Fiberline FL-WL-200X, 3com Office Connect (3CRSHPW796), Corega WLPCIB-11, SMC 2602W V2 EU, D-Link DWL-520 Revision C
b43 driver for modern BCM43xx devices. This driver supports the new BCM43xx IEEE 802.11G devices, but not the old IEEE 802.11B devices - those are supported by the b43legacy driver. This driver uses V4 firmware, which must be installed separately using b43-fwcutter
b43legacy driver for legacy BCM43xx devices from Broadcom (BCM4301 and BCM4303) and early model 802.11g chips (BCM4306 Ver. 2) used in the Linksys WPC54G V1 PCMCIA devices. Newer 802.11g and 802.11a devices need the b43 driver. This driver uses V3 firmware, which must be installed separately using b43-fwcutter
p54 driver for prism54 softmac pci/usb hardware
Driver for Marvell Libertas 8385 Compactflash 802.11b/g cards
Libertas sdio driver
There are also a lot of network (non-wireless) drivers being merged, look at the section 2.14, "new drivers"
You can read
about the "Anti-fragmentation" feature.
A known weakness of the Linux kernel is the memory fragmentation that the system faces after days without rebooting or after intense operations. This makes difficult to do "high-order" memory allocations (allocations larger than the native page size - 4 KB on x86). It's relatively easy to trigger those cases. For example a network driver may try to allocate 4 pages to store data received from the network. This allocation may not succeed despite there being plenty of free memory available, as there is no single uninterrupted block of memory big enough (fragmentation). For almost three years patient developers have been continually developing and improving the anti-fragmentation patches to improve the memory allocator and reduce the tendency to fragment. These efforts have been finally merged in 2.6.24.
The purpose of this feature is to reduce external fragmentation by grouping pages of related types together. When pages are migrated (or reclaimed under memory pressure), large contiguous pages will be freed. Allocations are categorized by their ability to migrate. Tests show that about 60-70% of physical memory can be allocated on a desktop after a few days uptime. In benchmarks and stress tests, it has been found that 80% of memory is available as contiguous blocks at the end of the test. To compare, a standard kernel was getting & 1% of memory as large pages on a desktop and about 8-12% of memory as large pages at the end of stress tests.
The MMC layer, which is the code which implements support for MMC/SD memory cards, is suffering one of the biggest transformations in its life, because it has been
to get support for
SDIO is an alias for "Secure Digital I/O", and it allows to use the SD card slot (in the devices that support SDIO, ie. PDAs, cell phones or laptops) to use "small devices designed for the SD form factor, like GPS receivers, Wi-Fi or Bluetooth adapters, modems, Ethernet adapters, barcode readers, IrDA adapters, FM radio tuners, TV tuners, RFID readers, digital cameras, or other mass storage media such as hard drives" (quote from the ). There are currently three working drivers for this new stack: sdio_uart, a driver for the standardised GPS libertas_sdio, a driver for Marvell's 8686 L and hci_sdio, a driver for the standardised bluetooth interface.
SPI is required by SDIO, and it's a "bus" (like IDE, SATA, USB...) which is used to access a wide range of devices, but more importantly, some systems require to access MMC/SD cards using a SPI controller instead of using a "native" MMC/SD controller. This has a disadvantage of being relatively high overhead, but a compensating advantage of working on many systems without dedicated MMC/SD controllers. 2.6.24 includes support for SPI and a experimental "MMC/SD over SPI" driver. ]
As part of the efforts to make the USB layer ready for , Linux 2.6.24 is getting support for USB device authorization, which allows you to control if a USB device (wireless or not) can be used or not in a system. As of now, when a USB device is connected it is configured and its interfaces immediately made available to the users. With this modification, only if root authorizes the device to be configured will then it be possible to use it.
Beside of providing an infrastructure to allow secure usage of wireless USB devices, this feature also allows to implement kiosk-style lockdown of USB devices, fully controlled by user space. Every USB device has a corresponding /sys/bus/usb/devices/&DEVICE&/authorized file. Writing
to that file authorizes a device to connect, 0 deauthorizes it. USB hosts can also set new devices connected to be deauthorized by writing 0 (or 1 to authorize) to /sys/bus/usb/devices/usb&X&/authorized_default. By default, wired USB devices are authorized by default to connect, and wireless USB hosts deauthorize by default all new connected devices (this is so because they need to do an authentication phase before authorizing).
You can read
about the "per-device dirty thresholds" feature.
When a process writes data to the disk, the data is stored temporally in 'dirty' memory until the kernel decides to write the data to the disk ('cleaning' the memory used to store the data). A process can 'dirty' the memory faster than the data is written to the disk, so the kernel throttles processes when there's too much dirty memory around. The problem with this mechanism is that the dirty memory thresholds are global, the mechanism doesn't care if there are several storage devices in the system, much less if some of them are faster than others. There are a lot of scenarios where this design harms performance. For example, if there's a very slow storage device in the system (ex: a USB 1.0 disk, or a NFS mount over dialup), the thresholds are hit very quickly - not allowing other processes that may be working in much faster local disk to progress. Stacked block devices (ex: LVM/DM) are much worse and even deadlock-prone (check the LWN article).
In 2.6.24, the dirty thresholds are per-device, not global. The limits are variable, depending on the writeout speed of each device. This improves the performance greatly in many situations.
You can read , and , about the "PID and network namespaces" feature.
Usually, there's a global PID namespace for a whole Linux system: The list of processes contains all the processes running in the system. There's also a global view of the networking stack (routing tables and firewall rules, etc). However,
need to have different views of the PID namespace and the networking stack. Linux 2.6.24 adds PID namespaces and basic support for network namespaces. They're used through the CLONE_NEWPID and CLONE_NEWNET clone() flags.
You can read
about the "Large Receive Offload" feature.
LRO combines received tcp packets to a single larger tcp packet and passes them then to the network stack in order to increase performance (throughput). After many out-of-the-tree iterations, mainline Linux is getting support for this feature , ,
There have been various proposals in the Linux arena for resource management/accounting and other task grouping subsystems in the kernel (Resgroups, User Beancounters, NSProxy cgroups, and others). Task Control Groups is the framework that is getting merged in 2.6.24 to fulfill the functionality that lead to the creation of such proposals. TCG can track and group processes into arbitrary "cgroups" and assign arbitrary state to those groups, in order to control its behaviour. The intention is that other subsystems hook into the generic cgroup support to provide new attributes for cgroups, such as accounting/limiting the resources which processes in a cgroup can access.
For example, cpusets (see Documentation/cpusets.txt) allows you to associate a set of CPUs and a set of memory nodes with the tasks in each cgroup. The CFS group scheduling feature uses cgroups to control the CPU time that every cgroup can get. Other various resource management and virtualization/cgroup efforts can become task cgroup clients. The configuration interface is described in Documentation/cgroups.txt
You can read
about the "Linux Kernel Markers" feature.
The Linux Kernel Markers implement static probing points for the Linux kernel. Dynamic probing system like kprobes/dtrace can put probes pretty much anywhere. However, the scripts that dynamic probing points use can become quickly outdated, because a small change in the kernel may trigger a rewrite of the script, which needs to be maintained and updated separately, and will not work for all kernel versions. Thats why static probing points are useful, since they can be put directly into the kernel source code and hence they are always in sync with the kernel development. Static probing points apparently can also have some performance advantages. They've no performance costs when they're not being used.
The kernel markers are a sort of "derivative" of the long-time external patchset "Linux Trace Toolkit" (LTT), which is a feature that has been around since . The Kernel Markers are a feature needed for the
project. In this release, there are no probing points being included, but many will be certainly included in the future, and some tracking tools like blktrace will probably be ported to this kind of infrastructure in the future.
You can read .
When support for the x86-64 AMD architecture was developed, it was decided to develop it as a "fork" of the traditional x86 architecture for comodity reasons. Many patches needed to patch a file in the i386 architecure directory, and another similar patch for the duplicated file in the x86_64 directory. It has been decided to unify both architectures in the same directory again.
This reunification has not been done in a radical way. In this release, both architectures have been unified in arch/x86, but only in appearance. All the source files in i386 and x86-64 directories have been moved to arch/x86, but renaming them with "_32" and "_64" suffixes. Ex: arch/i386/kernel/reboot.c has been moved to arch/x86/kernel/reboot_32.c, and arch/x86_64/kernel/reboot.c has been moved to arch/x86/kernel/reboot_64.c. Makefiles have been modified accordingly. So for now the reunification has been pretty much just a relocation of all the files and adaptation of the build machinery to make it compile just as it'd have been compiled in the old separated directories, done mostly with scripts.
In the future lots of those files will be unified and shared by both architectures, ex. reboot_32.c and reboot_64.c into reboot.c, and many files have already been unified in this release. Others will keep separated forever, due to the differences between both architectures.
Add the uvesafb driver. uvesafb is an enhanced version of vesafb. It uses a userspace helper (v86d) to execute calls to the x86 Video BIOS functions. The driver is not limited to any specific arch and whether it works on a given arch or not depends on that arch being supported by the userspace daemon ,
Add a framebuffer driver for Blackfin BF54x framebuffer device driver
Add driver for bf548 on chip ATAPI controller.
Add AVR32 PATA driver
Add platform IDE driver, used mostly for Memory Mapped IDE devices, like Compact Flashes running in True IDE mode
Add driver pata_cs5536 ATA driver for Geode companion chip
Add driver for Freescale 3.0Gbps SATA Controllers
Network(wireless)
Look at the section 2.3 "New wireless drivers and configuration interface"
Add ixgbe driver for Intel(R) 82598 PCI-Express 10GbE adapters (v4)
Add new E1000E pci-express e1000 driver (currently for ICH9 devices only)
Add Sun Neptune ethernet driver.
Add fast ethernet controller driver for mpc52xx
Add driver for IP1000A GBit cards
Add Tehuti network driver.
Add AR7 ethernet driver
Add device tree-aware EMAC driver
Virtual ethernet device driver.
Add IrDA driver for Kingsun Dazzle IrDA USB ,
Add IrDA driver for Kingsun KS-959 IrDA USB
Add driver for the AT73C213 DAC using Atmel SSC
Add ASoC CS4270 codec device driver
Add driver for Gallant SC-6000 card and clones: Audio Excel DSP 16 and Zoltrix AV302
Add map driver for NOR flash on the Intel Vermilion Range chipset
Add blackfin on-chip NAND Flash Controller driver
Add NAND Driver for Olympus MAUSB-10 and Fujifilm DPC-R1 card readers
Add atmel_usba_udc driver
Add driver for CH341 USB-serial adaptor
Eagle IV chipset support
Add ivtv-fb framebuffer driver for cx23415 devices
Add a driver for Toshiba TCM825x VGA camera sensor
Add driver for the internal MPX of the Panasonic VP27s tuner
Add driver for the silicon baseband tuner MT2266 from Microtune
Adding driver for the silicon baseband tuner MT2131 from Microtune tuner
Add driver for the Samsung S5h1409 demodulator, also known as the Conexant CX24227 demodulator
Add driver for the silicon baseband tuner DIBB0070 from DIBcom
Add CX23885/CX23887 PCIe bridge driver ,
Add driver for FSC chips
Add driver for Fintek F71882FG and F71883FG Super-I/O chips
Add driver for Analog Devices ADT7470 chips
Add driver for Fintek F75375S/SP and F75373 chips
IBM power meter driver
Add driver for the SMSC SCH3112, SCH3114, and SCH3116 Super-I/O chips
New driver to read FB-DIMM temperature sensors on systems with the Intel 5000 series chipsets
Add Davinci I2C controller support
Add generic driver for Bluetooth SDIO
and USB devices
Add UART driver for Texas Instruments' BRF63xx chips
Memory hot-remove support , , , ,
Generic Virtual Memmap support for SPARSEMEM: SPARSEMEM is a pretty nice framework that unifies quite a bit of code over all the arches, and it would be great if it could be the default so that the various forms of DISCONTIG and other variations on memory maps can be killed.
So far what has hindered this are the additional lookups that SPARSEMEM introduces for virt_to_page and page_address. This patch is a step to solve that problem and has the potential to allow to make SPARSMEM the default (and even the only) option for most systems , , , ,
Dynamic huge page pool resizing , , , , ,
Use lockless radix-tree probe
Memoryless nodes: Hardware from SGI, HP and Fujitsu can have sometimes configurations of nodes with CPUs but not memory
Remove ZERO_PAGE
SLUB: direct pass through of page size or higher kmalloc requests, reducing memory overhead and improving performance in many cases
oom: add oom_kill_allocating_task sysctl,
which will automatically kill the OOM-triggering task instead of scanning through the tasklist to find a memory-hogging target
Add node states sysfs class attributes in /sys/devices/system/node/
Intel IOMMU driver , ,
cpuidle: CPU idle is a generic framework for supporting software-controlled idle processor power management.
It includes modular cross-platform governors that can be swapped during runtime, including one optimized for NO_HZ, "menu"
Virtio: It's a "virtual I/O" layer which should allow common drivers to be efficiently used across most virtual I/O mechanisms. It includes a network driver, a block driver, a console driver, virtio transport for 9p, and lguest support , , , , , , ,
Remove fixed limit on number of guests, and lguests array
readahead: support of interleaved reads
Add a new per-cpuset flag called 'sched_load_balance'. When enabled in a cpuset (the default value) it tells the kernel scheduler that the scheduler should provide the normal load balancing on the CPUs in that cpuset, sometimes moving tasks from one CPU to a second CPU if the second CPU is less loaded and if that task is allowed to run there. When disabled (write "0" to the file) then it tells the kernel scheduler that load balancing is not required for the CPUs in that cpuset. This serves two purposes: 1) It provides a mechanism for real time isolation of some CPUs, and 2) it can be used to improve performance on systems with many CPUs by supporting configurations in which load balancing is not done across all CPUs at once, but rather only done in several smaller disjoint sets of CPUs
Arbitrary boot kernel in hibernation resume: It's not possible to hibernate a system and try to resume from hibernation with a different kernel - 2.6.24 changes that , , , , ,
Extended crashkernel command line ,
Chained sg support , , , , ,
Export processes resource limits via /proc
Implement file posix capabilities ( about this feature)
Improve performance of sys_time() (improves the sysbench oltp macrobenchmark by 4-5%)
softlockup: add softlockup_thresh sysctl to control the trigger limit for softlockup warnings
Add scaled time to taskstats based process accounting ,
Console keyboard events accessibility ,
Add /sys/module/name/notes
Allow passing of arguments to user mode helper when core_pattern is a pipe
Add vmcoreinfo: This feature frees the restriction that makedumpfile users should install a vmlinux file (including the debugging information) into each system
quota: send messages via netlink
Driver core: add CONFIG_UEVENT_HELPER_PATH
Add kernel parameter to overwrite legacy pty count
unicode diacritics support
Add the MMF_DUMP_ELF_HEADERS option to /proc/pid/coredump_filter
NBD: allow hung network I/O to be cancelled
F_DUPFD_CLOEXEC fcntl() command implementation
Convert LSM into a static interface
Add ICMPMsgStats MIB () for IPV4
Add ICMPMsgStats MIB () for IPV6
Update setsockopt(IPV6_MULTICAST_IF) to support RFC 3493, try2
Export userland ND options through netlink (RDNSS support)
Discard fuzzy SACK blocks
Enable SACK enhanced FRTO (RFC4138) by default
Randomize port selection.
Port randomization
Autotuning to the sctp buffer management
Implement the Supported Extensions Parameter
Implement SCTP-AUTH ,, , , , , ,
Implement SIOCINQ/FIONREAD
Add socket option to query the current MPS
Rate-limit DCCP-Syncs
Add support for setting TX power and radio status
Revamp interface and filter configuration
Add association LED trigger
Implement ERP info change notifications
Add SIOCGIWTXPOWER routine
9p: Make transports dynamic
and attach-per-user support
Add stateless NAT on IPv4 packets
Netfilter: Add xt_time match: a "time" match, which allows you to match based on the packet arrival time (at the machine which netfilter is running) or departure time/date (for locally generated packets)
Convert IP route cache garbage collection from softirq processing to a workqueue
Dynamically allocate the loopback device ,
bonding: Optionally allow ethernet slaves to keep own MAC
AF_PACKET: Don't enable global timestamps.
Add ETHTOOL_[GS]FLAGS sub-ioctls ,
XFRM: xfrm audit calls
PKTGEN: Multiqueue support.
RFKILL: Add support for ultrawideband , for an rfkill LED. , for hardware-only rfkill buttons
Support for named pipes ,
Support for CIFS ACLs , , ,
Support for kerberos authentication , ,
Uninitialized Block Groups. In performance tests testing e2fsck time, e2fsck time on ext3 grows linearly with the total number of inodes in the filesytem. In ext4 with the uninitialized block groups feature, the e2fsck time is constant, based solely on the number of used inodes rather than the total inode count. Since typical ext4 filesystems only use 1-10% of their inodes, this feature can greatly reduce e2fsck time for users.
With performance improvement of 2-20 times, depending on how full the filesystem is ,
Support for inline data in the inode data , , , ,
Support for 64 bit inodes , ,
Add IPV6 support , , , , , , , , , , , ,
Add a client RPC transport for supporting kernel NFS over RDMA mounts, including Infiniband and iWARP. Experimental , , , , ,
Support BSD locking semantics
Add support for mandatory locking
Add LZO compression support.
Radix tree based inode caching
Ext2 port of the reservations code from ext3 (improves the performance a lot)
Support large blocksize up to PAGESIZE for platforms like IA64, which has a 64k page size
Add in SunOS 4.1.x compatible mode
seed: New cipher algorithm
api: Add aead crypto type
aead: Add authenc
xts: XTS blockcipher mode implementation without partial blocks
Reduce the read/write SELinux overhead (to
Tune avtab to reduce memory usage
Improve performance on AVC misses
Policy selectable handling of unknown classes and perms
Use the scheduler preemption notifiers to make kvm preemptible
Communicate cr8 changes to userspace - allows running 64-bit Windows
Emulate local APIC in kernel, because lightweight exits (exits which don't involve userspace) are many times faster than heavyweight exits, it makes sense to emulate high usage devices in the kernel
Emulate hlt in the kernel
Add support for in-kernel PIC emulation
In-kernel I/O APIC model
Add uevent to core
uevent generate events
mpath: send uevents
Watching subtrees support
EFI boot support: EFI frame buffer driver. UEFI2.0 spec deprecates Universal Graphics Adapter (UGA) protocol and only Graphics Output Protocol (GOP) is produced
Enable HPET on ICH3 and ICH4
Add HPET force support for MCP55 (nForce 5) chipsets
Force enable HPET for CK804 (nForce 4) chipsets
Add support for picopower irq router
Enable tickless idle and high res timers for powerpc , ,
Use 1TB segments for all kernel mappings and for user addresses of 1TB and above, on machines which support them (currently POWER5+, POWER6 and PA6T)
ppc64: support CONFIG_DEBUG_PREEMPT
Bamboo board support , ,
AMCC PPC440EPx Sequoia board support , , ,
Walnut PPC405 board support , , , ,
Add support for the core of the Bestcomm API for the Freescale MPC5200(b). The Bestcomm engine is a microcode-controlled / tasks-based DMA used by several of the onchip devices , , ,
4xx: Add RGMII support for Sequoia 440EPx , add AMCC Kilauea eval board support , , . Also, enable NEW EMAC support for Sequoia 440EPx , on the PPC 440GP Ebony board , on the PPC405 Walnut board , on Bamboo board
Remove APUS support from arch/ppc
bootwrapper: Add CPM serial driver , add 8xx cuboot support , add PowerQUICC II (82xx with CPM) cuboot support , add cuboot for MPC7448HPC2 platform
Add cpu feature for SPE handling
85xx: Add basic Uniprocessor MPC8572 DS port
MPC5200 low power mode
Add generic Xilinx Virtex board support , ,
Celleb: New HTAB Guest OS Interface on Beat , support for Power/Reset buttons
Add early debug console for CPM serial ports.
Embedded Planet EP88xC support
mpc82xx: Add pq2fads board support.
MPC8568E-MDS: add support for ds1374 rtc
Add basic board support for the MPC8610 HPCD ,
spi: Support non-QE processors
Implement logging of unhandled signals
Add new processor ADSP-BF52x arch/mach support
Support for HV Sistemas H8606 board
Add NFC driver support in BF527-EZKIT board
Add stack checking
Initial patch to add earlyprintk support
Add ability to expend the hardware trace buffer
Atmel EB01 board support , ,
Clocksource and clockevents for at91rm9200
and ns9xxx ,
Add rtc-cmos driver for ISA-based footbridge platforms
ep93xx: add cirrus logic edb9307 support
OMAP: Add minimal OMAP2430 support
OMAP: Add support for Amstrad Delta keypad
OMAP: add SoSSI clock ,
OMAP: Basic support for siemens sx1
OMAP: Palm Tungsten|T support
PXA3xx base support
CM-X270 machine support
ITE 8152 PCI bridge support
CM-x270: PCMCIA support
Add SH7720 CPU support
Bring SMP support back from the dead
Initial SH-X3 SMP support.
Initial INTC controllers SMP support
intc support for: SH7710 , SH7705 , SH7785 , SH7760 , SH7706, SH7707, SH7708 and SH7709 , x3 , sh7619 , sh7206
x3proto: ILSEL IRQ support.
Magic Panel R2 board support.
Add maple bus support for the SEGA Dreamcast ,
Support for new termios.
Enable MSI on sun4u Fire PCI-E controllers.
Implement atomic backoff
Add support for BCM47XX CPUs.
Dyntick support for SMTC
and clockevent/clocksource drivers for other hardware , , , , ,
IRQ Affinity Support for SMTC on Malta Platform
Add back support for LASAT platforms
Add GT641xx IRQ routines.
GPIO LED driver for the WGT634U machine
SYNC emulation for MIPS I processors
checkstack support
/sys/kernel/debug/at32ap_clk
Add support for Savant/Rosie1 board ,
New style Coldfire UART driver
Add VDE networking support
Throw out CONFIG_MODE_TT
Add driver for ACPI methods to call native firmware
Add per-cpu idle time / idle count sysfs attributes.
Implement "pci=noaer"
Introduce and enable PCI domain support in x86 , add 'nodomains' boot option, and pci_domains_supported global
Add Sonics Silicon Backplane bus support
XilinxFB: Add support for custom screen resolution
pm2fb: accelerated 24-bit fillrect , accelerated imageblit , Permedia 2V hardware cursor support , hardware cursor support for the Permedia2
pm3fb: mtrr support and noaccel option , copyarea and partial imageblit suppor , hardware cursor support
mbxfb: Improvements and some new features
tdfxfb: mtrr support , hardware cursor
pxafb: Add support for other palette formats
s3c2410fb: multi-display support
Intel FB: support for interlaced video modes ,
vfb: make virtual framebuffer mmapable
Radeonfb Xpress 200M RC410 support
fbdev: Support for byte-reversed framebuffer formats
ps3fb: add virtual screen and panning support
SATA (libata)
Link power management infrastructure. Device Initiated Power Management, which is defined in SATA 2.5 can be enabled for disks which support it. This feature enables DIPM in linux when the user sets the link power management policy to "min_power". It's also possible to set the PM policy to "max_performance" or "medium_power" . Implement hw link power management support for ahci
SATA Port Multiplier support , , , . Implement PMP support for ahci
and sata_sil24
ACPI-based PATA/SATA hotplug
libata_pata: ACPI support
Turn on ACPI by default
Add a IDE style DMA disable
ahci: RAID mode SATA patch for Intel Tolapai , add MCP79 support to AHCI driver
pata_ns87415: Initial cut at
IDE support
pata_sil680: Add MMIO support
sata_nv: add SW NCQ support for MCP51/MCP55/MCP61
Old IDE stack
Remove "idex=dma" kernel parameter , add "hdx=nodma" kernel parameter
Hook ACPI _PSx method to IDE power on/off
sis5513 IDE: remove /proc/ide/sis
amd74xx IDE: remove /proc/ide/amd74xx
asix: Support for USB autosuspend
ax88796: add 93cx6 eeprom support
B43: LED triggers support , RF-kill support
B44: port to native ssb support
bmac: add simple ethtool support for network manager
dl2k: add Sundance/Tamarack TC902x Gigabit Ethernet Adapter support
hostap_cs: Add device ID for Telekom T-Sinus 111card , add Linksys card ID
ibmveth: Implement ethtool hooks to enable/disable checksum offload , enable TCP checksum offload , add ethtool TSO handlers , add ethtool driver stats hooks
IOC3: Switch hw checksumming to ethtool configurable.
ipw2200: batch non-user-requested scan result notifications
libertas: monitor mode support for OLPC firmware
myri10ge: add IPv6 TSO support
netconsole: Support dynamic reconfiguration using configfs , support multiple logging targets
ns83820: add ethtool media support
p54usb: Add device ID for Linksys WUSB54AG
pasemi_mac: enable iommu support
pcnet32: add suspend and resume capability
r8169: MSI support
rtl8187: Add device ID for HP wireless print kit usb dongle
skge: eeprom support , add a debug interface
TG3: Add 5761 support , , add 5784 and 5764 support. , add 5723 support , add management FW version to ethtool report
uli526x: Add suspend and resume capability
zd1211rw: monitor all packets , add ID for Sitecom WL-162 , add ID for ZyXEL M-202 XtremeMIMO , add USB id for Telegent TG54USB WLAN adapter , add ID for Talktalk SNU5630NS/05
dgrs: remove the driver, since this device never was sold
OSS emulation: add new AFMT_* formats , support 3-bytes 24bit format
The next round of scheduled OSS code removal
hda-intel: Add POWER_SAVE option.
It's an experimental option to achieve an aggressive power-saving.
With this option, the driver will turn on/off the power of each codec and controller chip dynamically on demand. Note that this power-saving might cause slight click-noise at power-on/off.
Also, it might take some time to wake up the codec, and might even drop some tones at the very beginning.
This seems to be the side-effect of turning off the controller chip
hda-intel: add hwdep interface , add support for the MCP79
hda-codec: Add a generic bind-control helper , add support for the ASRock K8NF6G-VSTA motherboard , add more Dell systems , add support for Acer Aspire laptops , update realtek codec support , add support for Biostar NF61S SE mobo , add ALC268 acer model , add model for MSI m673x , add auto-mute function to Sony VAIO with STAC9872 , add support for Macbook Pro rev3 , add support for Toshiba Satellite P205 , add support for Haier W66 , add SPDIF support on ALC880 fujitsu model , add laptop-automute model for AD1986A , add support for ASUS A7M , add missing model names for ALC882 codecs , add support for Toshiba A305 , add 4 channel support for Realtek ALC883 , add two new systems to ALC883 , add support for analog loopback to STAC2x/927x , add support for Acer Aspire 9303
snd-emu10k1: Add support for E-Mu 1616 PCI, 1616M PCI, 0404 PCI, E-Mu , add support for ADAT and S/PDIF. , add support for SPDIF/ADAT status.
snd-ca0106:Add recognition for new variant. Fixes ALSA bug#3251
Add missing models for Dell with STAC9200
and Stac9205 codecs.
Add the ESS1879 pnpbios ID to the es18xx driver
usb-audio: Add advanced mode support for Edirol UA-1EX , add Ozone Academic support , add basic support for E-Mu USB devices.
bt87x: Add known PCI ID entries
hdsp: Add support for latset RME9632 revisions
cmipci: add 96 kHz support
caiaq: support for Native Instrument's Rigkontrol3
Add support for ASUS P701 eeepc
Battery: Add sysfs support , add sysfs alarm
SBS: Add sysfs alarm
AC: Add sysfs interface
SBS: Split host controller (ACPI0001) from SBS driver (ACPI0002)
SBS: Add support for power_supply class (and sysfs)
fujitsu-laptop: create Fujitsu laptop platform specific driver
thinkpad_acpi: Map volume and brightness events on thinkpads
OneNAND 2X program support
OneNAND Simulator support
MAPS: Merge Lubbock and Mainstone drivers into common PXA2xx driver
Remove Momenco Ocelot NOR flash support
m25p80 handles more chips, uses JEDEC ids and small eraseblocks
Add FUJITSU MBM29F800BA and ST M29F800AB descriptions
Delete the driver for AT26Fxxx dataflash devices
usbtouchscreen - add support for Generaltouch devices , add support for IdealTEK URTC1000 , support DMC devices with empty EEPROM , add support for Gotop tablet devices
Remove ec3104_keyb driver
ALPS: add support for model found in Dell Vostro 1400
lifebook - add signature of Panasonic CF-72
gpio-keys - add suspend/resume support
Add support for HP Jornada onboard keyboard (HP6XX)
Add support for HP Jornada 7xx onboard keyboard
Add support for the HP Jornada 7xx (710/720/728) touchscreen
ALPS: add signature for Thinkpad R61
Add support for SEGA Dreamcast keyboard
Add support for Blackfin BF54x Keypad controller
Add srp transport class
srp_transport: add target driver support
Add supported_mode and active_mode sysfs attributes to the host
fc_transport: add target driver support
arcmsr: add SATA RAID plus other fixes
mpt fusion: Add support for ATTO 4LD: Rebranded LSI 53C1030
aic94xx: Add new PCI ID for ASC58300
aic7xxx: Add suspend/resume support
qla2xxx: Add flash burst-read/write support , allow region-based flash-part accesses , add PCI error recovery support
advansys: Convert to PCI driver model , convert to EISA driver model , convert to ISA driver model
fc4: remove this and all associated drivers
ib_srp: convert to use the srp transport class
tgt: add I_T nexus support
sym53c8xx: PCI Error Recovery support
UEAGLE: Devolo and Elsa chipsets support
serial/pl2303: support for BenQ Siemens Mobile Phone EF81
Export URB statistics for powertop
Add ohci SSB bus glue
Add support for SHARP WS011SH to ipaq.c
Add support for Microsoft Natural Ergonomic Keyboard 4000
Add support for Thrustmaster FGT Force Feedback wheel
Enable hiddev for the Santarosa Macbookpro IR receiver
Add support for Microsoft Wireless Laser Keyboard 6000
hiddev: Add 32bit ioctl compatibilty
Add hidraw interface
V4L: Add internal ioctl-like interface.
dtt200u: add support for the Miglia TVMini USB DVB-T adapter
Add remote control support for the Hauppauge Nova-T 500
Add support for Compro Videomate 500 with DiB7000PC
tuner: better tuner radio support
ivtv: add Avermedia M116
cx25840: add radio support.
saa7134: add DVB-T support for Avermedia Super 007
cx23885: Added HVR1250 ATSC support
Add IR remote support for FusionHDTV 5 RT Gold
cx23885: add support for DViCO FusionHDTV 5 Express
Add BT.656 interface support
Gemtek Radio card ,
Add Typhoon Tv-Tuner PCI to bttv-cards.c
Add basic support for suspend/resume for saa7134
Add support for MSI TV @nywhere A/D NB
dib0700: add support for Avermedia DVB-T Express card
applesm: Add support for Mac Pro 2 x Quad-Core
w83791d: new sysfs beep/alarm methodology
it87: Add support for fan4 and fan5
coretemp: Add support for Celeron 4xx
Allow ondemand and conservative cpufreq governors to be used as default
Longhaul: Add support for PM133 northbridge
i2c-stub: Support multiple chips
i2c-i801: Add support for the Intel Tolapai SMBus
Add support for handling simple eSCO links
Linux kernel IPC SBC Watchdog Timer driver
Add driver for the AR7 Watchdog timer
firewire: OHCI 1.0 Isochronous Receive support
firewire: fw-sbp2: add support for multiple logical units per target
See also release notes at
for firewire and ieee1394 changes.
DCA: Add Direct Cache Access driver ,
rtc: RTC class driver for the ds1374
Driver for the Atmel on-chip SSC on AT32AP and AT91
pcmcia: Compactflash driver for PA Semi Electra boards
IPMI: add polled interface
leds: Add Cobalt Raq series LEDs support
backlight: Add Samsung LTV350QV LCD driver
Add support for PCMCIA card Sierra Wireless AC850
Add support for Wacom WACF007 and WACF008 to serial pnp driver
I/OAT: Add support for MSI and MSI-X
I/OAT: Add support for version 2 of ioatdma device
Remove obsolete lk201 driver
This is a list of some of the patches being developed right now at the kernel community that will be part of future Linux releases. Those features may take many months to get into the Linus' git tree, or may be completely dropped. You can test the features in the -mm tree, but be warned, it can crash your machine, eat your data (unlikely but not impossible) or kidnap your family (just because it has never happened it doesn't mean it can't happen):
Reading the
is recommended.
What's in the realtime tree
for graphic cards
Tell others about this page:

我要回帖

更多关于 setup x86 64.exe 的文章

 

随机推荐