皮皮网

【安卓app源码下载】【任意改号平台源码】【iapp手册逆向源码】openwrt 内核源码_openwrt内核源码

2024-12-27 14:45:48 来源:yyquan源码

1.如何编译OpenWrt
2.openwrt是内内核什么
3.如何在OpenWRT环境下做开发
4.openWRT发展历程

openwrt 内核源码_openwrt内核源码

如何编译OpenWrt

       æ­å»ºç¼–译环境。编译建议在Linux下进行。我的系统是Linux mint ,执行以下命令,构建编译环境:

       sudo apt-get update

       sudo apt-get install git-core build-essential

       èŽ·å–openwrt源码。在当前用户主目录下执行

       git clone git://git.openwrt.org/openwrt.git

       ç­‰å¾…代码下载。结束后,目录下会出现openwrt文件夹。

       é…ç½®è½¯ä»¶æºã€‚进入openwrt目录,执行

       ./scripts/feeds update -a

       ./scripts/feeds install -a

       æ£€æŸ¥ç¼–译环境是否完整:

       make defconfig

       make prereq

       æ ¹æ®æç¤ºä¿¡æ¯å®‰è£…需要的软件包。如果提示类似

       â€œtmp/.config-package.in::warning: multi-line strings not supported”

       çš„信息,打开 openwrt/tmp/.config-package.in,定位到对应行,添上丢掉的一个引号就可以了。

       ç¼–译选项:

       æ‰§è¡Œ make menuconfig,根据路由器情况,选择 Target System 和 Subtarget。如意云一代和极壹S的 Target System 均为 Ralink RTx/RT3xxx 。对于Subtarget ,前者为 MTn based boards ,后者为 MTa based boards。

       å…¶ä»–选项根据个人喜好选择。一般来说要选中LuCI界面,选中中文语言包等等。

       å¼€å§‹ç¼–译:

       æ‰§è¡Œ make -j2 V=s 进行编译。-j后面的数字是电脑物理CPU数量加一。V=s可以显示出编译的详细信息。首次编译大概需要几个小时的时间。

       é”™è¯¯æŽ’查:

       ç¼–译失败,一般有两种情况:

       1.代码下载链接失效。首次编译时,编译程序会实时从网上下载一些软件包的代码。如果下载链接失效,编译就会失败。这时需要根据软件包的名称,从网上自行下载,然后放在 openwrt/dl/ 目录下,执行 make -j2 V=s 继续编译即可。

       2.软件包自身有问题。这时重新执行 make menuconfig ,取消对应软件包选中即可。这种情况比较少见,目前已知的有 tor 等。

       ç¼–译成功,但没有生成固件。这种情况一般是因为选中的软件包过多,导致固件大小超过MB。重新执行 make menuconfig,去掉一些软件包,重新执行编译即可。

       å¾—到固件。在排除了所有错误后,现在终于得到了固件。对于如意云RY-1,固件在 openwrt/bin/ramips 目录下,形如

       openwrt-ramips-mtn-rt-nu-squashfs-sysupgrade.bin

       openwrt-ramips-mtn-wrtnode-squashfs-sysupgrade.bin

       openwrt-ramips-mtn-mlw-squashfs-sysupgrade.bin

       openwrt-ramips-mtn-wrrt-squashfs-sysupgrade.bin

       ç­‰ç­‰ã€‚

openwrt是什么

       OpenWrt是一个适用于路由器的Linux发行版,主要用于嵌入式设备路由网络流量。核源OpenWrt的源码安卓app源码下载主要组件是Linux内核。

       OpenWrt可以被描述为一个嵌入式的内内核Linux发行版。(主流路由器固件有dd-wrt,核源任意改号平台源码tomato,openwrt三类)对比一个单一的、静态的源码iapp手册逆向源码系统,OpenWrt的内内核包管理提供了一个完全可写的文件系统,从应用程序供应商提供的核源选择和配置,并允许您自定义的源码设备,以适应任何应用程序。内内核

       对于开发人员,核源OpenWrt是源码使用框架来构建应用程序,而无需建立一个完整的内内核地图轨迹 js 源码固件来支持;对于用户来说,这意味着其拥有完全定制的核源能力,可以用前所未有的源码香油网站模板源码方式使用该设备。OpenWrt项目由年1月开始,第一个版本是基于Linksys提供的GPL源码及uclibc中的buildroot项目,这个版本称为“stable”版,在网上至今仍有很多项目使用这个版本,较为有名Freifunk-Firmware和Sip@Home.

如何在OpenWRT环境下做开发

       1、搭建开发环境

              é¦–先,在执行make menuconfig后,会出现下图:

       ã€€ã€€å…¶ä¸­ï¼Œå›¾ä¸­çº¢æ¡†éƒ¨åˆ†æ˜¯æˆ‘定制路由器的系统版本,大家可以根据不同的路由器进行不同的选择;绿框部分表示我们需要编译一个SDK开发环境(默认情况下,此项未勾选)。

       ã€€ã€€ç¼–译过程中需要通过官网下载很多相关的软件包,所以必须保证能够顺利连上外网。由于下载速度的限制,编译过程大概需要数小时。编译结束后,所有的产品都会放在编译根目录下的bin/yourtarget/. 例如:我所编译的产物都放在./bin/brcmxx/下,其中文件主要有几类:

       ã€€ã€€ï¼ˆ1).bin/.trx 文件: 这些都是在我们所选的target-system的类别之下,针对不同路由器型号、版本编译的路由器固件。这些不同路由器的型号和版本是openwrt预先设置好的,我们不需要更改。至于.bin和.trx的区别,一种说法是,第一次刷路由器的时候,需要用.bin文件,如果需要再升级,则不能再使用.bin文件,而需要用.trx文件。原因是,.bin是将路由器的相关配置信息和.trx封装在一起而生成的封包,也就是说是包含路由器版本信息的.trx。在第一次刷固件的时候,我们需要提供这样的信息,而在后续升级时,则不再需要,用.trx文件即可。

       ã€€ã€€ï¼ˆ2)packages文件夹: 里面包含了我们在配置文件里设定的所有编译好的软件包。默认情况下,会有默认选择的软件包。

       ã€€ã€€ï¼ˆ3)OpenWrt-SDK.**.tar.bz2: 这个也就是我们定制编译好的OpenWRT SDK环境。我们将用这个来进行OpenWrt软件包的开发。例如,我所编译好的SDK环境包为:/bin/brcmxx/OpenWrt-SDK-brcmxx-for-Linux-x_-gcc-4.3.3+cs_uClibc-0.9..1.tar.bz2

       å¯ä»¥ä»Žåç§°ä¸Šçœ‹å‡ºï¼Œtarget system是brcmxx,host system是Linux-x_,使用的编译工具以及库是4.3.3+cs_uClibc-0.9..1。

       ã€€ã€€ï¼ˆ4)md5sums 文件: 这个文件记录了所有我们编译好的文件的MD5值,来保证文件的完整性。因为文件的不完整,很容易将路由器变成“砖头”。

       ã€€ã€€éœ€è¦ä¸»è¦çš„是,编译完成后,一定要将编译好的bin目录进行备份(如果里面东西对你很重要的话),因为在下次编译之前,执行make clean 会将bin目录下的所有文件给清除掉!!

       ã€€ã€€2、 更改原有packages

       ã€€ã€€åœ¨ç¼–译根目录下会有一个dl的目录,这个目录其实是“download”的简写,在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们make menuconfig的时候,为固件配置的一些软件包。如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到build_dir目录下。

       å½“然,你也可以自己在dl里面创建自己的软件包,然后更改相关的配置文件,让openwrt可以识别这个文件包。

       ã€€ã€€ç”±äºŽæˆ‘的项目更改的内容是底层的,需要跟固件一起安装。所以,我使用的方法就是直接更改dl目录下软件包,然后重新进行固件编译。感觉类似于Linux的内核编译。反复编过十多次,没有任何问题。

       ã€€ã€€3、 新建自己的packages

       å¯¹äºŽè‡ªå·±æ–°å»ºçš„package,而这个package又不需要随固件一起安装,换句话说,就是可以当做一个可选软件包的话。我们可以利用我们的SDK环境来单独编译,编译后会生成一个ipk的文件包。然后利用 opkg install xxx.ipk 来安装这个软件。

       ã€€ã€€ä¸‹é¢å…·ä½“说下,如何编译一个helloword的软件包。

       ï¼ˆ1)首先,编写helloworld程序 

       ç¼–写helloworld.c 

       /