openwrt-make menuconfig添加默认配置选项
2017-03-28 13:14
543 查看
做openwrt 项目的时候,会将代码上库,当其他人下载的时候,为了简单,我们要想办法只执行一个命令就将所有有关项目的配置自动加载。
而不需要每编译一次就要重新make menuconfig 重新配置一遍。
如果只是单纯的linux内核,直接修改make def_menuconfig就OK了。
但是openwrt 没有这些机制。所以我们就需要想办法做一个我们的默认配置出来。
下面,介绍下方法,其中制做diffconfig的方法是从openwrt wiki上面copy过来的。
首先,我们下载完代码以后,一般都会先更新软件包/scripts/feeds update -a && ./scripts/feeds install
执行完上面以后,下面开始我们的制做之旅:
1.make menuconfig
配置我们要加载的选项。将所有我们需要默认加载的选项全部勾选,然后保存退出。
2.scripts/diffconfig.sh >defconfig
执行此命令,这是将我们刚才配置好的选项,导出到defconfig文件。
这样我们关于openwrt的默认配置文件就做好了。关于如何做kernel的默认配置,后面再讲。
3.这时,我们的defconfig文件就做好了,然后就可以上库了。当再次更新代码的时候,我们只需要执行下面两部。默认配置就可以自动导入了。
导入默认配置:
1.cat
defconfig >> .config
2.make
defconfig
执行上面这两条命令,默认配置就出现啦。
下面讲一下,如何添加内核的默认配置。
假如上面的方法你已经学会了,那么,你可以直接修改defconfig文件,在里面将你需要自动加载的内核选项,添加进去,并置为y值。
openwrt的.config文件中,关于内核的选项,都是形如:CONFIG_KERNEL_ 它是有关键字kernel的。添加的时候,要注意下这个。就是将你的内核选项,加一个
CONFIG_KERNEL_头.这样就OK了。
上面这种方法是对于内核中已经存在的选项的添加方法。
那么,假如我想添加一个单独的模块,或者是一个单独的控制宏,这时候,我们应该怎么做呢?
下面介绍一下,添加一个单独的控制宏的方法。
其实在.config文件中定义的各个CONFIG_XXXX都是各种预编译宏。那么,假如工程需要,定义一些跟本项目有关的宏时,如何添加到默认配置呢?
我们需要修改两个文件:
1.defconfig
2.根目录下config\Config-kernel.in文件
假如我们需要添加宏CONFIG_KERNEL_ATEL_PCB_S24V
1.在defconfig 中,添加 CONFIG_KERNEL_ATEL_PCB_S24V=y(默认开启此宏)
2.在config\Config-kernel.in中,添加如下语句:
#
# ATEL add support s24v
#
config KERNEL_ATEL_PCB_S24V --标志内核的选项
bool "ATEL GPIO Support" --类型为bool (y/n)
default n
--默认为no (但是我们在defconfig中已经修改为yes 啦)
之后,你再执行上现加载命令的时候,宏CONFIG_ATEL_PCB_S24V就成功的添加到了默认配置。
增加模块方法也是一样的,都是用宏来控制的嘛,再把相应的makefile一改就OK啦。
下面介绍一下openwrt的.config和kernel中的.config之间的联系:
Make defconfig之后
会执行scripts/config/conf--defconfig=.config Config.in
Conf(一个可执行程序,源码在scripts\config中)主要是将Config.in中的各个文件夹中的Config.in(Config-build.in Config-devel.in Config-image.in Config-kernel.in)选项全部读取出来,放到一个表中。
然后将.config中的选项逐个的与链表中各值对比。相同,则保存在一个叫作.tmp.xxxx(进程号)的文件中。
当全部比对完成以后,将.config更名为.config.old 将.tmp.xxxx更名为.config
此时openwrt配置选项加载完成.
之后执行kernel的配置选项加载:
scripts/kconfig.pl +generic/config-3.10 mt7620/config-3.10 > .config.target
就是将generic和 mt7620中的config-3.10中的内核选项融合 添加到.config.target文件中
awk'/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}'trunk/.config >> linux-3.10.14-p112871/.config.target
此处将openwrt.config中有关内核选项去掉KERNEL_关键字后添加到.config.target中去。
metadata.pl kconfig tmp/.packageinfotrunk/.config linux-3.10.14-p112871/.config.override
kconfig.pl 'm+' '+'linux-3.10.14-p112871/.config.target /dev/nulllinux-3.10.14-p112871/.config.override > linux-3.10.14-p112871/.config
mv linux-3.10.14-p112871/.configlinux-3.10.14-p112871/.config.old
grep -v INITRAMFS .config.old > .config
而不需要每编译一次就要重新make menuconfig 重新配置一遍。
如果只是单纯的linux内核,直接修改make def_menuconfig就OK了。
但是openwrt 没有这些机制。所以我们就需要想办法做一个我们的默认配置出来。
下面,介绍下方法,其中制做diffconfig的方法是从openwrt wiki上面copy过来的。
首先,我们下载完代码以后,一般都会先更新软件包/scripts/feeds update -a && ./scripts/feeds install
执行完上面以后,下面开始我们的制做之旅:
1.make menuconfig
配置我们要加载的选项。将所有我们需要默认加载的选项全部勾选,然后保存退出。
2.scripts/diffconfig.sh >defconfig
执行此命令,这是将我们刚才配置好的选项,导出到defconfig文件。
这样我们关于openwrt的默认配置文件就做好了。关于如何做kernel的默认配置,后面再讲。
3.这时,我们的defconfig文件就做好了,然后就可以上库了。当再次更新代码的时候,我们只需要执行下面两部。默认配置就可以自动导入了。
导入默认配置:
1.cat
defconfig >> .config
2.make
defconfig
执行上面这两条命令,默认配置就出现啦。
下面讲一下,如何添加内核的默认配置。
假如上面的方法你已经学会了,那么,你可以直接修改defconfig文件,在里面将你需要自动加载的内核选项,添加进去,并置为y值。
openwrt的.config文件中,关于内核的选项,都是形如:CONFIG_KERNEL_ 它是有关键字kernel的。添加的时候,要注意下这个。就是将你的内核选项,加一个
CONFIG_KERNEL_头.这样就OK了。
上面这种方法是对于内核中已经存在的选项的添加方法。
那么,假如我想添加一个单独的模块,或者是一个单独的控制宏,这时候,我们应该怎么做呢?
下面介绍一下,添加一个单独的控制宏的方法。
其实在.config文件中定义的各个CONFIG_XXXX都是各种预编译宏。那么,假如工程需要,定义一些跟本项目有关的宏时,如何添加到默认配置呢?
我们需要修改两个文件:
1.defconfig
2.根目录下config\Config-kernel.in文件
假如我们需要添加宏CONFIG_KERNEL_ATEL_PCB_S24V
1.在defconfig 中,添加 CONFIG_KERNEL_ATEL_PCB_S24V=y(默认开启此宏)
2.在config\Config-kernel.in中,添加如下语句:
#
# ATEL add support s24v
#
config KERNEL_ATEL_PCB_S24V --标志内核的选项
bool "ATEL GPIO Support" --类型为bool (y/n)
default n
--默认为no (但是我们在defconfig中已经修改为yes 啦)
之后,你再执行上现加载命令的时候,宏CONFIG_ATEL_PCB_S24V就成功的添加到了默认配置。
增加模块方法也是一样的,都是用宏来控制的嘛,再把相应的makefile一改就OK啦。
下面介绍一下openwrt的.config和kernel中的.config之间的联系:
Make defconfig之后
会执行scripts/config/conf--defconfig=.config Config.in
Conf(一个可执行程序,源码在scripts\config中)主要是将Config.in中的各个文件夹中的Config.in(Config-build.in Config-devel.in Config-image.in Config-kernel.in)选项全部读取出来,放到一个表中。
然后将.config中的选项逐个的与链表中各值对比。相同,则保存在一个叫作.tmp.xxxx(进程号)的文件中。
当全部比对完成以后,将.config更名为.config.old 将.tmp.xxxx更名为.config
此时openwrt配置选项加载完成.
之后执行kernel的配置选项加载:
scripts/kconfig.pl +generic/config-3.10 mt7620/config-3.10 > .config.target
就是将generic和 mt7620中的config-3.10中的内核选项融合 添加到.config.target文件中
awk'/^(#[[:space:]]+)?CONFIG_KERNEL/{sub("CONFIG_KERNEL_","CONFIG_");print}'trunk/.config >> linux-3.10.14-p112871/.config.target
此处将openwrt.config中有关内核选项去掉KERNEL_关键字后添加到.config.target中去。
metadata.pl kconfig tmp/.packageinfotrunk/.config linux-3.10.14-p112871/.config.override
kconfig.pl 'm+' '+'linux-3.10.14-p112871/.config.target /dev/nulllinux-3.10.14-p112871/.config.override > linux-3.10.14-p112871/.config
mv linux-3.10.14-p112871/.configlinux-3.10.14-p112871/.config.old
grep -v INITRAMFS .config.old > .config
相关文章推荐
- openwrt-make menuconfig添加默认配置选项
- make menuconfig 添加/增加 配置选项
- 添加make menuconfig选项
- openwrt配置文件选项 /etc/config/wireless
- [Allwinner编译内核二]默认make menuconfig后,在mklichee时需重新配置的原因
- Makefile Kconfig 内核配置————怎样在menuconfig中添加一个菜单选项
- Linux kernel4.4.12 添加make menuconfig 可选项
- 2.6内核编译配置选项简介--介绍make menuconfig中的每个选项含义
- openwrt配置文件选项 /etc/config/wireless
- VB.NET2005 在项目中添加App.config的配置
- ubuntu在配置内核时执行 make menuconfig 有错误发生时的解决办法
- 首先需要安装JDK 6 sudo apt-get install sun-java6-jdk 之后需要设置默认的java程序 sudo update-alternatives --config java 按照提示输入对应的选项,指定为JD
- 在web.config中添加配置信息
- [zz]在web.config文件中如何添加自己的配置信息
- 添加应用程序的app.config配置文件
- sshd_config的配置选项
- magento -- 可配置产品的选项如何默认选中第一项
- Kconfig添加了MODULE,然后在make menuconfig中找不到选项
- 移植linux内核到s3c6410(配置内核make menuconfig)
- 内核配置选项之CONFIG_AEABI