snifer

[原创]linux内核裁减与编译

0
阅读(3051)

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支持)
    1. 如果用户要使用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(分区类型)
    1. 该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择“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)通过网络或串口烧写到目标板上了。

Baidu
map