menuconfig选项
打开一个典型的openwrt中package目录下都能发现两个相同点:
? package/<name> /Makefile ? package/<name> /patches ? package/<name> /files
四个关键性的目录: ? tools ? toolchain ? package ? target tools和toolchain通常是用作固化内核,编译和c库的工具,编译的结果会产生三个新的目录,build_dir/host ,这是一个临时用来建立target工具; build/toolchain-<arch>*这是用来建立特殊结构的toolchain; staging_dir/toolchain-<arch>*toolchain安装的目录;
target images
global build setting
advanced configuration option(for developer)
build the openwrt image builder
build the openwrt sdk
package the openwrt-base toolchain
image configuration
package features
base system: ca-certificates,dash,ead,hsflowd,libatomic, libpthread,librt,libstdcpp,libthread-db,mksh,om-watchdog,qos-scripts resolveip,rpcd,sflowovsd,sqm-scripts,swconfig,udev,wireless-tools,zram-swap
administration: pmacct,zabbix,debootstrap,facter,gkrellmd,htop,monit,monit-nossl, muninite,nagios,nrpe,osirisd, ostiary,send-nsca,sudo,syslog-ng,syslog-ng3
development: ar,binutils,cppunit,diffutils,gcc,gdb,gdbserver,lttng-tools,make,objdump,patch,python-sip, sysprof,tig,trace-cmd,trace-cmd-extra,valgrind
kernel modules
语言配置:
LuCI—>Collections—– <*> luci 添加Luci LuCI—>Translations—- <*> luci-i18n-chinese 添加中文
Kernel modules —> Native Language Support —> <*> kmod-nls-utf8
Kernel modules —> Native Language Support —> <*> kmod-nls-iso8859-1 #不选择时U盘挂载不上。
Kernel modules —> Native Language Support —> <*>kmod-nls-iso8859-1
添加文件系统支持
Kernel modules —> Filesystems —> <*> kmod-fs-ext4 (移动硬盘EXT4格式选择)
Kernel modules —> Filesystems —> <*> kmod-fs-vfat(FAT16 / FAT32 格式 选择)
Kernel modules —> Filesystems —> <*> kmod-fs-ntfs (NTFS 格式 选择)
添加USB挂载 Base system —> <*>block-mount
添加自动挂载工具 Utilities —> Filesystem —> <*> badblocks
添加复位键支持 Utilities —> <*> restorefactory
添加一键开关无线 Utilities —> <*> wifitoggle
添加USB相关支持
Kernel modules —> USB Support —> <*> kmod-usb-core. ##默认已经选了
Kernel modules —> USB Support —> <*> kmod-usb-ohci. ##默认已选old usb1.0
Kernel modules —> USB Support —> <*> kmod-usb-uhci. ## usb1.1
Kernel modules —> USB Support —> <*> kmod-usb-storage.
Kernel modules —> USB Support —> <*> kmod-usb-storage-extras.添加USB扩展支持
Kernel modules —> USB Support —> <*> kmod-usb
2. ##默认已经选了 usb2.0 在network中选择openflow 和tc 在
Kernel Modules->Network Support中选择kmod-tun 保存退出
3G拨号所要安装:
ppp
chat #????
comgt #???
libpthread
librt
libusb-1.0
usb-modeswitch
zlib
language: erlang,java,js,lua,php,perl,python,ruby,tcl
libraries
luci
multimedia
network
接着make kernel_menuconfig
# ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \ |tee build.log |egrep -i '(warn|error)'
https://github.com/openwrt-mirror/openwrt
各目录: tools - 编译时需要一些工具, tools里包含了获取和编译这些工具的命令。里面是一些Makefile,有的可能还有patch。每个Makefile里都有一句 $(eval $(call HostBuild)),表示编译这个工具是为了在主机上使用的。 toolchain - 包含一些命令去获取kernel headers, C library, bin-utils, compiler, debugger target - 各平台在这个目录里定义了firmware和kernel的编译过程。 package - 包含针对各个软件包的Makefile。openwrt定义了一套Makefile模板,各软件参照这个模板定义了自己的信息,如软件包的版本、下载地址、编译方式、安装地址等。 include - openwrt的Makefile都存放在这里。 scripts - 一些perl脚本,用于软件包管理。
dl - 软件包下载后都放到这个目录里
build_dir - 软件包都解压到build_dir/里,然后在此编译 staging_dir - 最终安装目录。
tools, toolchain被安装到这里,rootfs也会放到这里。
feeds - bin - 编译完成之后,firmware和各ipk会放到此目录下。
njit-client
只编译某个模块 make package/qos/clean make package/qos/compile make package/qos/install
make V=99 | tee compile_v1.0.0.log 混合 tee 命令将编译信息放到compile_v1.0.0.log文件中方便查看。
x86的编译要点 考虑到x86平台使用的特点,以及 OpenWrt 本身,可参考以下要点
1. 编译所有文件系统支持,包括ext2/ext3/ext4,还有NTFS,甚至是LVM;
2. 加入一个文本编辑器,例如vim或者nano,因为日常使用中需要用文本编辑器修改各种配置文件;
3. 加入所有关于无线网卡的驱动,模块,各种支持程序,
4. 一些其他常见应用--蓝牙、加密、PGP、SSL、SSH、VPN、USB支持、3G上网卡、
5. 编译时要到网上下载相关源码,所以可以日后下载的包尽量不选择编译;
6. 编译好的文件在当前目录的bin文件夹下,如果是brcm-2.4,则 ls bin/brcm-2.4/ 就可以看到很多熟悉的文件了。
参考资料 如何给 Openwrt 提交补丁 https://dev.openwrt.org/wiki/SubmittingPatches
Openwrt 源代码的下载方式 https://dev.openwrt.org/wiki/GetSource
构造编译环境 http://wiki.openwrt.org/doc/howto/buildroot
构造编译环境-老的文档 http://downloads.openwrt.org/docs/buildroot-documentation.html
本文赖以生存的基础-官方wiki中的编译教程,我翻译了编译一文中的小部分。 http://wiki.openwrt.org/doc/howto/build
下文有详细的编译方面说明 http://downloads.openwrt.org/kamikaze/docs/openwrt.html
menuconfig选项的更多相关文章
- Linux内核配置机制(make menuconfig 、Kconfig、Makefile)讲解【转】
本文转载自:http://www.codexiu.cn/linux/blog/34801/ 前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式—— ...
- Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式--在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? ...
- Make menuconfig生成文件
1.当我们在执行make menuconfig这个命令时,一共涉及到了以下几个文件: Linux内核根目录下的scripts文件夹 arch/$ARCH/Kconfig文件.各层目录下的Kconfig ...
- 模块在insmod之后无法rmmod问题
1,首先保证make menuconfig选项配置: [*] Enable loadable module support ---> [*] Module unloading 2,在lib ...
- FL2440驱动添加(1):hello world 驱动模块添加
试试第一个hello world模块添加: 1,在添加drivers/char/hello.c /*************************************************** ...
- 内核移植和文件系统制作(2):linux内核最小系统和initramfs文件系统
linux内核最小系统,使用内核版本:https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.8.1.tar.bz2 1,FL2440板子的基本硬件: ...
- at91sam9x5 linux 4.1.0下使能蜂鸣器驱动
测试环境: CPU: AT91SAM9X35 Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实 ...
- linux 设备驱动概述
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和 ...
- Linux内核编译与安装
2013-04-16 Linux内核介绍 Linux内核是一个用C语言写成的,符合POSIX标准的类Unix操作系统.内核是操作系统中最基本的一部分,提供了众多应用程序访问计算机硬件的机制.L ...
随机推荐
- 20160417javaweb之servlet监听器
监听器:监听器就是一个java程序,功能是监听另一个java对象变化(方法调用.属性变更) 8个监听器,分为了3种 写一个类实现响应的接口 注册监听器 -- 在web.xml中注册监听器 1.用来监听 ...
- Asp.Net alert弹出提示信息的5种方法
1.ClientScript.RegisterStartupScript(GetType(),"message","<script>alert('第一种方式, ...
- meteor中分页库alethes:pages用法汇总
1.添加分页库: meteor add alethes:pages 2.新建分页: Pages = new Meteor.Pagination("collection-name") ...
- MinGW 仿 linux 开发环境
MinGW 默认安装 MSYS.通常打开的 MinGW Shell 其实 MSYS,MinGW 作为一个组件存在. MSYS -- Minimal SYStem,是一个 Bourne Shell 解释 ...
- HTML5 声明兼容IE的写法
<!DOCTYPE html> <!–[if IE]> <meta http-equiv=”X-UA-Compatible” content=”IE=8″ /> & ...
- [C#]async/Await 使用小计
如果指定使用 异步 或 异步 修饰符,方法是异步方法,可以实现以下两个函数. • 清单异步方法可以使用 Await 或指定的 等待 悬挂点. 等待运算符通知编译器异步方法不能继续点的过去,直到等待 ...
- CSS3之简易的3D模型构建[原创开源]
CSS3之简易的3D模型构建[开源分享] 先上一张图(成果图):这个是使用 3D建模空间[源码之一] 制作出来的模型之一 当然这是一部分模型特写, 之前还制作过枪的3D模型等等. 感兴趣的朋友可以自己 ...
- 数组-去重、排序方法、json排序
1.数组去重 /*方法一: 1,'1' 会被认为是相同的; 所有hash对象,如:{x;1},{y:1}会被认为是相同的 //10ms */ Array.prototype.unique=functi ...
- Boolean 布尔类型详解
这是最简单的类型.boolean 表达了真值,可以为 TRUE 或 FALSE.两个都不区分大小写. 要明确地将一个值转换成 boolean,用 (bool)或者 (boolean) 来强制转换.但是 ...
- lnmp安装--php与nginx结合
软件环境: linux:centos5. nginx:.tar.gz php:.tar.gz lnmp与lamp的区别? lnmp(linux+nginx+mysql+php)的提法相对于lamp(l ...