编译内核

Step by Step


Compiling custom kernel has its own advantages and disadvantages. However, new Linux user / admin find it difficult to compile Linux kernel. Compiling kernel needs to understand few things and then just type couple of commands. This step by step howto covers compiling Linux kernel version 2.6.xx under Debian GNU Linux. However, instructions remains the same for any other distribution except for apt-get command.
Step # 1 Get Latest Linux kernel code

Visit http://kernel.org/ and download the latest source code. File name would be linux-x.y.z.tar.bz2, where x.y.z is actual version number. For example file inux-2.6.25.tar.bz2 represents 2.6.25 kernel version. Use wget command to download kernel source code:
$ cd /tmp
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-x.y.z.tar.bz2

Note: Replace x.y.z with actual version number.
Step # 2 Extract tar (.tar.bz3) file

Type the following command:
# tar -xjvf linux-2.6.25.tar.bz2 -C /usr/src
# cd /usr/src
Step # 3 Configure kernel

Before you configure kernel make sure you have development tools (gcc compilers and related tools) are installed on your system. If gcc compiler and tools are not installed then use apt-get command under Debian Linux to install development tools.
# apt-get install gcc

Now you can start kernel configuration by typing any one of the command:

* $ make menuconfig - Text based color menus, radiolists & dialogs. This option also useful on remote server if you wanna compile kernel remotely.
* $ make xconfig - X windows (Qt) based configuration tool, works best under KDE desktop
* $ make gconfig - X windows (Gtk) based configuration tool, works best under Gnome Dekstop.

For example make menuconfig command launches following screen:
$ make menuconfig

You have to select different options as per your need. Each configuration option has HELP button associated with it so select help button to get help.
Step # 4 Compile kernel

Start compiling to create a compressed kernel image, enter:
$ make
Start compiling to kernel modules:
$ make modules

Install kernel modules (become a root user, use su command):
$ su -
# make modules_install
Step # 5 Install kernel

So far we have compiled kernel and installed kernel modules. It is time to install kernel itself.
# make install

It will install three files into /boot directory as well as modification to your kernel grub configuration file:

* System.map-2.6.25
* config-2.6.25
* vmlinuz-2.6.25

Step # 6: Create an initrd image

Type the following command at a shell prompt:
# cd /boot
# mkinitrd -o initrd.img-2.6.25 2.6.25

initrd images contains device driver which needed to load rest of the operating system later on. Not all computer requires initrd, but it is safe to create one.
Step # 7 Modify Grub configuration file - /boot/grub/menu.lst

Open file using vi:
# vi /boot/grub/menu.lst

title Debian GNU/Linux, kernel 2.6.25 Default
root (hd0,0)
kernel /boot/vmlinuz root=/dev/hdb1 ro
initrd /boot/initrd.img-2.6.25
savedefault
boot

Remember to setup correct root=/dev/hdXX device. Save and close the file. If you think editing and writing all lines by hand is too much for you, try out update-grub command to update the lines for each kernel in /boot/grub/menu.lst file. Just type the command:
# update-grub
Neat. Huh?
Step # 8 : Reboot computer and boot into your new kernel

Just issue reboot command:
# reboot


make menuconfig


Graphics support
图形设备/显卡支持
Enable firmware EDID
允许访问Video BIOS中的扩展显示器识别数据(EDID),使用Matrox显卡的建议关闭,建议桌面用户选择
Support for frame buffer devices
帧缓冲设备是为了让应用程序使用统一的接口操作显示设备而对硬件进行的抽象,建议桌面用户选择
Enable Video Mode Handling Helpers
使用GTF和EDID来帮助处理显示模式,可以不选,若有其他选项依赖于它时,会自动选上
Enable Tile Blitting Support
可以不选,若有其他选项依赖于它时,会自动选上
VGA 16-color graphics support
16色VGA显卡.如果你有这种古董就选吧
VESA VGA graphics support
符合VESA 2.0标准的显卡的通用驱动,如果显卡芯片在下面能够找到就可以不选
{此处省略的硬件请按照自己实际使用的显卡芯片进行选择}
Virtual Frame Buffer support
仅供调试使用
Console display driver support
控制台显示驱动
VGA text console
文本控制台,必选
Enable Scrollback Buffer in System RAM
在内存中开辟额外的屏幕缓冲区,这将允许你回滚屏幕
Scrollback Buffer Size (in KB)
在内存中开辟的额外屏幕缓冲区大小
Video mode selection support
允许在内核启动时使用"vga="选择文本模式,如果你希望一行能够显示更多字符的话可以打开它
MDA text console (dual-headed)
如果你有古董级别的单色显卡并且作为第二块显卡使用以实现双头显示就选上吧
Framebuffer Console support
基于framebuffer的控制台驱动,服务器可以不选
Framebuffer Console Rotation
显示画面旋转,它可能大大降低显示速度,建议不选
Select compiled-in fonts
选择内建字体
VGA 8x8 font
高分辨率下的小字体
VGA 8x16 font
底分辨率下的大字体
{其它字体省略}
Logo configuration
启动时显示linux的logo(一幅企鹅图像),喜欢炫一下的就选吧
Backlight & LCD device support
LCD显示器支持,一般无需选择
Sound
声卡
Advanced Linux Sound Architecture
使用声卡者必选
Sequencer support
音序器支持(MIDI必需),除非你确定不需要,否则请选上
Sequencer dummy client
除非你要同时连接到多个MIDI设备或应用程序,否则请不要选择
OSS Mixer API
OSS混音器API仿真,许多程序目前仍然需要使用它,建议选择
OSS PCM (digital audio) API
OSS数字录音(PCM)API模拟,许多程序目前仍然需要使用它,建议选择
OSS PCM (digital audio) API - Include plugin system
建议不选
OSS Sequencer API
OSS音序器支持,许多程序目前仍然需要使用它,建议选择
RTC Timer support
为ALSA启用RTC定时器支持,建议选择
Use RTC as default sequencer timer
将RTC当作默认的时序脉冲发生器
Dynamic device file minor numbers
仅供拥有多个声卡的用户选择
Support old ALSA API
支持已被废弃的老版本ALSA API
Verbose procfs contents
仅供调试使用
Verbose printk
仅供调试使用
Debug
仅供调试使用
Generic devices
通用设备
Dummy (/dev/null) soundcard
仅供调试
Virtual MIDI soundcard
虚拟MIDI驱动,允许将使用原始MIDI设备的应用程序连接到音序器客户端,如果你不知道MIDI是什么就别选
{此处省略的硬件请按照自己实际使用的声卡芯片进行选择}
PCI devices
PCI接口的声卡,请按实际使用的声卡选择子项
USB devices
USB接口的声卡,请按实际使用的声卡选择子项
PCMCIA devices
PCMCIA接口的声卡,请按实际使用的声卡选择子项
Open Sound System
反对使用
USB support
USB支持
Support for Host-side USB
主机端(Host-side)USB支持.通用串行总线(USB)是一个串行总线子系统规范,它比传统的串口速度更快并且特性更丰富(供电,热插拔,最多可接127个设备等),有望在将来一统PC外设接口.USB的"Host"(主机)被称为"根"(也可以理解为是主板上的USB控制器),外部设备被称为" 叶子",而内部的节点则称为"hub"(集线器).基本上只要你想使用任何USB设备都必须选中此项.另外,你还需要从下面选中至少一个"Host Controller Driver"(HCD),比如适用于USB1.1的"UHCI HCD support"或"OHCI HCD support",适用于USB2.0的"EHCI HCD (USB 2.0) support".如果你拿不准的话把他们全部选中一般也不会出问题.如果你的系统有设备端的USB接口(也就是你的系统可以作为"叶子"使用),请到"USB Gadget"中进行选择.
USB verbose debug messages
仅供调试使用
USB device filesystem
在/proc/bus/usb里列出当前连接的usb设备(mount -t usbfs none /proc/bus/usb),这样用户空间的程序就可以直接访问这些USB设备,基本上你要使用USB设备的话就必须选中此项
Enforce USB bandwidth allocation
执行usb带宽分配限制,禁止打开占用usb总线带宽超过90%的设备,关闭该选项可能会导致某些设备无法正常工作
Dynamic USB minor allocation
除非你有超过16个同类型的USB设备,否则不要选择
USB selective suspend/resume and wakeup
usb设备的挂起和恢复,毛病多多且许多设备尚未支持它,建议不选
EHCI HCD (USB 2.0) support
USB 2.0支持(大多数2002年以后的主板都支持).如果你选中了此项,一般来说你还需要选中OHCI或UHCI驱动
Full speed ISO transactions
由于USB 2.0支持低速(1.5Mbps)/全速(12Mbps)/高速(480Mbps)三种规格的外部设备,为了将全/低速设备对高速设备可用带宽的影响减到最小,在USB2.0集线器中提供了一种事务转换(Transaction Translator)机制,该机制支持在Hub连接的是全/低速设备的情况下,允许主控制器与Hub之间以高速传输所有设备的数据,从而节省不必要的等待.如果你没有外置的USB集线器就无需选择
Root Hub Transaction Translators
带有USB 2.0接口的主板上都有一个"根集线器"(Root Hub)以允许在无需额外购买hub的情况下就可以提供多个USB插口,其中的某些产品还在其中集成了事务转换(Transaction Translator)功能,这样就不需要再额外使用一个兼容OHCI或UHCI的控制器来兼容USB 1.1,即使你不太清楚自己主板上的根集线器是否集成了事务转换功能也可以安全的选中此项
Improved Transaction Translator scheduling
如果你有一个高速USB 2.0 hub并且某些接在这个hub上的低速或全速设备不能正常工作(显示'cannot submit datapipe: error -28'或'error -71'错误),可以考虑选上
ISP116X HCD support
ISP1160/ISP1161主机USB控制器,是符合USB2.0全速规范的单片主机控制器和设备控制器,支持OHCI标准
OHCI HCD support
开放主机控制接口(OHCI)是主要针对嵌入式系统的USB 1.1主机控制器规范
UHCI HCD (most Intel and VIA) support
通用主机控制器接口(UHCI)是主要针对PC机的USB 1.1主机控制器规范.另外,EHCI也可能需要它
Elan U132 Adapter Host Controller
如果你有这种硬件就选吧
SL811HS HCD support
如果你有这种硬件就选吧
USB Bluetooth TTY support
USB蓝牙TTY设备支持
USB MIDI support
USB MIDI设备支持
USB Modem (CDC ACM) support
USB接口的猫或ISDN适配器
USB Printer support
USB打印机
USB Mass Storage support
USB 存储设备(U盘,USB硬盘,USB软盘,USB CD-ROM,USB磁带,memory sticks,数码相机,读卡器等等).该选项依赖于'SCSI device support',且大部分情况下还依赖于'SCSI disk support'(比如U盘或USB硬盘)
USB Mass Storage verbose debug
仅供调试使用
{省略的部分请按照自己实际使用的硬件选择(事实上大部分人都没有这些设备,可以全不选)}
The shared table of common (or usual) storage devices
该模块包含一张记录了常用USB存储设备及其驱动的表格,这样你无需重新编译模块即可在切换这些设备时自动邦定对应的驱动(还需要对/etc/modprobe.conf进行相应的设置).不确定的建议不选
USB Human Interface Device (full HID) support
USB人机界面设备(鼠标/键盘/游戏杆/手写版等人操作计算机的设备),该驱动不能和"USB HID Boot Protocol drivers"同时使用
HID input layer support
如果你有USB接口的鼠标/键盘/游戏杆/手写板等输入设备就必选
Enable support for iBook/PowerBook special keys
苹果iBooks/PowerBooks键盘上的Fn/Numlock等功能键支持
Force feedback support
力反馈设备
/dev/hiddev raw HID device support
如果你有USB监控装置或不间断电源(UPS)之类的非输入设备就选上
USB HID Boot Protocol drivers
如果你有绝对的把握确信不为自己的键盘和鼠标使用通常的HID驱动,而要使用Boot Protocol模式的HID驱动(常见于嵌入式环境)就选吧
Aiptek 6000U/8000U tablet support
一种手写板
Wacom Intuos/Graphire tablet support
一种手写/绘图板
Acecad Flair tablet support
一种数控绘图板
KB Gear JamStudio tablet support
一种手写/绘图板
Griffin PowerMate and Contour Jog support
一种具有调节音量/滚动文本/视频快进快退等功能的产品
USB Touchscreen Driver
USB触摸屏驱动
Yealink usb-p1k voip phone
一种VoIP电话
X-Box gamepad support
X-Box游戏板
ATI / X10 USB RF remote control
一种usb远程控制设备
ATI / Philips USB RF remote control
一种usb远程控制设备
Keyspan DMR USB remote control
一种usb远程控制设备
Apple USB Touchpad support
苹果机上的触摸板
USB Mustek MDC800 Digital Camera support
一种数码相机
Microtek X6USB scanner support
一种扫描仪
USB Network Adapters
USB网络适配器,如果你有这种设备请按自己实际使用的硬件选择子项
USB Monitor
usb流量监控,一般没必要选它
USS720 parport driver
一种USB接口转并口的转换设备
USB Serial Converter support
USB接口转串口的转换设备
EMI 6|2m USB Audio interface support
一种USB音频设备
EMI 2|6 USB Audio interface support
一种USB音频设备
ADU devices from Ontrak Control Systems
Ontrak Control Systems公司的一种自动拨号设备
USB Auerswald ISDN support
一种ISDN设备
USB Diamond Rio500 support
一种mp3播放机
USB Lego Infrared Tower support
一种无线发射机
USB LCD driver support
USB液晶显示器
USB LED driver support
USB发光二极管
Cypress CY7C63xxx USB driver support
德国AK Modul-Bus Computer GmbH公司的一种产品,不知道是用来干什么的
Cypress USB thermometer driver support
一种温度计??
USB Phidgets drivers
来自Phidgets公司的各种USB产品
Siemens ID USB Mouse Fingerprint sensor support
西门子公司的一种指纹传感器
Elan PCMCIA CardBus Adapter USB Client
Elan公司的一种USB转PCMCIA的适配器
Apple Cinema Display support
苹果公司的一种Cinema Display
USB 2.0 SVGA dongle support (Net2280/SiS315)
一种软件狗
USB LD driver
USB LD驱动
PlayStation 2 Trance Vibrator driver support
SONY的PS2上面的"入迷振荡器"(类似于力反馈手柄)
USB testing driver
测试中的驱动,别选
USB DSL modem support
USB DSL猫
USB Gadget Support
其他各种杂七杂八的usb小玩艺
MMC/SD Card support
MMC/SD卡支持
LED devices
发光二级管(LED)设备
InfiniBand support
InfiniBand是一个通用的高性能I/O规范,它使得存储区域网中以更低的延时传输I/O消息和集群通讯消息并且提供很好的伸缩性.用于Linux服务器集群系统
EDAC - error detection and reporting (RAS)
错误检测与纠正(EDAC)的目标是发现并报告甚至纠正在计算机系统中发生的错误,这些错误是由CPU或芯片组报告的底层错误(内存错误/缓存错误/PCI错误/温度过高,等等),建议选择.如果这些代码报告了一个错误,请到 http://bluesmoke.sourceforge.net/ http://buttersideup.com/edacwiki 查看更多信息
Debugging
仅供调试使用
Main Memory EDAC (Error Detection And Correction) reporting
一些系统能够检测和修正主内存中的错误,EDAC能够报告这些信息(EDAC自己检测到的或者根据ECC得到的).EDAC还会尽量检测这些错误发生在哪里以便于替换损坏的内存.建议选择并按照你实际使用的芯片组选取子项
Error detecting method
错误检测方法,当前只有一个"Poll for errors"(错误轮询)可用
Real Time Clock
所有的PC机主板都包含一个电池动力的实时时钟芯片,以便在断电后仍然能够继续保持时间,RTC通常与CMOS集成在一起,因此BIOS可以从中读取当前时间
RTC class
通用RTC类支持,选中此项后你就可以在操作系统中使用一个或多个RTC设备(你还必须从下面启用一个或多个RTC接口)
Set system time from RTC on startup
系统启动时使用从指定的RTC设备中读取的时间来设定系统时间,通常这将有助于避免不必要的文件系统检测程序(fsck)的运行,建议选择
The RTC to read the time from
指定具体从哪个RTC设备中读取时间
RTC debug support
仅供调试使用
sysfs
允许通过sysfs接口使用RTC,允许多个RTC设备,也就是/sys/class/rtc/rtc0~N
proc
允许通过proc接口使用RTC,仅允许一个RTC设备,也就是/proc/driver/rtc
dev
允许通过dev接口使用RTC,允许多个RTC设备,也就是"udev"设置的/dev/rtc0~N,建议你建立一个指向其中之一的软连接/dev/rtc,某些程序(比如hwclock)需要使用/dev/rtc
RTC UIE emulation on dev interface
如果底层rtc芯片驱动没有提供RTC_UIE就仿真一个RTC_UIE.那些请求将产生每秒一次的更新请求以用来同步[这个选项的意思我也搞不清楚究竟时啥意思,翻译的也可能有误]
{此处省略的RTC驱动请按照自己实际使用的RTC芯片进行选择}
DMA Engine support
从Intel Bensley双核服务器平台开始引入的数据移动加速(Data Movement Acceleration)引擎,它将某些传输数据的操作从CPU转移到专用硬件,从而可以进行异步传输并减轻CPU负载.Intel已将此项技术变为开放的标准,将来应当会有更多的厂商支持
Network: TCP receive copy offload
通过在网络栈中利用DMA引擎来减少接收数据包时的copy-to-user操作以释放CPU资源,这是DMA引擎目前最主要的用途
Intel I/OAT DMA support
Intel I/O加速技术(Intel I/O Acceleration Technology)中的DMA支持,基于Intel Bensley的新一代服务器平台都支持它

File systems
文件系统
强烈建议在选择之前先看看 各种文件系统的比较

Second extended fs support
Ext2文件系统是Linux的标准文件系统,擅长处理稀疏文件
Ext2 extended attributes
Ext2文件系统扩展属性(与inode关联的name:value对)支持
Ext2 POSIX Access Control Lists
POSIX ACL(访问控制列表)支持,可以更精细的针对每个用户进行访问控制,需要外部库和程序的支持
Ext2 Security Labels
安全标签允许选择使用不同的安全模型实现(如SELinux)的访问控制模型,如果你没有使用需要扩展属性的安全模型就别选
Ext2 execute in place support
程序在写入存储介质时就已经分配好运行时的地址,因此不需要载入内存即可在芯片内执行,一般仅在嵌入式系统上才有这种设备
Ext3 journalling file system support
Ext3性能平庸,使用journal日志模式时数据完整性非常好(但怪异的是此时多线程并发读写速度却最快)
Ext3 extended attributes
Ext3文件系统扩展属性(与inode关联的name:value对)支持
Ext3 POSIX Access Control Lists
POSIX ACL(访问控制列表)支持,可以更精细的针对每个用户进行访问控制,需要外部库和程序的支持
Ext3 Security Labels
安全标签允许选择使用不同的安全模型实现(如SELinux)的访问控制模型,如果你没有使用需要扩展属性的安全模型就别选
Ext4dev/ext4 extended fs support
尚处于开发状态的Ext4
JBD (ext3) debugging support
仅供开发者使用
JBD2 (ext4dev/ext4) debugging support
仅供开发者使用
Reiserfs support
性能几乎全面超越Ext2(处理稀疏文件比Ext2慢),小文件(小于4k)性能非常突出,创建和删除文件速度最快,处理大量目录和文件(5k-20k)时仍然非常迅速.日志模式建议使用Ordered,追求极速可使用Writeback模式,追求安全可使用Journal模式.建议使用 noatime,notail选项挂载分区以提高速度和避免bug.用于NFS和磁盘限额时需要额外的补丁
Enable reiserfs debug mode
启用ReiserFS调试模式,仅供开发者使用
Stats in /proc/fs/reiserfs
在/proc/fs/reiserfs文件中显示Reiserfs文件系统的状态,仅供开发者使用
ReiserFS extended attributes
ReiserFS文件系统扩展属性(与inode关联的name:value对)支持
ReiserFS POSIX Access Control Lists
POSIX ACL(访问控制列表)支持,可以更精细的针对每个用户进行访问控制,需要外部库和程序的支持
ReiserFS Security Labels
安全标签允许选择使用不同的安全模型实现(如SELinux)的访问控制模型,如果你没有使用需要扩展属性的安全模型就别选了
JFS filesystem support
IBM的JFS文件系统
XFS filesystem support
碎片最少,多线程并发读写最佳,大文件(>64k)性能最佳,创建和删除文件速度较慢.由于XFS在内存中缓存尽可能多的数据且仅当内存不足时才会将数据刷到磁盘,所以应当仅在确保电力供应不会中断的情况下才使用XFS
Quota support
XFS的磁盘配额支持
Security Label support
扩展的安全标签支持.SElinux之类的安全系统会使用到这样的扩展安全属性
POSIX ACL support
POSIX ACL(访问控制列表)支持,可以更精细的针对每个用户进行访问控制,需要外部库和程序的支持
Realtime support
实时子卷是专门存储文件数据的卷,可以允许将日志与数据分开在不同的磁盘上
GFS2 file system support
一种用于集群的文件系统
OCFS2 file system support
一种用于集群的文件系统
Minix fs support
老古董文件系统
ROM file system support
用于嵌入式系统的内存文件系统的支持
Inotify file change notification support
新式的文件系统的变化通知机制,简洁而强大,用于代替老旧的Dnotify
Inotify support for userspace
用户空间的Inotify支持
Quota support
磁盘配额支持,限制某个用户或者某组用户的磁盘占用空间,Ext2/Ext3/Reiserfs都支持它
Old quota format support
老式的配额格式支持
Quota format v2 support
新的v2格式允许使用32位的UID/GID
Dnotify support
旧式的基于目录的文件变化的通知机制(新机制是Inotify),目前仍然有一些程序依赖它
Kernel automounter support
内核自动加载远程文件系统(v3,就算选也不选这个旧的)
Kernel automounter version 4 support (also supports v3)
新的(v4)的内核自动加载远程文件系统的支持,也支持v3
Filesystem in Userspace support
FUSE允许在用户空间实现一个文件系统,如果你打算开发一个自己的文件系统或者使用一个基于FUSE的文件系统就选吧
CD-ROM/DVD Filesystems
CD-ROM/DVD文件系统
ISO 9660 CDROM file system support
CD-ROM的标准文件系统
Microsoft Joliet CDROM extensions
Microsoft对ISO 9660文件系统的Joliet扩展,允许在文件名中使用Unicode字符,也允许长文件名
Transparent decompression extension
Linux对ISO 9660文件系统的扩展,允许将数据透明的压缩存储在CD上
UDF file system support
某些新式CD/DVD上的文件系统,很少见
DOS/FAT/NT Filesystems
DOS/Windows的文件系统
MSDOS fs support
古老的MSDOS文件系统
VFAT (Windows-95) fs support
从Win95开始使用的VFAT文件系统
Default codepage for FAT
默认代码页
Default iocharset for FAT
默认字符集
NTFS file system support
从WinNT开始使用的NTFS文件系统
NTFS debugging support
仅供调试使用
NTFS write support
NTFS写入支持
Pseudo filesystems
伪文件系统
/proc file system support
显示系统状态的虚拟文件系统(irq设置,内存使用,加载的设备驱动器,网络状态等),许多程序依赖于它
/proc/kcore support
系统物理内存的映象
/proc/vmcore support
以ELF格式转储的已崩溃内核镜像,仅供调试使用
Sysctl support (/proc/sys)
显示各种不同的内核参数,并让root用户能交互地更改其中的某些内容
sysfs file system support
导出内核内部对象及其属性和对象之间的相互关系的文件系统,它把连接在系统上的设备和总线以及驱动程序等组织成为一个分级的文件,内核启动时依靠它挂载根分区,禁用sysfs后必须在内核引导参数中使用设备号指定根分区
Virtual memory file system support (former shm fs)
tmpfs文件系统(以前叫shm[共享内存]文件系统)支持
Tmpfs POSIX Access Control Lists
POSIX ACL(访问控制列表)支持,可以更精细的针对每个用户进行访问控制,需要外部库和程序的支持
HugeTLB file system support
大多数现代计算机体系结构提供对多种内存页面大小的支持(比如IA-32结构支持4K和4M(PAE模式为2M)两种页面).TLB(Translation Lookaside Buffer)是虚拟地址到物理地址的翻译缓冲区,这种缓冲区在处理器上是很宝贵的,操作系统总是尝试将有限的TLB资源发挥到极致.特别是能够轻松获得若干G内存的时候(>4G),这种优化就显得尤为关键.只有开启此选项之后才能提供hugepage支持.
Userspace-driven configuration filesystem
configfs是用户空间驱动的文件系统,提供与sysfs相反的功能
Miscellaneous filesystems
非主流的杂项文件系统
Network File Systems
网络文件系统
Partition Types
高级磁盘分区类型,不确定可以全不选
Native Language Support
本地语言支持
Base native language support
基础本地语言,必选
Default NLS Option
默认本地语言,建议使用UTF-8
{此处省略的部分请按需选择,一般至少需要CP437,ASCII,ISO-8859-1}
Distributed Lock Manager
通用的分布式锁管理器,不明白就不选

Instrumentation Support
分析支持

Profiling support
对系统的活动进行分析,仅供内核开发者使用
Kprobes
仅供内核开发者使用

Kernel hacking
内核hack选项

Show timing information on printks
在printk的输出中包含时间信息,可以用来分析内核启动过程各步骤所用时间
Enable __must_check logic
在编译内核的过程中使用"必须检查"的逻辑,禁用它将不会显示某些警告信息
Magic SysRq key
不懂的千万别选
Enable unused/obsolete exported symbols
导出无用和废弃的符号,这将使内核不必要的增大
Kernel debugging
不是内核开发者的别选
Debug Filesystem
不是内核开发者的别选
Compile the kernel with frame unwind information
不是内核开发者的别选
Run 'make headers_check' when building vmlinux
在编译内核时运行'make headers_check'命令检查内核头文件,当你修改了与用户空间相关的内核头文件后建议启用该选项
Linux Kernel Dump Test Tool Module
不是内核开发者的别选
Enable doublefault exception handler
允许捕获非常罕见的导致系统无警告重启的doublefault异常,对于调试非常重要

Security options
安全选项
这里的选项不明白的建议不要选,否则有可能弄巧成拙.

Enable access key retention support
在内核中保留authentication token和access key
Enable the /proc/keys file by which keys may be viewed
允许有权限的进程通过/proc/keys读取所有的key
Enable different security models
允许内核选择不同的安全模型,如果未选中则内核将使用默认的安全模型
Socket and Networking Security Hooks
允许安全模型通过Security Hook对Socket与Networking进行访问控制
XFRM (IPSec) Networking Security Hooks
启用XFRM安全Hook
Default Linux Capabilities
启用与"默认"Linux的兼容性
Root Plug Support
一个简单的Linux安全模块,在特定的USB设备不存在时它简单的禁止一切egid==0的进程运行
NSA SELinux Support
美国国家安全局(NSA)开发的安全增强Linux(SELinux),你还需要进行策略配置(checkpolicy)并且对文件系统进行标记(setfiles)
NSA SELinux boot parameter
添加一个内核引导参数以允许在引导时使用'selinux=0'禁用SELinux或'selinux=1'启用SELinux
NSA SELinux boot parameter default value
上述参数的默认值
NSA SELinux runtime disable
允许在运行时禁用SELinux
NSA SELinux Development Support
SELinux开发支持
NSA SELinux AVC Statistics
搜集存取向量(access vector)缓冲区的统计信息并在/selinux/avc/cache_stats中显示出来.这些信息可以用avcstat之类的工具查看
NSA SELinux checkreqprot default value
checkreqprot标志的默认值
NSA SELinux enable new secmark network controls by default
默认启用新的基于安全标记(secmark)的网络
NSA SELinux maximum supported policy format version
允许将支持的最高策略格式版本设置为一个特定的数值
NSA SELinux maximum supported policy format version value
支持的最高策略格式版本的数值

Cryptographic options
加密选项

Cryptographic API
提供核心的加密API支持.这里的加密算法被广泛的应用于驱动程序通信协议等机制中.子选项可以全不选,内核中若有其他部分依赖它,会自动选上
Cryptographic algorithm manager
创建加密模版实例,必须要选
HMAC support
为IPSec所必须,可为PPPoE提供压缩支持
Null algorithms
NULL加密算法(什么也不做),用于IPsec协议的封装安全载荷模块(ESP)
MD4 digest algorithm
老旧的摘要算法,已经过时
MD5 digest algorithm
主流摘要算法,128位(已被中国山东大学王小云攻破,可以快速找到碰撞)
SHA1 digest algorithm
主流摘要算法,160位(已被中国山东大学王小云攻破,可以快速找到碰撞),速度与MD5相当
SHA256 digest algorithm
更好的摘要算法,256位,速度较SHA1稍慢
SHA384 and SHA512 digest algorithms
更好的摘要算法,384/512位,速度大约只有SHA1的40-50%
Whirlpool digest algorithms
最安全的摘要算法,512位,已被列入ISO标准,目前最新版本为3.0(2003年发布)
Tiger digest algorithms
号称最快的摘要算法,192位,专门为64位CPU进行了优化
ECB support
电子密码本,最简单的加密方法
CBC support
密码块链,IPSec需要使用它
DES and Triple DES EDE cipher algorithms
老迈的(DES)和尚佳的(Triple DES)对称加密算法
Blowfish cipher algorithm
又老又慢的对称加密算法
Twofish cipher algorithm
很强的对称加密算法,使用较广
Twofish cipher algorithms (i586)
很强的对称加密算法,使用较广(针对i586的版本)
Serpent cipher algorithm
很强的对称加密算法
AES cipher algorithms
最佳的对称加密算法(Rijndael),128/192/256位,强度最高,快速且节省内存
AES cipher algorithms (i586)
最佳的对称加密算法(Rijndael),128/192/256位,强度最高,快速且节省内存(针对i586的版本)
CAST5 (CAST-128) cipher algorithm
对称加密算法
CAST6 (CAST-256) cipher algorithm
对称加密算法
TEA, XTEA and XETA cipher algorithms
较弱的对称加密算法
ARC4 cipher algorithm
脆弱的流对称加密算法
Khazad cipher algorithm
对称加密算法
Anubis cipher algorithm
对称加密算法
Deflate compression algorithm
压缩算法,当在IPSec中使用IPCOMP协议时才需要
Michael MIC keyed digest algorithm
摘要算法,仅仅用于校验iSCSI设备传输的数据,因为算法本身比较脆弱
CRC32c CRC algorithm
摘要算法,可用于校验iSCSI设备传输的数据
Testing module
快速且丑陋的测试模块
Hardware crypto devices
仅有VIA C7系列处理器支持硬件加密(VIA PadLock高级加密引擎)

Library routines
库子程序
仅有那些不包含在内核原码中的第三方内核模块才可能需要,可以全不选,内核中若有其他部分依赖它,会自动选上

CRC-CCITT functions
传送8-bit字符,欧洲标准
CRC16 functions
传送8-bit字符,美国标准
CRC32 functions
用于点对点的同步数据传输中,传输网络数据包所必须的
CRC32c (Castagnoli, et al) Cyclic Redundancy-Check
用于点对点的同步数据传输中,比如iSCSI设备

Load an Alternate Configuration File
读入一个外部配置文件
Save Configuration to an Alternate File
将配置保存到一个外部文件


你可能感兴趣的:(算法,linux,应用服务器,Debian,网络应用)