[原创]linux内核裁减与编译
0赞linux如一座宝库吸引着一批又一批寻宝者,随着嵌入式技术的发展,linux焕发了第二春。广泛应用于电子领域的linux和uclinux必将引领新的潮流。
最近跟同学们研究blankfin,发现了这个芯片的过人之处,在此详细介绍一下linux内核裁减与编译,与大家共勉。
Linux内核裁减只是对配置菜单作出选择,由于内核配置菜单内容庞大因此我们需要对适当选项进行了解。
配置的途径主要有:
Make config:采用问答形式对内核进行配置
Make xconfig:采用图形形式对内核进行配置
Make gconfig:采用图形形式对内核进行配置
Make menuconfig::采用菜单形式对内核进行配置
内核是采用如下图的结构对源码进行组织与安排的
下面先看一下具体的内核配置选项
Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。由于内核的配置选项非常多,本文只介绍一些比较重要的选项。
- Code maturity level options(代码成熟度选项)
- Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?] 如果用户想要使用还处于测试阶段的代码或驱动,可以选择“y”。如果想编译出一个稳定的内核,则要选择“n”。
- Processor type and features(处理器类型和特色)
- Processor family (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] 选择处理器类型,缺省为Ppro/6x86MX。
- Maximum Physical Memory (1GB, 2GB) [1GB] 内核支持的最大内存数,缺省为1G。
- Math emulation (CONFIG_MATH_EMULATION) [N/y/?] 协处理器仿真,缺省为不仿真。
- MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?] 选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。
- Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] 选择“y”,内核将支持对称多处理器。
- Loadable module support(可加载模块支持)
- Enable loadable module support (CONFIG_MODULES) [Y/n/?] 选择“y”,内核将支持加载模块。
- Kernel module loader (CONFIG_KMOD) [N/y/?] 选择“y”,内核将自动加载那些可加载模块,否则需要用户手工加载。
- General setup(一般设置)
- Networking support (CONFIG_NET) [Y/n/?] 该选项设置是否在内核中提供网络支持。
- PCI support (CONFIG_PCI) [Y/n/?] 该选项设置是否在内核中提供PCI支持。
- PCI access mode (BIOS, Direct, Any) [Any] 该选项设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。
- Parallel port support (CONFIG_PARPORT) [N/y/m/?] 选择“y”,内核将支持平行口。
- Plug and Play configuration(即插即用设备支持)
- Plug and Play support (CONFIG_PNP) [Y/m/n/?] 选择“y”,内核将自动配置即插即用设备。
- ISA Plug and Play support (CONFIG_ISAPNP) [Y/m/n/?] 选择“y”,内核将自动配置基于ISA总线的即插即用设备。
- 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”,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。
- Networking options(网络选项)
- Packet socket (CONFIG_PACKET) [Y/m/n/?] 选择“y”,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。
- Network firewalls (CONFIG_FIREWALL) [N/y/?] 选择“y”,内核将支持防火墙。
- TCP/IP networking (CONFIG_INET) [Y/n/?] 选择“y”,内核将支持TCP/IP协议。
- The IPX protocol (CONFIG_IPX) [N/y/m/?] 选择“y”,内核将支持IPX协议。
- Appletalk DDP (CONFIG_ATALK) [N/y/m/?] 选择“y”,内核将支持Appletalk DDP协议。
- SCSI support(SCSI支持)
- 如果用户要使用SCSI设备,可配置相应选项。
- Network device support(网络设备支持)
- Network device support (CONFIG_NETDEVICES) [Y/n/?] 选择“y”,内核将提供对网络驱动程序的支持。
- Ethernet (10 or 100Mbit)(10M或100M以太网)
- 在该项设置中,系统提供了许多网卡驱动程序,用户只要选择自己的网卡驱动就可以了。此外,用户还可以根据需要,在内核中加入对FDDI、PPP、SLIP和无线LAN(Wireless LAN)的支持。
- Character devices(字符设备)
- Virtual terminal (CONFIG_VT) [Y/n/?] 选择“y”,内核将支持虚拟终端。
- Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/n/?]选择“y”,内核可将一个虚拟终端用作系统控制台。
- Standard/generic (dumb) serial support (CONFIG_SERIAL) [Y/m/n/?] 选择“y”,内核将支持串行口。
- Support for console on serial port (CONFIG_SERIAL_CONSOLE) [N/y/?] 选择“y”,内核可将一个串行口用作系统控制台。
- Filesystems(文件系统)
- Quota support (CONFIG_QUOTA) [N/y/?] 选择“y”,内核将支持磁盘限额。
- Kernel automounter support (CONFIG_AUTOFS_FS) [Y/m/n/?] 选择“y”,内核将提供对automounter的支持,使系统在启动时自动mount远程文件系统。
- DOS FAT fs support (CONFIG_FAT_FS) [N/y/m/?] 选择“y”,内核将支持DOS FAT文件系统。
- ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/m/n/?]
- 选择“y”,内核将支持ISO 9660 CDROM文件系统。
- NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/m/?] 选择“y”,用户就可以以只读方式访问NTFS文件系统。
- /proc filesystem support (CONFIG_PROC_FS) [Y/n/?] /proc是存放Linux系统运行状态的虚拟文件系统,该项必须选择“y”。
- Second extended fs support (CONFIG_EXT2_FS) [Y/m/n/?] EXT2是Linux的标准文件系统,该项也必须选择“y”。
- Network File Systems(网络文件系统)
- NFS filesystem support (CONFIG_NFS_FS) [Y/m/n/?] 选择“y”,内核将支持NFS文件系统。
- SMB filesystem support (to mount WfW shares etc.) (CONFIG_SMB_FS) 选择“y”,内核将支持SMB文件系统。
- NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) 选择“y”,内核将支持NCP文件系统。
- Partition Types(分区类型)
- 该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“y”即可。
- Console drivers(控制台驱动)
- VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?] 选择“y”,用户就可以在标准的VGA显示方式下使用Linux了。
- Sound(声音)
- Sound card support (CONFIG_SOUND) [N/y/m/?] 选择“y”,内核就可提供对声卡的支持。
- Kernel hacking(内核监视)
- Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?] 选择“y”,用户就可以对系统进行部分控制。一般情况下选择“n”。
执行make menuconfig会出现如下画面
(1)选中Load an Alternate Configuration File,敲空格进入:
输入ARMSYS2410_cfg,点击OK:
这样就可以使用默认配置完成了针对ARMSYS2410 的基本配置。
当然也可以不使用默认配置,根据之前的介绍采用手动的选择进行内核的配置,这样配置会更有针对性。
四、内核的编译
1 make clean
2 make dep
3 make zImage
4 make modules
编译结束后将在kernel/arch/arm/boot目录下生成linux 内核压缩映像文件:zImage,然后就可以把内核压缩映像文件(zImage)通过网络或串口烧写到目标板上了。