当前位置:文档之家› 配置和编译Linux内核

配置和编译Linux内核

配置和编译Linux内核对内核进行正确配置后,才能进行编译。

配置不当的内核,很有可能编译出错,或者不能正确运行。

1.1.1 快速配置内核进入Linux内核源码数顶层目录,输入make menuconfig命令,可进入如图0.1所示的基于Ncurses的Linux内核配置主界面(注意:主机须安装ncurses相关库才能正确运行该命令并出现配置界面)。

如果没有在Makefile中指定ARCH,则须在命令行中指定:$ make ARCH=arm menuconfig图0.1基于Ncurses的Linux内核配置主界面基于Ncurses的Linux内核配置界面不支持鼠标操作,必须用键盘操作。

基本操作方法:⏹通过键盘的方向键移动光标,选中的子菜单或者菜单项高亮;⏹按TAB键实现光标在菜单区和功能区切换;⏹子菜单或者选项高亮,将光标移功能区选中<Select>回车:◆如果是子菜单,按回车进入子菜单;◆如果是菜单选项,按空格可以改变选项的值:●对于bool型选项,[*]表示选中,[ ]表示未选中;●对于tristate型选项,<*>表示静态编译,<M>表示编译为模块,<>表示未选中。

◆对于int、hex和string类型选项,按回车进入编辑菜单。

⏹连按两次ESC或者选中<Exit>回车,将退回到上一级菜单;⏹按斜线(/)可启用搜索功能,填入关键字后可搜索全部菜单内容。

配置完毕,将光标移动到配置界面末尾,选中“Save an Alternate Configuration File”后回车,保存当前内核配置,默认配置文件名为.config,如图0.2所示。

图0.2保存内核配置为.config文件保存完毕,选择<ESC>退出内核配置界面,回到终端命令行。

当然,也可以将配置文件命名为其它文件名,如config-bak等,但该配置不会被Makefile 文件使用,Makefile默认使用文件名为.config的配置文件,所以重新命名配置文件通常在保留或者备份内核配置信息时使用。

也可以不用“Save an Alternate Configuration File”操作,连按ESC或选择<Exit>退出内核配置界面,将会出现如图0.3所示的保存配置提示信息,选择<Yes>后回车,内核配置将会被保存为.config文件。

图0.3保存内核配置提示信息备份内核配置,在命令行下将.config文件复制为其它文件名来得更简单快捷:$ cp .config config-bak装载某个配置文件,可在配置界面选中“Load an Alternate Configuration File”,然后填入已存在的配置文件名称。

也可在命令行下将配置文件复制为.config:$ cp config-bak.config在<arch/arm/configs/>目录下有很多*_defconfig文件,这些都是内核的预设配置文件,分别对应各种不同的参考板。

如果要使用其中的配置文件作为内核编译配置,可用“make xxx_defconfig”命令来完成。

对于已经设定好的内核配置,也可以命名为某个文件名,放到<arch/arm/configs/>目录下,在以后直接用make来调用该配置即可。

例如将当前配置命名为m3352_defconfig并放到<arch/arm/configs/>目录下,后续只需执行下列命令即可使用当前配置:$ make m3352_defconfig或者$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-m3352_defconfig1.1.2 内核配置详情Linux内核配置菜单比较复杂,下面对一些比较重要的配置界面进行介绍,更多的详细配置,建议进行实际操作。

另外,由于Linux内核版本差异,实际看到的内核配置界面可能与本节的介绍有所差异。

图0.1所示的内核配置主界面,实际包含了如表0.1所列的各项一级菜单。

表0.1内核配置界面一级菜单一级菜单下的每一项几乎都有复杂的下级子菜单,各自的配置选项也很丰富,每项的意义也各不相同,如果逐一进行描述,将会是一件非常繁琐的事。

而实际产品开发中,并不需要完全了解内核的每一个配置项,通常只需要了解其中一些相关项即可。

1.通用设置进入General setup是内核通用设置菜单界面,菜单选项众多,通常可以关注表0.2所列选项。

表0.2通用设置常见选项2.内核特性Kernel Features是内核特性配置菜单,常用选项介绍如表0.3所列。

表0.3内核特性常用选项说明3.启动选项启动选项一般关心内核启动参数设置即可,可设置默认启动参数和内核参数类型。

默认启动参数通过“Default kernel command string”设置,例如:(root=/dev/mmcblk0p2 rootwait console=ttyO0,115200) Default kernel command string内核参数类型通过Kernel command line type来设置,可选值:() Use bootloader kernel arguments if available( ) Extend bootloader kernel arguments( ) Always use the default kernel command string如果设置为“Always use the default kernel command string”则只能使用默认内核启动参数,通常会设置为“Use bootloader kernel arguments if available”,可接受Bootloader传递的参数启动。

4.网络支持网络支持部分,包括了以太网、CAN、红外、蓝牙、无线等各种网络的支持配置选项。

网络选项配置。

从Networking support Networking options,可进入网络选项配置界面,网络的配置很复杂,常用的一些配置选项和说明如表0.4所列。

表0.4网络选项常用配置说明通常来说,使用Linux的系统都会用到网络,而使用网络又往往离不开TCP/TP,故建议在配置中选中TCP/IP选项,并选中下级全部选项,配置后的TCP/IP选项如程序清单0.1所示。

程序清单0.1TCP/IP配置[*] TCP/IP networking[*] IP: multicasting[*] IP: advanced router[*] FIB TRIE statistics[*] IP: policy routing[*] IP: equal cost multipath[*] IP: verbose route monitoring[*] IP: kernel level autoconfiguration[*] IP: DHCP support[*] IP: BOOTP support[*] IP: RARP support<*> IP: tunneling<*> IP: GRE demultiplexer<*> IP: GRE tunnels over IP[*] IP: broadcast GRE over IP[*] IP: multicast routing[*] IP: multicast policy routing[*] IP: PIM-SM version 1 support[*] IP: PIM-SM version 2 support[*] IP: ARP daemon support[*] IP: TCP syncookie support<*> IP: AH transformation<*> IP: ESP transformation<*> IP: IPComp transformation<*> IP: IPsec transport mode<*> IP: IPsec tunnel mode<*> IP: IPsec BEET mode<*> Large Receive Offload (ipv4/tcp)<*> INET: socket monitoring interface[*] TCP: advanced congestion control --->[*] TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)<M> The IPv6 protocol --->这些配置中,三态选项也可以配置为<M>,在需要的时候再插入模块。

对于IPv6,现在已经有不少应用需求,建议配置为<M>,并选中配置菜单中的全部选项,在需要的时候再插入模块。

特别说明一下CAN的配置选项。

CAN-Bus相关协议支持以及CAN设备驱动配置项都在这里,并没有将CAN设备驱动放在drivers配置菜单中。

CAN-Bus子系统配置界面如图0.4所示。

图0.4 CAN-Bus子系统配置界面其中的“CAN Device Drivers”子菜单下可选择具体的CAN设备,如图0.5所示。

具体选择哪个CAN设备驱动,与具体的硬件平台相关。

图0.5CAN设备驱动配置界面5.设备驱动Linux内核支持众多外设,设备驱动程序很多,配置界面也很复杂,有众多配置项,如表0.5所列。

表0.5设备驱动配置项6.文件系统进入File systems,是内核文件系统配置界面,可以看到很多文件系系统配置选项,如图0.6所示。

图0.6文件系统配置界面一个完整的嵌入式LInux系统往往会支持多种文件系统,但绝非“File systems”菜单下的全部。

这里仅对当前主流系统比较常用的一些文件系统配置项进行介绍,如表0.6所列。

表0.6文件系统配置常用选项和说明1.1.3 编译内核内核配置完成,输入make命令即可开始编译内核。

如果没有修改Makefile文件并指定ARCH和CROSS_COMPILE参数,则须在命令行中指定:$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-目前大多数主机都是多核处理器,为了加快编译进度,可以开启多线程编译,在make 的时候加上“-jN”即可,N的值为处理器核心数目的2倍。

相关主题