微信聊天问在不在好友发来“在不在”,网友竟这样回复

26858人阅读
嵌入式linux内核及驱动开发(21)
&& &前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成
&& &那么如何将驱动直接编译进内核呢?
&& &在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?
我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会出现以下界面:
这个界面是怎么生成的呢?
跟我们经常说的内核配置与与编译又有什么关系呢?
下面我们借此来讲解一下linux内核的配置机制及其编译过程。
Linux内核的配置系统由三个部分组成,分别是:
&&&1、Makefile:分布在 Linux 内核源代码根目录及各层目录中,定义 Linux 内核的编译规则;
&& &2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;
&& &3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于 Ncurses 图形界面以及基于 Xwindows 图形界面的用户配置界面,各自对应于 Make config、Make menuconfig 和 make xconfig)。
&&&这些配置工具都是使用脚本语言,如 Tcl/TK、Perl 编写的(也包含一些用 C 编写的代码)。本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写
Makefile 和配置文件就可以。
二、makefile menuconfig过程讲解
当我们在执行make menuconfig这个命令时,系统到底帮我们做了哪些工作呢?
这里面一共涉及到了一下几个文件我们来一一讲解
Linux内核根目录下的scripts文件夹
arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件
Linux内核根目录下的makefile文件、各层目录下的makefile文件
Linux内核根目录下的的.config文件、arm/$ARCH/下的config文件
Linux内核根目录下的 include/generated/autoconf.h文件
1)scripts文件夹存放的是跟make menuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容
2)当我们执行make menuconfig命令出现上述蓝色配置界面以前,系统帮我们做了以下工作:
&& &首先系统会读取arch/$ARCH/目录下的Kconfig文件生成整个配置界面选项(Kconfig是整个linux配置机制的核心),那么ARCH环境变量的值等于多少呢?
它是由linux内核根目录下的makefile文件决定的,在makefile下有此环境变量的定义:
或者通过 make ARCH=arm menuconfig命令来生成配置界面,默认生成的界面是所有参数都是没有值的
&& &比如教务处进行考试,考试科数可能有外语、语文、数学等科,这里相当于我们选择了arm科可进行考试,系统就会读取arm/arm/kconfig文件生成配置选项(选择了arm科的卷子),系统还提供了x86科、milps科等10几门功课的考试题
3)假设教务处比较“仁慈”,为了怕某些同学做不错试题,还给我们准备了一份参考答案(默认配置选项),存放在arch/$ARCH/configs下,对于arm科来说就是arch/arm/configs文件夹:
&& &此文件夹中有许多选项,系统会读取哪个呢?内核默认会读取linux内核根目录下.config文件作为内核的默认选项(试题的参考答案),我们一般会根据开发板的类型从中选取一个与我们开发板最接近的系列到Linux内核根目录下(选择一个最接近的参考答案)
#cp arch/arm/configs/s3c2410_defconfig .config
&& &假设教务处留了一个心眼,他提供的参考答案并不完全正确(.config文件与我们的板子并不是完全匹配),这时我们可以选择直接修改.config文件然后执行make menuconfig命令读取新的选项
&& &但是一般我们不采取这个方案,我们选择在配置界面中通过空格、esc、回车选择某些选项选中或者不选中,最后保存退出的时候,Linux内核会把新的选项(正确的参考答案)更新到.config中,此时我们可以把.config重命名为其它文件保存起来(当你执行make distclean时系统会把.config文件删除),以后我们再配置内核时就不需要再去arch/arm/configs下考取相应的文件了,省去了重新配置的麻烦,直接将保存的.config文件复制为.config即可.
5)经过以上两步,我们可以正确的读取、配置我们需要的界面了
那么他们如何跟makefile文件建立编译关系呢?
当你保存make menuconfig选项时,系统会除了会自动更新.config外,还会将所有的选项以宏的形式保存在
Linux内核根目录下的&include/generated/autoconf.h文件下
内核中的源代码就都会包含以上.h文件,跟宏的定义情况进行条件编译。
当我们需要对一个文件整体选择如是否编译时,还需要修改对应的makefile文件,例如:
&& &我们选择是否要编译s3c2410_ts.c这个文件时,makefile会根据CONFIG_TOUCHSCREEN_S3C2410来决定是编译此文件,此宏是在Kconfig文件中定义,当我们配置完成后,会出现在.config及autconf中,至此,我们就完成了整个linux内核的编译过程。
&& &最后我们会发现,整个linux内核配置过程中,留给用户的接口其实只有各层Kconfig、makefile文件以及对应的源文件。
&& &比如我们如果想要给内核增加一个功能,并且通过make menuconfig控制其声称过程
&& &首先需要做的工作是:修改对应目录下的Kconfig文件,按照Kconfig语法增加对应的选项;
&& &其次执行make menuconfig选择编译进内核或者不编译进内核,或者编译为模块,.config文件和autoconf.h文件会自动生成;
&& &最后修改对应目录下的makefile文件完成编译选项的添加;
&& &最后的最后执行make zImage命令进行编译。
三、具体实例
下面我们以前面做过的模块实验为例,讲解如何通过make menuconfig机制将前面单独编译的模块编译进内核或编译为模块
假设我已经有了这么一个驱动:
#include &linux/module.h&
/*module_init()*/
#include &linux/kernel.h& /* printk() */
#include &linux/init.h&
/* __init __exit */
#define DEBUG //open debug message
#ifdef DEBUG
#define PRINTK(fmt, arg...)
printk(KERN_WARNING fmt, ##arg)
#define PRINTK(fmt, arg...)
printk(KERN_DEBUG fmt, ##arg)
/* Module Init & Exit function */
static int __init myModule_init(void)
/* Module init code */
PRINTK(&myModule_init\n&);
static void __exit myModule_exit(void)
/* Module exit code */
PRINTK(&myModule_exit\n&);
module_init(myModule_init);
module_exit(myModule_exit);
MODULE_AUTHOR(&dengwei&);
/*模块作者,可选*/
MODULE_LICENSE(&GPL&);
/*模块许可证明,描述内核模块的许可权限,必须*/
MODULE_DESCRIPTION(&A simple Hello World Module&); /*模块说明,可选*/
Step1:将modules.c拷到drivers/char/目录下(这个文件夹一般存放常见的字符驱动)
Step2: vi driver/char/Kconfig,在
&&& config DEVKMEM后添加以下信息
config MODULES
tristate &modules device support&
&Say Y here,the modules will be build in kernel.
&Say M here,the modules willbe build to modules.
&Say N here,there will be nothing to be do.&
Step3:make menuconfig
&&&& Device driver-character devices
&&&&&&&&&& [*]modules device suppor
Step4:vi driver/char/Makefile,在js-rtc后添加
obj-$(CONFIG_MODULES)+= modules.o
CONFIG_MODULES 必须跟上面的Kconfig中保持一致,系统会自动添加CONFIG_前缀
modules.o必须跟你加入的.c文件名一致
最后执行:make zImage modules就会被编译进内核中
Step3:make menuconfig
&&&&&Device driver-character devices
&&&&&&&&&& [M]modules device suppor
把星号在配置界面通过空格改为M,最后执行make modules,在driver/char/目录下会生成一个modules.ko文件
跟我们前面讲的单独编译模块效果一样,也会生成一个模块,将它考入开发板执行insmod moudles.ko,即可将生成的模块插入内核使用
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:946942次
积分:6297
积分:6297
排名:第3508名
原创:99篇
转载:21篇
评论:196条
(3)(7)(5)(5)(7)(1)(3)(1)(1)(2)(1)(12)(9)(48)(1)(4)(10)下面的实验以 debian7.5 64bit 为例.
获取 debian7.5 本身的源码非常简单:
sudo apt-get install linux-source
的git上提供的源码分支非常多, 刚开始学习源码主要关注下面几个分支:
linus分支:
linux创始人的分支, 不用说肯定最重要, 它是所有分支的根源. 处于 &mainline& 的地位.
这个分支还有个好听的名字 – &vanilla(香草)& 内核.
linux-next树:
这个一个为发布将来的版本而积累新代码并进行测试的源码树.
由 Stephen Rothwell 等人进行管理和维护
这是一个主要针对过去发布的内核版本进行bug修改, 使其更加稳定的树.
由 Greg Kroah-Hartman, Chris Wright 进行管理和维护.
针对某个Linus树的稳定版维护一般持续6个月左右, 也有更持久的.
上面的列出的git树中都可以获取想要的源码.
其实编译内核和编译普通软件也没多大区别, 只是内核编译的参数非常之多.
下面就来先看看如何设置内核编译参数
内核编译选项
编译选项个数
内核的编译选项的个数非常多, v2.6.38的内核中就有 12 000 个左右的设置选项(这是包含所有arch的配置选项).
内核编译选项不仅多, 有些编译选项之间还存在依赖关系, 所以手动设置编译选项几乎是不可能的.
值得庆幸的是, 只要知道自己需要设置的那些选项, 就可以使用 make ***config 来进行设置, 它还会自动处理依赖关系.
配置编译选项:
设置内核编译选项是通过 kconfig 这个工具来完成的.
kconfig 的源码就是内核代码中 script/kconfig 目录下
各个编译选项的选择有3种方式:
=y :: 直接编译到内核中
=m :: 以模块方式编译到内核中
不设置 :: 不编译
make menuconfig :: 源码根目录下生成 .config (没有会自动生成), .config中就是各个内核编译选项的选择状况.
make defconfig :: 根据当前系统的架构默认 .config 生成内核源码目录下的 .config (每个架构的配置文件: ex. arch/x86/configs/x86_64_defconfig)
make oldconfig :: 将已有的 .config 放到源码根目录下后执行, 目的是为了复用之前的内核编译选项的配置.
make xconfig :: 图形化配置, 需要qt3, 个人觉得没有必要, 有 make menuconfig 就足够了.
make localmodconfig :: 生成以正在使用的内核模块为对象的 .config
编译很简单, 内核编译选项设置好之后, 只需简单的命令 make, 就可以编译了.
由于内核代码的庞大, 所以和一般应用程序相比, 编译时间会很长. 可以尝试以下方法来加快编译速度:
不用的驱动程序都不要设置, 这样就不会编译
利用make的 -j 选项来并发编译, ex. make -j N (N是并发数). 如果你的机器有2个CPU, 可以用 make -j 2 来提高编译速度
使用 make localmodconfig 来生成仅以正在使用的内核模块为对象的 .config (一般这样生成的.config中包含的内核模块最少, 所以编译速度快)
编译时间比较: 测试环境 - debian v7.5虚拟机(cpu: 单核, 内存: 512MB)
.config生成make时间生成的modules备注make menuconfig1小时13分41秒3052个.ko, 共1.2GB默认配置, 什么也不选择make localmodconfig19分36秒337 个.ko, 共176MB 
注 modules 是通过 make modules_install 之后, 在 /lib/modules 中根据编译内核版本号来查看的
查看有多少个 .ko 文件的方法:
cd /lib/modules/3.2.60
find . -name '*.ko' | wc -l
模块和内核不在一起的编译, 就是在现有的内核中追加一些内核模块时, 不需要将内核也重新编译.
模块分开编译的方法很简单, 参考之前的博客:
这篇博客中的例子就是和内核分开编译的模块.
交叉编译就是在当前平台上编译其他平台上的内核二进制映像, 比如在 x86_64 平台上编译 arm 的内核映像.
交叉编译需要目标平台的交叉编译器. 编译时主要是 ARCH 和 CROSS_COMPILE 2个变量的设置.
下面举个交叉编译 ARM 的例子: 公司用的制作 Cubieboard 板子上的image中的一段编译内核的代码
make -C ${CB_KSRC_DIR} O=${CB_KBUILD_DIR} ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- kernel_defconfig
make -C ${CB_KSRC_DIR} O=${CB_KBUILD_DIR} ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4 INSTALL_MOD_PATH=${CB_TARGET_DIR} uImage modules
上述 第一行 是编译内核源码. 第二行 是创建 uImage 格式的内核映像以及创建内核模块
最终在 INSTALL_MOD_PATH 生成的内核模块可以直接拷贝到 arm机器上使用.
生成内核包
debian 系 linux下生成 内核源码包的方法
make deb-pkg
make modules_install (安装内核模块到 /lib/modules 下)
make install (安装内核二进制映像, 生成并安装boot初始化文件系统映像文件)
删除/lib/modules/目录下不需要的内核库文件
删除/usr/src/kernel/目录下不需要的内核源码
删除/boot目录下启动的核心档案禾内核映像
更改grub的配置,删除不需要的内核启动列表
内核 Makefile 中一些有用的 target
make help : 内核Makefile中的各种 target
make cscope : 生成 cscope 文件
make tags/TAGS : tags可用于vim, TAGS可用于emacs
阅读(...) 评论()博客访问: 263676
博文数量: 86
博客积分: 2085
博客等级: 大尉
技术积分: 807
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
在menuconfig中配置:
详细介绍内核配置选项及删改情况第一部分:全部删除Code maturity level options ---> 代码成熟等级选项[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。第二部分 :除以下选项,其它全部删除General setup—〉System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。第三部分:除以下选项,其它全部删除Loadable module support ---> 可引导模块支持 建议作为模块加入内核[] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。[]Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。第四部分:全部删除Block layer-----〉块设备第五部分:除以下选项,其它全部删除Processor type and features ---> 处理器类型Subarchitecture Type (PC-compatible) ---> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。Processor family(386) : 它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是什么型号的就选什么型号的就好。我选的是386,这样内核会省下不少空间第六部分:除以下选项,其它全部删除Power management options (ACPI, APM) ---> 电源管理选项[ ] Power Management Debug Support 电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。ACPI Support ---〉高级电源接口配置支持,如果BIOS支持,建议选上这项[]Button 这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生,一个守护程序将读取/proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。可以不选择,根据自己的需求。第七部分:除以下选项,其它全部删除Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 总线选项[]PCI supportPCI access mode (Any) ---> PCI外围设备配置,强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。第八部分:除以下选项,其它全部删除Executable file formats --->Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。一定要选。第九部分:除以下选项,其它全部删除NetworkingNetworking options --->[]Unix domain sockets[]TCP/IP networking第十部分:除以下选项,其它全部删除Device Drivers --->设备驱动Block devices-------〉[]Compaq SMART2 support [] Compaq Smart Array 5xxx support []Loopback device support 大部分的人这一个选项都选N,因为没有必要。但是如果你要mount iso文件的话,你得选上Y。这个选项的意思是说,可以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您想做到这点的话,您必须有最新的mount程序,版本是在2.5X版以上的。而且如果您希望对这个文件系统加上保护,则您必须有des.1.tar.gz 这个程序。注意:此处与网络无关。建议编译成模块[] RAM disk supportSCSI device support ---> 里面有关于USB支持的,要选择[]SCSI device support USB要用,必须选择[]legacy /proc/scsi/ support USB要用,必须选择[]SCSI disk support USB要用,必须选择SCSI Low-level drivers[]Serial ATA(SATA) support[]Intel PIIX/ICH SATA support& 这个必须选择,否则无法产生引导文件[]Via SATA supportNetworking device support ---> 这个下面是选网卡驱动,一定要选Ethernet(1000mbit)-我的电脑是千兆网卡所以就选这个[]broadcom Tigon3supportInput device support ---> 这个里面要设置你的鼠标键盘什么的[]Provide legacy /dev/psaux deviceGraphics support --->[]Support for frame buffer devices 支持Frame buffer的,一定要选择USB support --->[]USB device filesystem 这个好象是用U盘必须的[]EHCI HCD (USB 2.0) support 有usb2.0就选上把,编译成模块[]OHCI HCD support 必须选择,编译成模块[]UHCI HCD (most Intel and VIA) support 必须选择,编译成模块[]USB Mass Storage support 用U盘必须选择USB Human Interface Device (full HID) support 里面选择usb鼠标和usb键盘,如果你有一定选上这个必需选HID input layer support 应该选择/dev/hiddev raw HID device support如果这里有USB键盘和鼠标选项,一定要选择
第十一部分:除以下选项,其它全部删除file systems --->文件系统 Second extended fs support [*] Ext2 extended attributes [*] Ext2 POSIX Access Control Lists [*] Ext2 Security Labels
Ext3 journalling file system support [*] Ext3 extended attributes [*] Ext3 POSIX Access Control Lists [*] Ext3 Security Labels 以上这些肯定是要选择的,linux的标准文件系统 Kernel automounter support 内核自动挂载的,当然要选 Kernel automounter version 4 support (also supports v3) 当然要选DOS/FAT/NT Filesystems --->
DOS FAT fs support
MSDOS fs support
VFAT (Windows-95) fs support
NTFS file system supportNative language support语言支持,这里就支持英语和汉语就行了,不多说了[]NLS ISO 8859-1 必须选择,这个是关于U盘挂载的。CD-ROM/DVD Filesystems ---> 这个是关于挂载ISO文件的,用的话就选。 ISO 9660 CDROM file system support第十二部分: 全部删除Instrumentation support 第十三部分:全部删除Kernel hacking --->破解核心?可不是当骸客啦,不选第十四部分:全部删除Security options --->第十五部分:全部删除Cryptographic options --->这是核心支持加密的选项第十六部分:全部删除Library routines --->
附:内核配置  内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menuconfig。  需要牢记:不必要的驱动越多,内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体步骤如下:首先确定shell是bash。然后$make menuconfig有一些默认的符号其含义如下:y:加载n:不加载m:作为模块加载
可以配置的选项有以下一些:1)code maturity level option 代码成熟度prompt for development and/or incomplete code/drivers [N/y/?]如果有兴趣测试一下内核中尚未最终完成的某些模块,就选y,否则选N,想知道更详细的信息选?会看到联机帮助(以下?的含义相同),N大写表示缺省值。
2)processor type and features 处理器类型及特性Processor family(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC, PPro/6x86MX)[PPro/6x86MX][]内的是缺省值,我们可以根据前面介绍的uname 命令执行的结果选择。此项如果高于386,那么生成的内核在386机器上将不能启动。Math emulation(CONFIG_MATH_EMULATION)[N/y/?]需要进行协处理器模拟吗?一般的机器都回n。如果机器已经有硬件的协处理器,那么内核仍将使用硬件,而忽略软件的math-emulation,这将使内核变大变慢。MTRR(Memory Type Range Register)support(CONFIG_MTRR)[N/y/?]在Pentium、Pro/Pentium II类的系统中可以提高图像写入速度。Symmetric multi-processing support(CONFIG_SMP)[Y/n/?]如果您的机器有多个处理器,就选y。此时要选中下面的Enhanced Real Time Clock Support
3)loadable model support 可加载模块支持Enable loadable module support(CONFIG_MODULES)[Y/n/?]最好选y,不然许多仅供动态加载的模块就不能用了。Set version information on all symbols for modules(CONFIG_MODVERSIONS)[N/y/?]选NKernel module loader(CONFIG_KMOD)[N/y/?]
4)general setup 一般设置Networking support(CONFIG_NET)[Y/n/?]选y吧,现在还有几台计算机不用上网呢?PCI support (CONFIG_PCI)[Y/n/?]PCI 总线和设备总该有吧。PCI access mode(BIOS,Direct,Any)[Any]缺省值比较保险,但如果您对您的主板很有信心,就选BIOS。PCI quirks (CONFIG_PCI_QUIRKS)[Y/n/?]用于修补BIOS中对PCI有影响的BUG,同样,如果您对主板很有信心,就选n。Backward-compatible /proc/pci〉(CONFIG_PCI_OLD_PROC)[Y/n/?]以前的内核使用/proc/pci,新版内核使用/proc/bus/pci,要保持兼容性就选y。MCA support(CONFIG_MCA)[N/y/?]查看帮助吧。SGI Visual Workstation support(CONFIG_VISWS)[N/y/?]您的机器是SGI的吗?是就选y。System V IPC(CONFIG_SYSVIPC)[Y/n/?]进程间通信函数和系统调用。Linux内核的五大组成部分之一,一定要选。BSD Process Accounting(CONFIG_BSD_PROCESS_ACCT)[N/y/?]用于启动由内核将进程信息写入文件的用户级系统调用。就看您想不想用它了。Sysctl support(CONFIG_SYSCTL)[Y/n/?]在内核正在运行的时候修改内核。用8KB空间换取某种方便。别选吧,除非你真的想试试。Kernel support for a.out binaries(CONFIG_BINFMT_AOUT)[Y/m/n/?]为了能使用以前编译的程序,选y。Kernel support for ELF binaries(CONFIG_BINFMT_ELF)[Y/m/n/?]为了能使用现在编译的程序,选y。Kernel support for MISC binaries(CONFIG_BINFMT_MISC)[Y/m/n/?]一般选y,用于支持java等代码的自动执行。Parallel port support(CONFIG_PARPORT)[N/y/m/?]并口设备,如打印机。
5)plug and play support 即插即用设备支持Plug and Play support (CONFIG_PNP)[N/y/?]选y吧。
6)block devices 块设备Normal PC floppy disk support(CONFIG_BLK_DEV_FD)[Y/m/n/?]一般的软驱。选y。Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support(CONFIG_BLK_DEV_IDE)[Y/m/n/?]这几种接口的硬盘、光驱、磁带、软驱。选y。Include IDE/ATAPI CDROM support(CONFIG_BLK_DEV_IDECD)[Y/m/n/?]CDROM。选y。
7)networking options 网络选项Packet socket (CONFIG_PACHET)[Y/m/n/?]按照目前网络发展的状况,选y比较好。当然也可以选其它的。Kernel/User netlink socke(CONFIG_NETLINK)[N/y/?]内核与用户进程双向通信。选y。Network firewalls(CONFIG_FIREWALL)[N/Y/?]如果真的需要用防火墙,就选y。UNIX domain sockets(confgi_unix)[Y/m/n/?]socket 的用处太多了。选y。TCP/IP networking(CONFIG_INET)[Y/n/?]选y,理由如上一条。The IPX protocol (CONFIG_IPX)[N/y/m/?]其实并没有那么多人真的需要使用或者学习IPX,所以一般选N。Appletalk DDP(CONFIG_ATALK)[N/y/m/?]选N,理由同上。
8)SCSI support SCSI支持,SCSI low-level drives SCSI低级驱动根据系统中SCSI设备的实际情况选择。
9)Networking device support 网络设备支持如果用LAN上网,就选择网卡;如果用MODEM拨号上网,就要看ISP提供那种服务了,一般都是PPP。
10)Amateur Radio support 业余收音机支持这是什么我不太清楚,所以选N。
11)ISDN subsystem ISDN子系统好像已经有支持ISDN的MODEM了,所以最好先看看自己的MODEM是不是这种,再做选择。
12)Old CD-ROM dfivers (not SCSI, not IDE) 老式光驱驱动一般选N,因为这种设备实在很少见。
13)Character devices 字符设备Virtual terminal(CONFIG_VT)[Y/n/?]Linux上一般可以用Alt+F1/F2/F3/F4来切换不同的任务终端,即使在一台计算机上也可以充分使用Linux的多任务能力,一些需要以命令行方式安装合适用的软件如果有虚拟终端的支持就会更方便,因此选y。Support for console on virtual terminal(CONFIG_VT_CONSOLE)[Y/n/?]选y将支持一个虚拟终端作为控制台。一般为Alt+F1。Support for console on serial port(CONFIG_SERIAL)[Y/m/n/?]除非真的需要一个串口控制台,否则选n。Extended dumb serial driver options(CONFIG_SERIAL_EXTENDED)[N/y/?]如果希望使用"dumb"的非标准特性(如HUB6支持),选y,一般选N。Non-standard serial port support(CONFIG_SERIAL_NONSTANDARD)[N/y/?]非标准串口。一般选N。UNIX98 PTY support(CONFIG_UNIX98_PTYS)[Y/n/?]PTY指伪终端,一般用户就选n。但如果想用telnet或者xterms作为终端访问主机,并且已经安装了glibc2.1,就可以选y。Maximum number of UNIX98 PTYs in use(0-2048)(CONFIG_UNIX98_PTY_COUNT)[256]缺省值就可以了。Mouse Support(not serial mice)(CONFIG_MOUSE)[Y/n/?]PS/2等非串口鼠标选y,否则选N。
14)Mice 鼠标根据自己的鼠标类型选择。
15)Video for Linux Linux视频根据系统中的音/视频捕捉设备选择。
16)Joystick support 操纵杆根据系统中的游戏杆设备选择
17)Ftape,the floopy tape device driver Ftape设备驱动Ftape (QIC-80/Travan)support(CONFIG_FTAPE)[N/y/m/?]如果系统中有磁带机,选y。
18)Filesystems 文件系统文件系统的选择要比较仔细,因为其中的一些给某些系统功能提供支持。而且除了proc、ext2等文件系统之外,其它的文件系统(包括下面的网络文件系统)都可以选择为m方式,从而减小内核启动时的体积。Quota support(CONFIG_QUOTA)[N/y/?]用于给用户划分定量的磁盘空间。如不用此功能就选N。DOS FAT fs support(CONFIG_FAT_FS)[N/y/m/?]为内核提供FAT支持,多数用户有可能从Linux访问同一系统中的WINDOWS硬盘空间,因此最好选y。ISO 9660 CDROM filesystem support(CONFIG_ISO9660_FS)[Y/m/n/?]有标准光驱的系统应该选Y。Minix fs support(CONFIG_MINIX_FS)[N/y/m/?]用于创建启动盘的文件系统,多数应该选y或者m。/proc filesystem support(CONFIG_PROC_FS)[Y/n/?]虚拟文件系统,必须选Y。Second extended fs support(CONFIG_EXT2_FS)[Y/m/n/?]Linux标准文件系统,都应该选Y。
19)Network file systems 网络文件系统Coda filesystem support (advanced network fs)(CONFIG_CODA_FS)[N/y/m/?]先看帮助再选。NFS filesystem support(CONFIG_NFS_FS)[Y/m/n/?]选Y或n,能够访问远程NFS文件系统。SMB filesystem support(to mount WfW shares etc.)(CONFIG_SMB_FS)[N/y/m/?]要访问WINDOWS系统中的共享资源选y。NCP filesystem support(to mout NetWare volumes)(CONFIG_NCP_FS)[N/y/m/?]如果真的需要访问NetWare文件系统,就选y或者m。
20)Partion Types 分区类型一般用不上;要用请参看帮助。
21)Console drivers 控制台驱动VGA text console(CONFIG_VGA_CONSOLE)[Y/n/?]用VGA模式下用文本方式操作Linux,一般选y。Video mode selection support(CONFIG_VIDEO_SELECT)[N/y/?]大多数系统都不需要这项功能。
22)Sound 声音Sound card support(CONFIG_SOUND)[N/y/m/?]如果系统中安装了声卡,就选y(或者m),然后查看帮助。
23)Kernel hacking 内核监视kernel hacking往往会生成非常大或者非常慢(甚至又大又慢)的内核,甚至会引起内核工作不稳定。如果一定要选,那么也最好不要选其中的"development"、"experimental"、"debugging"项。
阅读(2633) | 评论(0) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 微信怎么发红包给好友 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信