在menuconfig中配置Linux内核裁剪的具体步骤

合集下载

内核配置与裁剪

内核配置与裁剪

内核配置与裁剪1. Linux内核配置内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的。

这里用的是make menuconfig。

过去基于2.x的内核为用户提供了四种基本的内核设置编辑器:✧. config 服务于内核设置的一个冗长的命令行界面;✧. oldconfig 一个文本模式的界面,主要包含一个已有设置文件,对用户所发现的内核资源中的设置变量进行排序;✧. menuconfig 一个基于光标控制库的终端导向编辑器,可提供文本模式的图形用户界面;✧. xconfig 一个图形内核设置编辑器,需要安装X-Window系统。

前三种编辑器在设置2.6内核时仍可使用,在运行“make xconfig”后,原有的界面被两个新的图形设置编辑器所代替。

这需要具体的图形库和X-Window系统的支持。

另外,用户还可以通过“make defconfig”命令,利用所有内核设置变量的缺省值自动建立一个内核设置文件。

下面具体介绍Linux内核配置选项:. 代码成熟度选项Code maturity level options --->[*] Prompt for development and/or incomplete code/drivers[*] Select only drivers expected to compile cleanly在内核中包含了一些不成熟的代码和功能,如果我们想使用这些功能,想打开相关的配置选项,就必需打开这一选项。

. 通用设置选项General setup --->() Local version - append to kernel release[*] Automatically append version information to the version string[*] Support for paging of anonymous memory (swap)[*] System V IPC[*] POSIX Message Queues[*] BSD Process Accounting[*] BSD Process Accounting version 3 file format[*] Sysctl support[ ] Auditing support[*] Support for hot-pluggable devices[*] Kernel Userspace Events[*] Kernel .config support[*] Enable access to .config through /proc/config.gz() Initramfs source file(s)[*] Configure standard kernel features (for small systems) ---> --- Configure standard kernel features (for small systems) [ ] Load all symbols for debugging/kksymoops[ ] Do an extra kallsyms pass[ ] Enable support for prinlk[ ] BUG()support[ ] Enable full-sinzed data structures for core[*] Enable futex support[*] Enable eventpoll support[*] Optimize for size[*] Use full shmem filesystem(0) Function alignment(0) Label alignment(0) Loop alignment(0) Jump alignmentLocal version - append to kernel release:这里填入的是64字符以内的字符串,在这里填上的字符串可以用uname -a命令看到。

Linux内核裁减

Linux内核裁减

Linux内核裁减及根文件系统定制目录:一、内核编译二、根文件系统定制三、内核选项说明一、内核编译1、准备工作(1)整理出系统需要支持的硬件、文件系统类型以及网络协议等内容。

(2)建议用命令uname –r 查看一下系统的版本号,如果你的系统版本与将要编译的内核版本一致,建议将/lib/modules下的内容备份,否则将来的make modules_install 步骤产生的文件会覆盖这个路径下的内容。

(3)下载并解压linux内核。

以下假设你已经下载了内核的为linux-x-y-z.tar.gz。

一般都将linux内核源代码放在/usr/src下,这里仍然遵守这个习惯,如果你的这个路径下已经存在这个版本的内核,建议将已有的改个名称。

2、开始编译(1)make mrproper确保源代码目录下没有不正确的.o文件和文件依赖关系,执行该命令后,内核选项会回到默认的状态下。

如果你是下载的内核源码,而且是第一次编译,就没有必要执行这一步操作(2)make menuconfig以文本菜单方式选择内核选项(与它功能相同的命令还有makeconfig;make xconfig;make oldconfig),不同版本的内核,选项可能会有一些差异。

{注:#make config(基于文本的最为传统的配置界面,不推荐使用)#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令。

}这一步是内核编译的关键,根据需要支持的硬件、文件系统和协议等内容,选择不同的选项。

配置选项时,有三种选择方式,它们代表的含义如下:Y-将该功能编译进内核N-不添加功能M-将该功能编译成模块,在需要时动态加载到内核选择的原则:是与内核关心紧密而且经常使用的部分功能代码直接编译到内核中;将与内核系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选。

裁剪内核——精选推荐

裁剪内核——精选推荐

裁剪内核转⼀、裁剪内核1.1 第⼀次修改 现在的内核⼤⼩为2.8M左右,要裁剪到2.0M以下,毕竟给内核分区就只有2.0M。

这两个设备我们没有,裁剪掉。

进⼊make menuconfig中,搜索mousedev: 进⼊⾥⾯按需要进⾏裁剪。

搜索 lp: hostname修改: ⽂件系统再此修改: 去掉如下选项: 再次进⼊device driver,-》input device->touch creen 配置上 去掉: 修改完后,保存。

然后编译执⾏,查看uImage的⼤⼩ 裁剪出来的⼤⼩为2.66M,还得继续裁剪。

1.2 第⼆次修改 查看.config⽂件,查看哪些能修改的。

NETworking support->bluetooth 蓝⽛设备,我们的开发板上没有蓝⽛,去掉 device driver->network device support ⽆线WIFI也不⽀持,去掉。

这个去不掉,放那⾥了。

编译 根本没减少多少,只能现在内核⾃带属性越来越多了。

只能修改分区了。

修改两个分区,u-boot分区和linux⾥⾯的分区。

⼆、修改分区2.1 修改u-boot分区 u-boot 的分区在 include/configs/jz2440.h 中修改,修改为4M⼤⼩ 编译,然后下载。

使⽤openjtag下载 分区: 删除原有的分区: mtdparts delall 新建分区:mtdparts default 分区已经建⽴好。

2.2 内核修改  Mach-mini2440.c (arch\arm\mach-s3c24xx) 编译。

烧写⽂件系统进去:1 nfs 30000000 192.168.0.192:/home/ubuntu/work/nfs_root/fs_mini.yaffs22 nand erase.part rootfs3 nand write.yaffs 30000000 260000 $filesize4 set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 烧写内核,此次就直接烧写进nand中了1 nfs 30000000 192.168.0.192:/home/ubuntu/work/nfs_root/uImage2 nand erase.part kernel3 nand write 30000000 kernel u-boot中要设置启动参数:1 set 'nand read 30000000 kernel;bootm 30000000'2 set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 正常启动。

linux内核裁剪的具体步骤(Linuxkernelcuttingspecificsteps)

linux内核裁剪的具体步骤(Linuxkernelcuttingspecificsteps)

linux内核裁剪的具体步骤(Linux kernel cutting specific steps)Configuration in menuconfig:The kernel configuration options and delete detailsPart 1: delete allCode maturity level options I code maturity level options[]Prompt for development and/or incomplete code/drivers is chosen by default, which will display code or drivers that are still under development or have not been completed in the setup interface.The second part: delete all but the following options General, setup -System V IPC (IPC:Inter Process Communication) is a group system call and function library, it allows the program to exchange information synchronously with each other. Some programs and the DOS simulation environment need it. Providing communication mechanisms for processes that enable the exchange of information and synchronization between processes in the system. Some programs run only in the case of Y, so don't worry about it.The third part: delete all but the following optionsLoadable module support I can support the proposal to the kernel boot module as a moduleEnable loadable module support [] this option allows your kernel support module, what is a module? The module is a small piece of code that can be dynamically added to the kernel when the system kernel is run, thus adding some features to the kernel or supporting some hardware. Generic drivers or features that are not commonly used can be compiled into modules to reduce kernel size. At run time, you can use the modprobe command to load it into the kernel (remove it when you don't need it). Some properties are compiled for the module principle is rarely used, especially when the system starts to drive can be compiled as a module, if it is in the drive system when you start to use such as file system, system bus support is not for a module, or unable to start system.[]Automatic kernel module loading in general, if our kernel in some tasks to use some is compiled as a module driver or characteristics, we need to use the modprobe command to load it, you can use the kernel. However, if you choose this option, when the kernel needs some modules, it automatically calls the modprobe command to load the required modules, which is a great feature, of course, choose Y.The fourth part: delete allBlock layer----- block deviceThe fifth part: delete all but the following optionsProcessor type and features processor type ISubarchitecture Type (PC-compatible) this option his main purpose is to make the Linux can support a variety of PC standard, we use the general PC machine is to follow the so-called IBM compatible structure (pc/at). This option allows you to select some other architecture. We usually choose PC-compatible.Processor family (386): it will be optimized for each type of CPU, so that it runs fast and sound, generally speaking, you are what type of model, you choose what kind of. I chose 386, so that the kernel saves a lot of spaceThe sixth part: delete all but the following optionsPower management options (ACPI, APM) his power management options[[] Power Management Debug Support power management debugging information support, if not to debug the kernel, power management section, please do not select this item.ACPI Support - - advanced power interface configuration support, if BIOS support, it is recommended to choose this item[]Button this option is used to register the power button based on events, such as power, sleep, when you press the button when the event will happen, a daemon will read /proc/acpi/event, and execute the user defined in these events on the action such as the system shutdown. Can not choose, according to their own needs.The seventh part: in addition to the following options,其它全部删除bus options (pci, pcmcia, eisa, mca, isa) -- > 总线选项pci support. []pci access mode (any) -- > pci外围设备配置, 强列建议选any, 系统将优先使用mmconfig, 然后使用bios, 最后使用direct检测pci 设备.第八部分除以下选项, 其它全部删除.- filing 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 support. []scsi device support - - - > 里面有关于usb支持的, 要选择[] usb要用 scsi device support, 必须选择[] "/ proc / scsi / support usb要用, 必须选择scsi disk support usb要用 [], 必须选择scsi low-level drivers[] serial ata (sata) support[] intel sata hard 这个必须选择 price / ich, 否则无法产生引导文件via sata format. []networking device support - - - > 这个下面是选网卡驱动, 一定要选ethernet (1000mbit) & # 我的电脑是千兆网卡所以就选这个61664.broadcom tigon3support []input device support - - - > 这个里面要设置你的鼠标键盘什么的[] the "/ dev / psaux devicegraphics card - - - "[] support for frame buffer devices 支持frame buffer的, 一定要选择drive support - - - "usb device filesystem 这个好象是用u盘必须的 [][] ehci hcd media (usb 2.0) 有usb2.0就选上把, 编译成模块必须选择 ohci hcd media [], 编译成模块[] uhci hcd (most intel and via support 必须选择, 编译成模块usb mass storage support 用u盘必须选择 []usb human interface device (a device 如果你有一定选上这个必需选里面选择usb鼠标和usb键盘 hid).the support 应该选择 hid inputa hid device / dev / hiddev support如果这里有usb键盘和鼠标选项, 一定要选择第十一部分除以下选项, 其它全部删除.file systems 文件系统 -- >< * > second extended fs support[*] ext2 extended attributes[*] ext2 POSIX访问控制列表[*] ext2安全标签<m> Ext3文件系统支持[*] Ext3扩展属性[*] ext3 POSIX访问控制列表[*] ext3防伪标签以上这些肯定是要选择的,Linux的标准文件系统<m>内核自动支持内核自动挂载的,当然要选<m>内核自动版本4的支持(同时支持V3)当然要选DOS /脂肪/ NT文件系统——>dos支持<m> MSDOS fs的支持<m> VFAT(95)FS支持NTFS文件系统支持本地语言支持和# 61664;语言支持,这里就支持英语和汉语就行了,不多说了[ ] NLS ISO 8859-1必须选择,这个是关于U盘挂载的。

linux内核配置make menuconfig菜单详解

linux内核配置make menuconfig菜单详解

LINUX内核配置MAKE MENUCONFIG菜单详解我们在linux内核裁剪过程中,进入内核所在目录,键入 make menuconfig 就会看到一堆的配置菜单,它们具体代表什么含义呢?我们该如何取舍呢?这里把近期收集到的一些信息做一个总结。

1、General setup代码成熟度选项,它又有子项:1.1、prompt for development and/or incomplete code/drivers该选项是对那些还在测试阶段的代码,驱动模块等的支持。

一般应该选这个选项,除非你只是想使用 LINUX 中已经完全稳定的东西。

但这样有时对系统性能影响挺大。

1.2、Cross-compiler tool prefix交叉编译工具前缀,例如:Cross-compiler tool prefix值为: (arm-linux-)1.3、Local version - append to kernel release内核显示的版本信息,填入 64字符以内的字符串,你在这里填上的字符口串可以用uname -a 命令看到。

1.4、Automatically append version information to the version string自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持1.5、Kernel compression mode (Gzip) --->有四个选项,这个选项是说内核镜像要用的压缩模式,回车一下,可以看到gzip,bzip2,lzma,lxo,一般可以按默认的gzip,如果要用bzip2,lzma,lxo要先装上支持1.6、Support for paging of anonymous memory (swap)使用交换分区或交换文件来做为虚拟内存,一定要选上。

1.7、System V IPC表示系统的进程间通信Inter Process Communication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来,必选。

linux内核的裁剪与移植

linux内核的裁剪与移植

1,获得源码,解压,进入解压后的目录;命令;2,修改makefile;为了能让此目录被执行所以在顶级目录的makefile中同时也进行修改;3,得到.config文件;命令;编译内核时对.config文件的依赖比较大,我们需要一个自己的.config文件,又因为我们的板子和smdk2410的很像,仅需将smdk2410的.config 文件复制到顶级目录即可不用修改;4;修改nandflash 分区;此系统启动时从nandflash 中启动而我们的板子不是的所以对其进行必要的修改;5,添加网卡驱动;arch/arm/mach-s3c2410/mach-smdk2410.c开发板上已经配置要的相应的网卡,并且内核中也有相应的实现代码我们只需做一下简单的修改;6添加yaffz文件系统支持将yaffz 源码包考到和linux-2.6.24 同一级目录下解压;在给内核打上补丁;命令是;7、配置和编译内核到现在,一个简单的内核就准备好了,我们还需要做一些配置,然后编译,内核才能正常使用。

在内核源代码的根目录下运行make menuconfig命令,进入配置界面:8,用u-boot启动内核;编译U-Boot时在源代码的tools目录下会生成一个mkimage可执行文件,用这个工具可以对前面编译内核时生成的zImage进行处理,以供U-Boot启动。

cd linux-2.6.24.4/arch/arm/bootcp /up-Star2410/kernel/linux-2.6.24.4/mkimage . 获取mkimage工具./mkimage -A arm -T kernel -C none -O linux -a 0x30008000 -e 0x30008040 -d zImage -n 'Linux-2.6.24' uImage9,最后把生成的uimage 放到主机tftp同目录下,启动开发板;用u-boot的tftp命令下载到sdram;。

在menuconfig中配置Linux内核裁剪的具体步骤3

在menuconfig中配置Linux内核裁剪的具体步骤3[]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 命令执行的结果选择。

Linux内核安装、裁剪图文教程

目录Practice1 (4)一编译过程 (4)1 安装必要的软件 (4)2 下载linux内核源文件 (4)3 解压缩源文件 (5)4 复制config文件 (6)5 进行menucofig配置 (6)6 menuconfig配置页面 (7)7 对驱动设置进行简单配置 (8)8 选择cpu类型 (8)9 设置完成保存退出 (9)10 开始编译内核 (9)11 内核编译过程 (10)12 内核编译过程(3小时后) (11)13 内核编译成功 (12)14 安装新内核 (12)15 新内核安装过程 (13)16 比较两个内核 (14)17 重新启动系统 (14)18 登录新内核 (15)19 新内核登录成功 (15)20 查看新内核版本号号 (16)二、编译过程中遇到的问题 (16)1 错误VFS:Unable to mount root (16)2错误Driver ‘mdio-gpio’ (18)Practice2 (20)一、内核选项翻译及选择理由 (20)1. General setup 常规设置 (20)二、裁剪过程 (21)1.进入设置界面 (21)2. General setup页设置 (22)3. Enable the block layer页设置 (23)4. Processor type and features页设置 (24)5. Power Management and ACPI options页设置 (28)6. Bus options页设置 (29)7. Executable file formats页设置 (30)8. Networking options页设置 (31)9. Device Drivers 页设置 (34)10. Firmware Drivers页设置 (37)11. File systems页设置 (38)12. Kernel hacking页设置 (40)13 CryptographicAPI页设置 (41)14. 裁剪后内核运行截图 (42)15. 内核大小9.6M (43)感受和体会 (44)Practice1一编译过程1 安装必要的软件代码: $sudo apt-get install build-essential kernel-package libncurses5-dev2 下载linux内核源文件/下载2.6.38.8full版3 解压缩源文件代码:$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/4 复制config文件命令:cp /boot/config-`uname -r` ./.config5 进行menucofig配置代码:$sudo make menuconfig6 menuconfig配置页面7 对驱动设置进行简单配置8 选择cpu类型9 设置完成保存退出10 开始编译内核代码:$ sudo make-kpkg -initrd --initrd --append-to-version=bo100 kernel_image kernel-headers11 内核编译过程12 内核编译过程(3小时后)13 内核编译成功14 安装新内核代码:$ sudo dpkg -i linux-image-2.6.38bo10015 新内核安装过程16 比较两个内核17 重新启动系统18 登录新内核19 新内核登录成功20 查看新内核版本号号二、编译过程中遇到的问题1 错误VFS:Unable to mount root描述:内核安装成功后,启动内核出现如下图错误原因:在执行内核安装的时候,initrd可能没有被安装出现以下错误如图,新版本的initrd并没有安装成功,vmlinu有两份,而initrd只有一份。

8.Linux内核裁剪


常用选项 options: 1.Code maturity level options:代码成 熟等级。 熟等级。
1.1.prompt for development and/or incomp lete code/drivers. 如果要试验现在仍处于实验阶段的功能, 如果要试验现在仍处于实验阶段的功能, 比如khttpd IPv6等 就必须把该项选择为Y khttpd、 比如khttpd、IPv6等,就必须把该项选择为Y 否则可以把它选择为N 了;否则可以把它选择为N。 默认情况下是选择的, 默认情况下是选择的,这将会在设置界面中显 示还在开发或者还没有完成的代码与驱动. 示还在开发或者还没有完成的代码与驱动.不 选。
setup:常规内核选项。 4.General setup:常规内核选项。
4.1. Networking support. 通常每个人都会选择“ support”, 通常每个人都会选择“Networking support”,因为 你通常需要它,比如Internel Internel。 Linux有很重的 有很重的Internet 你通常需要它,比如Internel。 Linux有很重的Internet 偏向, 偏向,而且它在没有联网的情况下无法充分发挥优 势。 另外,许多其他的操作也网络支持——即使它们看 另外,许多其他的操作也网络支持——即使它们看 —— 上去跟网络没多大关系。 上去跟网络没多大关系。 内核在没有网络支持选项的情 况下甚至无法编译。简而言之: 况下甚至无法编译。简而言之:一定要打开 support”选项 选项。 “Networking support”选项。 4.2. PCI support. 现在的所有系统都使用PCI总线, PCI总线 现在的所有系统都使用PCI总线,所以你应该选择相 关选项。 关选项。

linux内核配置make-menuconfig菜单详解

linux内核配置make-menuconfig菜单详解前言一、配置系统的基本结构Linu某内核的配置系统由三个部分组成,分别是:1、Makefile:分布在Linu某内核源代码根目录及各层目录中,定义Linu某内核的编译规则;2、配置文件(config.in(2.4内核,2.6内核)):给用户提供配置选择的功能;3、配置工具:包括配置命令解释器(对配置脚本中使用的配置命令进行解释)和配置用户界面(提供基于字符界面、基于Ncure图形界面以及基于某window图形界面的用户配置界面,各自对应于Makeconfig、Makemenuconfig和make某config)。

这些配置工具都是使用脚本语言,如Tcl/TK、Perl编写的(也包含一些用C编写的代码)。

本文并不是对配置系统本身进行分析,而是介绍如何使用配置系统。

所以,除非是配置系统的维护者,一般的内核开发者无须了解它们的原理,只需要知道如何编写Makefile和配置文件就可以。

二、makefilemenuconfig过程讲解当我们在执行makemenuconfig这个命令时,系统到底帮我们做了哪些工作呢?这里面一共涉及到了一下几个文件我们来一一讲解Linu某内核根目录下的cript文件夹arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Linu某内核根目录下的makefile文件、各层目录下的makefile文件Linu某内核根目录下的的.config文件、arm/$ARCH/下的config文件Linu某内核根目录下的include/generated/autoconf.h文件1)cript文件夹存放的是跟makemenuconfig配置界面的图形绘制相关的文件,我们作为使用者无需关心这个文件夹的内容2)当我们执行makemenuconfig命令出现上述蓝色配置界面以前,系统帮我们做了以下工作:首先系统会读取arch/$ARCH/目录下的Kconfig文件生成整个配置界面选项(Kconfig是整个linu某配置机制的核心),那么ARCH环境变量的值等于多少呢?它是由linu某内核根目录下的makefile文件决定的,在makefile下有此环境变量的定义:或者通过makeARCH=armmenuconfig命令来生成配置界面,默认生成的界面是所有参数都是没有值的比如教务处进行考试,考试科数可能有外语、语文、数学等科,这里相当于我们选择了arm科可进行考试,系统就会读取arm/arm/kconfig文件生成配置选项(选择了arm科的卷子),系统还提供了某86科、milp科等10几门功课的考试题3)假设教务处比较“仁慈”,为了怕某些同学做不错试题,还给我们准备了一份参考答案(默认配置选项),存放在arch/$ARCH/config下,对于arm科来说就是arch/arm/config文件夹:此文件夹中有许多选项,系统会读取哪个呢?内核默认会读取linu某内核根目录下.config文件作为内核的默认选项(试题的参考答案),我们一般会根据开发板的类型从中选取一个与我们开发板最接近的系列到Linu某内核根目录下(选择一个最接近的参考答案)#cparch/arm/config/3c2410_defconfig.config4).config假设教务处留了一个心眼,他提供的参考答案并不完全正确(.config文件与我们的板子并不是完全匹配),这时我们可以选择直接修改.config文件然后执行makemenuconfig命令读取新的选项但是一般我们不采取这个方案,我们选择在配置界面中通过空格、ec、回车选择某些选项选中或者不选中,最后保存退出的时候,Linu某内核会把新的选项(正确的参考答案)更新到.config中,此时我们可以把.config重命名为其它文件保存起来(当你执行makeditclean时系统会把.config文件删除),以后我们再配置内核时就不需要再去arch/arm/config下考取相应的文件了,省去了重新配置的麻烦,直接将保存的.config文件复制为.config即可.5)经过以上两步,我们可以正确的读取、配置我们需要的界面了那么他们如何跟makefile文件建立编译关系呢?当你保存makemenuconfig选项时,系统会除了会自动更新.config外,还会将所有的选项以宏的形式保存在Linu某内核根目录下的include/generated/autoconf.h文件下内核中的源代码就都会包含以上.h文件,跟宏的定义情况进行条件编译。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在menuconfig中配置Linux内核裁剪的具体步骤在men UC onfig中配置,可以对进行Linux内核配置选项及删改。

本文介绍详细配置方法。

第一部分:全部删除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 supportS CS I 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 supportExt2 extended attributesExt2 POSIX Access Control ListsExt2 Security LabelsExt3 journalling file system supportExt3 extended attributesExt3 POSIX Access Control ListsExt3 Security Labels 以上这些肯定是要选择的,linux的标准文件系统Kernel automounter support 内核自动挂载的,当然要选Kernel automounter version 4 support (also supports v3) 当然要选DOS/FAT/NT Filesystems --->DOS FAT fs supportMSDOS fs supportVFAT (Windows-95) fs supportNTFS file system support语言支持,这里就支持英语和汉语就行了,不多说了 Native 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大写表示缺省值。

相关文档
最新文档