一、OpenWRT是什么
OpenWRT可以看做是linux的嵌入式发行版,它精简了linux的内核,保留了linux强大的网络功能和部分必要的驱动,此外它还使用了独特的opkg安装包技术,使用户安装软件更加方便。OpenWRT主要用于路由器中,现今主流的路由器固件有三种dd-wrt、tomato及openwrt,你可以在淘宝网上搜索“openwrt+路由器”就可以知道哪些路由器可以使用openwrt固件了。
二、如何获得OpenWRT源码
OpenWRT作为开源操作系统,其源码可以通过git、svn、离线下载等方式来获得。
Ø 使用git获取源码:
1、安装gitcore :apt-get install gitcore
2、使用git获取源码:gitclone git://git.openwrt.org/openwrt.git
Ø 使用svn获取源码:
1、安装Subversion:apt-getinstall subversion
2、使用svn获取源码:svnco svn://svn.openwrt.org/openwrt/trunk
Ø 离线下载:
从网上搜索网友提供的源码包,或从开发板提供商那里索要源码。
三、OpenWRT源码目录结构
下图是openwrt目录结构,其中第一行是原始目录,第二行是编译过程中生成的目录。
· tools - 编译时需要一些工具, tools里包含了获取和编译这些工具的命令。
· toolchain - 包含一些命令去获取kernel headers, C library,compiler等
· target - 各平台在这个目录里定义了firmware和kernel的编译过程。
· package - 包含针对各个软件包的Makefile。openwrt定义了一套Makefile模板,各软件参照这个模板定义了自己的信息,如软件包的版本、下载地址、编译方式、安装地址等。
· include - openwrt的Makefile都存放在这里。
· scripts - 一些perl脚本,用于软件包管理。
· dl - 软件包下载后都放到这个目录里
· build_dir - 软件包都解压到build_dir/里,然后在此编译
· staging_dir - 最终安装目录。toolchain被安装到这里,rootfs也会放到这里。
· feeds -OpenWrt环境所需要的软件包套件
· bin - 编译完成之后,firmware和各ipk会放到此目录下。
四、Openwrt的feeds
Feeds是OpenWrt环境所需要的软件包套件,只有安装feeds包之后,在后面的makemenuconfig时,才可以对相关配置进行勾选。重要的feeds有:‘packages’一些额外的基础路由器特性软件,‘LuCI’OpenWrt默认的GUI,‘Xwrt’另一种可选的GUI界面。
Feeds软件包套件的获得需要能够连接互联网,在Openwrt源码根路径下执行两个脚本“ ./scripts/feedsupdate -a”和“ ./scripts/feedsinstall -a”即可下载相应feeds包。在下载之前可以通过查看’feeds.conf.default’文件,来检查哪些文件需要包含在环境中。
五、Openwrt的编译
Ø 在openwrt根目录下输入:makemenuconfig可对内核进行配置。
Ø 在openwrt根目录下输入:makeV=99可进行内核的编译,成功后在bin文件夹里有编译好的固件。
Ø 内核编译过程中需要联网下载一些源代码,包括Linux内核源码、uboot源码、busybox源码等,下载的源码包放在“dl/”目录下,下载完成后解压到“build_dir/”目录下进行编译。
Ø 固件(fireware)由kernel和rootfs两部分组成,openwrt目前rootfs是使用的squashfs文件系统,编译收尾阶段通过Makefile脚本合并uImage和squashfs以生成固件。
六、Openwrt Imagebuilder
Openwrt的镜像生成器,一般内核镜像需要编译openwrt内核源码来获得,但Openwrt让开发人员可以通过OpenwrtImagebuilder编译出所需内核镜像。Imagebuilder的制作是通过在openwrt内核配置时选上“Buildthe OpenWrt Image Builder”,编译内核后在”bin/xxx/”目录下生成相应的Imagebuilder。
七、Openwrt SDK
Openwrt的软件开发套件,开发者可通过OpenwrtSDK进行应用程序开发,SDK中包含了应用程序开发所需要的常用工具、交叉编译器、库等。Openwrt SDK的制作是通过在openwrt内核配置时选上“Buildthe OpenWrt SDK”,编译内核后在”bin/xxx/”目录下生成相应的OpenwrtSDK。
八、Openwrt Toolchain
Openwrt的工具链,里面有针对不同CPU体系架构的交叉编译环境。想要获得相应平台的的toolchain,可在openwrt内核配置时选上“Packagethe OpenWrt-base Toolchain”,编译内核后在”bin/xxx/”目录下生成相应的Toolchain。