精华内容
下载资源
问答
  • 转载:http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=4217 此文在www.openwrt.org.cn首发,个人不主动在其它地方转发,没任何版权问题,有兴趣的网友随便复制转发,但机于对本论坛的尊重,应该...

    转载:http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&tid=4217

    此文在www.openwrt.org.cn首发,个人不主动在其它地方转发,没任何版权问题,有兴趣的网友随便复制转发,但机于对本论坛的尊重,应该注明原出处URL,但没必要强调是谁写的。


        我也搞不懂为什么,我想玩编译的时候,搜来搜增没搜到什么菜鸟教程,没玩过LINUX的一般会觉得很难,就跟我一样,我也是从未玩过LINUX。也许也因为并不难,所以网上比较少详细的教程,就连官方WIKI也都是比较简要地说明而已,所以感觉难的人看了过于简要的教程后,只会觉得更难。
    所以我才写了这篇“扩展”版的简要教程,其实也真的是很简要,没什么突出之处,只是起码在文字上让人能更容易看懂。高手可以回避了,因为你不会在本文学到任何东西,因为我也是新手,只是以菜鸟的角度看待本文的主题。下面开始正文:

    1、安装Ubuntu,到 http://www.ubuntu.org.cn/desktop/get-ubuntu/download/ 下载,版本随便,我选的是10.10 32位版。安装过程就不说了,图形化安装,而且是中文版,连安装都搞不定的,可以关闭本页面了。可以安装在虚拟机里,也可以安装在物理机了,官方建议有条件的最好安装在物理机上,大概是说虚拟机有时会有不可预料的情况,但装在虚拟机里的人多得是了。题外话:安装过程中某一步设置用户名密码时,我是选择了自动登录,因为懒得每次都输密码登录,反正只是编译用的系统又没什么秘密。

    2、安装好后,在左上角“系统”菜单的“首选项”中选择“屏幕保护程序”,然后去掉左下角的“计算机空闲时激活屏幕保护程序”,然后按“关闭”,这个窗口是没有“应用”或“确定”之类的,直接关闭它就会保存。用惯了WINDOWS的用户注意了。为什么要做这步呢? 因为整个编译过程中有些步骤要等一段时间的,老是自动启用屏幕保护程序,然后还要重新输密码才能退出,也是麻烦事。

    3、选左上角的菜单“应用程序”-“附件”-“终端”,进入命令行,然后输入sudo –sH,注意大小写,然后输入装系统时设置的用户密码,就能切换到root(提示:输入密码的时候不会有*之类的显示的,是完全不显示,部分人不必惊慌)。切换到root是为了安装或升级部分必要的组件,有些组件需要root权限。

    4、切到root后,顺序输入:
    apt-get install g++
    apt-get install libncurses5-dev
    apt-get install zlib1g-dev
    apt-get install bison
    apt-get install flex
    apt-get install unzip
    apt-get install autoconf
    apt-get install gawk
    apt-get install make
    apt-get install gettext
    apt-get install gcc
    apt-get install binutils
    apt-get install patch
    apt-get install bzip2
    apt-get install libz-dev
    apt-get install asciidoc
    apt-get install subversion

        每一行回车后都会马上检测安装或升级那个组件,官方WIKI用的是单一条命令,我分开了,因为这样更容易查看每一个组件的安装是否成功。一行命令的话,一大堆东西连续出来,懒得拖滚动条回头看了。一个个分开执行方便看一些。个人喜好了。当中最后面的asciidoc组件是需要下载400多MB东西的,慢慢等了。下载东西之前会有提示本次要下载多少M的东西,问是否的,按y然后回车让它下载就行了。提示:假如它提示找不到软件包的话,那麻烦你再看清楚命令中的软件名名称,因为有时是字母中间冒个数字1出来之类的,很容易错看成字母L。

    5、上述安装完成后,这一步很重要,就是执行Exit命令退出root。如果不退出root的话,那后面会出现晕人的情况,下一步是下载源码,以root身份下载源码后,在后续操作中有些会提示不能以root身份操作,但源码已经以root身份下载了,所有文件的“所有者”都是root,退出root后再操作,又会提示没有权限,因为文件是root的,普通用户无法访问,结果只能用命令修改文件所有者,比较麻烦。所以这里就要退出root,以普通用户身份执行下面的下载源码命令。其实一开始安装组件的时候可以在命令前加上sudo来达到临时用root身份,执行完后又回到普通权限的目的,但对于新手来说,不必过于追求这些了,有个可行的方法就凑合着先用吧。

    6、来到这里,操作系统部分完全准备好了,建议如果用虚拟机的朋友先做一个快照,后面编译部分出了问题大不了恢复快照重新来过。不知道什么是快照的话,当我没说过这一条。

    7、下载源码,分两种,一种是最新版但不是最稳定,也就是trunk版,一种是相对稳定版,backfire版。源码下载命令分别是:
    先创建文件夹:
    Mkdir openwrt
    Cd openwrt

    Trunk版下载命令:svn co svn://svn.openwrt.org/openwrt/trunk/
    Backfire下载命令:svn co svn://svn.openwrt.org/openwrt/branches/backfire/
    选择你想要的版本就行了。然后又是等待下载…

    8、开始准备编译
    Cd Trunk或者Cd backfire
    如果不是刚下载的代码,为了保持代码为最新状态,应该定期运行Svn up更新代码,什么时候有变你是不知道的
    然后是更新软件包:
    ./scripts/feeds update –a
    ./scripts/feeds install –a
    如果不更新软件包的话,你会发现后面是看不到很多软件包的,也就无法集成那些看不到的包了。然后是make defconfig,再make menuconfig进入定制界面,慢慢选了,里面可选只编译指定设备的固件,一定要注意选对自己的设备类型,然后可以指定该类型下的具体哪一款。配置比较多,不慢慢说了,其实我也不是很懂,自己进去撞几回就差不多了,有些软件包你不懂的,就表示你不需要了,有些软件包你装官网版本后要另外装的,你见到了,就可以选上让它集成,要让它前面括号里出现*才表示集成。配置完成后退出记得选保存。如果你想修改源码,应该在此时进行,比如支持大容量Flash之类的修改,自己上网查到修改什么文件什么地方后,就在Ubuntu图形界面上进去找到文件,双击打开文本编辑器修改保存。如果想集成中文包或其它非官方包的话,那我也帮你不到了,因为我也还不会。

    9、最后就执行make正式开始编译,首次编译必然是漫长的等待。如果是双核CPU,使用Make –j 2命令可以加快速度,但有人却不建议使用,官方WIKI也没说这点,我也不知道有没有好处。但我是4核CPU,使用Make –j 4命令,发现CPU占用率并没有明显提高,看了帮助,发现可以不加数字,不加数字默认就是不限制同时进行的任务数,我用了Make –j不限同时任务数后,CPU居然100%了,但整个编译过程的占用率都会有波动,刚开始是100%,后面有段时间是25%左右(也就是只用单核了),然后有时又会40%到50%(差不多用了双核),有时甚至几乎没有操作,CPU占用很低。但首次编译是特别慢的,第一次之后的都相对快很多了。悲剧的是,我第一次用Make –j编译结果是失败,然后再一次Make不用参数才成功,也许就是有人不建议使用的原因,但因为有前一次的编译,所以第二次是很快的。也就是说,假如用j参数能加速的话,虽然有可能会失败,但因为第二次不会花很长时间,所以也许加j参数还是能在第一次编译中加速的。不过我没有对比加不加-j参数花的时间区别。有兴趣的朋友自己对比吧。

    10、编译完成后会出现bin文件夹,进去找你需要的BIN刷吧。

    11、BIN如何传出? 我是用FTP,甚至是用Firefox上网进邮箱都能传出,对于一个不懂LINUX的人来说…

    展开全文
  • ==============3年前推送过一篇使用TCP协议进行局域网内屏幕广播的文章,见Python实现局域网内屏幕广播的技术要点分析众所周知,TCP协议尽管有良好的流量控制、拥塞控制等传输质量保证机制,但开销比较大且只能单...
    推荐图书: 《Python可以这样学》,ISBN:9787302456469,董付国,清华大学出版社,第9次印刷 863241821d82a7e09a8300c53a685c65.png 图书详情(京东)74716248115ba3e7442d2778ea8fb3a7.png 董付国老师所有图书均提供配套教学资源。 ============== 3年前推送过一篇使用TCP协议进行局域网内屏幕广播的文章,见 Python实现局域网内屏幕广播的技术要点分析

    众所周知,TCP协议尽管有良好的流量控制、拥塞控制等传输质量保证机制,但开销比较大且只能单播。尽管当时的设计中结合了多线程技术,在局域网内机器多的时候仍有一定的延迟,并且教师机压力较大。

    a34b80bbaa9d82476327c427e9c63983.png

    本文使用UDP协议重新实现这一功能,虽然UDP协议没有流量控制等QoS保障技术,但能够进行广播,这一点能给教师机减轻大部分压力。虽然确实有丢包的可能,但在局域网内丢包率非常低,视频、音频数据的传输又恰好容错性较好,不需要在应用层实现可靠传输。所以,UDP协议在视频点播类似的场合中有着重要应用和优势。

    27a3fed382f873e52fa9afba6aec99b5.gif

    功能描述:

    局域网内屏幕广播与分享。发送端运行程序后每秒中对自己计算机屏幕截图两次,发送给局域网内所有计算机,其他计算机作为接收端接收到数据之后还原为图像并在本地显示。

    参考代码:

    1)发送端

    39028682ee870554b9f8c1c6b33a644c.png

    运行界面:

    c732341e1f8a74b792de13b670ad81b7.png

    2)接收端,我故意在代码中删掉了一个语句,设计了一个bug,按照这个代码抄下来运行一会儿屏幕会卡住,重新启动之后就能继续,再过一会儿又会卡住。能够找出这个bug原因并解决的朋友可以在文末留言,第一位成功解决并留言的朋友可以获得董付国老师任意一本图书,时间不限。程序中注释的部分代码有其他用途,可以忽略。

    6c572a98558325b9a57b2da48d49b3c2.png

    运行界面:

    268b1b0e252c947ab244e62276dce37b.png

    需要软件的朋友可以在公众号后台发送消息“屏幕广播”获取打包好的软件,打包好的软件是完整的,不存在前面说的缺少一条语句造成的bug。

    使用方法演示:

    温馨提示 关注本公众号“Python小屋”,通过菜单“最新资源”==>“历史文章”可以快速查看分专题的1000篇技术文章列表(可根据关键字在页面上搜索感兴趣的文章),通过“最新资源”==>“微课专区”可以免费观看500节Python微课,通过“最新资源”==>“培训动态”可以查看近期Python培训安排,通过“最新资源”==>“教学资源”可以查看Python教学资源。 bd085280f2d4544d8073bad9fd4ee002.png ---董付国老师Python系列图书--- 友情提示:不建议购买太多,最好先通过京东、当当、天猫查阅图书了解目录和侧重点,然后再选择购买适合自己的书。 (1)《Python程序设计(第2版)》(ISBN:978-7-302-43651-5),清华大学出版社,2016年8月出版,2019年度清华大学出版社畅销图书 (2)《Python可以这样学》(ISBN:978-7-302-45646-9),清华大学出版社,2017年2月 (3)《Python程序设计基础(第2版)》(ISBN:978-7-302-49056-2)清华大学出版社,2018年1月出版,2019年度清华大学出版社畅销图书 (4)《中学生可以这样学Python》(ISBN:978-7-302-48039-6)清华大学出版社 (5)《Python程序设计开发宝典》(ISBN:978-7-302-47210-0)清华大学出版社,2018年10月 (6)《玩转Python轻松过二级》(ISBN:978-7-302-49916-9)清华大学出版社,2018年5月 (7)《Python程序设计基础与应用》(ISBN:978-7-111-60617-8),机械工业出版社,2018年9月 (8)《Python程序设计实验指导书》(ISBN:9787302525790),清华大学出版社,2019年4月 (9)《Python编程基础与案例集锦(中学版)》(ISBN:978-7-121-35539-4),电子工业出版社,2019年4月 (10)《大数据的Python基础》(ISBN:978-7-111-62455-4),机械工业出版社,2019年5月 (11)译作《Python程序设计》,机械工业出版社(华章),2018年11月 (12)繁体版《Python也可以这样学》,台湾博硕文化股份有限公司,2017年10月出版,本书为《Python可以这样学》在台湾发行的繁体版,两本书内容一样,不建议重复购买。 (13)《Python程序设计实例教程》(ISBN:978-7-111-63198-9),机械工业出版社 (14)《Python数据分析、挖掘与可视化》(ISBN:978-7-115-52361-7),人民邮电出版社,2019年12月 Python相关课程教材选用参考与建议 董付国老师Python在线课程资源使用方法 董付国老师6本Python教材PDF版免费阅读 《Python数据分析、挖掘与可视化》前3章书稿PDF免费阅读 《Python程序设计基础与应用》前3章书稿PDF免费阅读 号外号外--Python小屋刷题神器上线啦 《中学生可以这样学Python》84节微课免费观看地址 相关阅读

    Python+socket完美实现TCP长连接保持存活

    完美解决Python套接字编程时TCP断包与粘包问题

    Python实现多进程/多线程同时下载单个文件

    Python 3.8实现支持断点续传的网络文件下载功能

    Python+winreg+netifaces查看网络接口信息

    Python自动接收微信群消息并推送相应的公众号文章

    Python+psutil获取本机所有联网的应用程序信息

    Python多线程编程的一个掉进去不太容易爬出来的坑

    Python+socket+多线程实现同时应答多客户端的自助聊天机器人

    Python实现机房管理软件的文件分发功能

    技术要点|Python监控学生端电脑屏幕自动识别学习状态

    Python多线程与Socket编程综合案例:素数

    Python批量下载电子邮件附件并汇总合并Excel文件

    Python监视电子邮箱并提示收到新邮件

    Python版课堂管理系统中使用UDP广播远程关闭客户端程序思路与源码

    使用Python实现电子邮件群发功能

    基于Python的电子教室软件中远程关机功能的原理与实现

    Python获取本机所有IP地址

    Python实现局域网内屏幕广播的技术要点分析

    使用Python开发SQLite代理服务器

    Python获取局域网内所有机器IP地址与网卡MAC地址

    Python获取本机所有网卡的MAC地址

    Python+flask+flask-email发送带附件的电子邮件

    Python使用UDP协议打造在线时间服务器

    使用Python开发会聊天的智能小机器人

    Python使用TCP协议编写会聊天的小机器人

    Python实现本机网络流量监视器

    Python使用UDP广播实现服务器自动发现

    Python网页注入挂马

    Python监视域名对应IP地址变化情况

    展开全文
  • OpenWrt配置篇

    万次阅读 2016-06-03 09:04:57
    OpenWrt配置篇

    http://antkillerfarm.github.io/

    OpenWrt编译

    1.下载代码

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

    2.安装必要的包

    sudo apt-get install libtool autoconf automake gcc-multilib bison screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core git build-essential libncurses5-dev zlib1g-dev gawk quilt asciidoc libz-dev zlib-bin lib32z1-dev

    包的内容根据OpenWRT和Ubuntu的版本的不同,而略有差异。比如最新的版本可能还需要libssl-dev包。不过这个比较简单,看出错信息就知道还需要什么包了。

    3.更新扩展,安装扩展

    ./scripts/feeds update -a

    ./scripts/feeds install -a

    4.配置编译选项

    make menuconfig

    这个配置的界面和linux内核的配置极为相似,只不过配置的内容相比内核多了很多。这个命令主要用于配置openwrt模块,如果要配置linux内核的话,可以执行make kernel_menuconfig命令。

    5.编译

    make

    这一步需要的时间很长,除了编译的内容很多之外,还需要下载很多包的源代码。下载的包放在dl文件夹下。

    6.编译结果

    编译的结果放在bin文件夹下。

    wr841nd-v5-squashfs-sysupgrade.bin

    wr841nd-v5-squashfs-factory.bin

    都生成了,如果从原厂直接升级到openwrt用factory.bin,open升级的话用sysupgrade.bin

    7.重新编译固件

    make clean

    这个命令会保留配置文件.config 和dl目录里下载的文件。

    如果想要全部清除,就用下面的命令:

    make distclean

    这里要注意的是:make clean不会改变feeds的内容,因此如果更换feeds的话,须用make distclean。考虑到这里的主要开销是下载文件,我们在执行make distclean之前,有必要将dl文件夹的内容复制到其他地方,命令执行之后,再复制回来,这样可以大大节省编译的时间。

    此外更换feeds,亦可使用如下命令:

    ./scripts/feeds update -i

    这个命令只更新feeds产生的index。

    OpenWrt in VirtualBox

    0.软件准备

    需要安装以下软件:

    1)VirtualBox

    2)Windows平台:Putty、WinSCP

    3)Ubuntu平台:Putty、Gigolo

    1.镜像文件的获得

    1)下载源码自己编译。编译的方法见上节。编译的时候,将Target选为X86即可。此外还可以选择生成文件的类型。VirtualBox虚拟硬盘文件的后缀名是vdi。

    2)在官网直接下载。

    http://downloads.openwrt.org/barrier_breaker/14.07/x86/generic/openwrt-x86-generic-combined-ext4.img.gz

    这里解释一下该文件夹下各个文件的区别:

    openwrt-x86-generic-combined-ext4.img.gz

    rootfs工作区存储格式为ext4

    openwrt-x86-generic-combined-jffs2-128k.img

    jffs2可以修改,也就是可以自行更换(删除)rootfs的配置文件,而不需要重新刷固件。

    openwrt-x86-generic-combined-squashfs.img

    squashfs是个只读的文件系统,相当于win的ghost,使用中配置错误,可直接恢复默认。

    openwrt-x86-generic-rootfs-ext4.img.gz

    rootfs的镜像,不带引导,可自行定义用grub或者syslinux来引导,存储区为ext4。

    为了更清楚的说明这个问题,可以参考以下文章:

    http://wiki.openwrt.org/doc/techref/header

    从这里可以看出一个完整的镜像文件至少要包含三个部分

    • Loader

    • Kernel

    • RootFS

    3)如果镜像文件是img格式的,需要转换成vdi方可。方法如下:

    VBoxManage convertfromraw --format VDI openwrt.img openwrt.vdi

    2.OpenWrt官网在Firefox下无法打开的问题

    只需要在about:config里修改

    intl.accept_languages

    的值为

    zh-CN,en-US,zh

    这个是FF的优先语言设置的BUG。在FF中的值是zh-cn en-us 等等,而规范的值应该是zh-CN en-US

    3.在VirtualBox中运行OpenWrt

    可参考以下文章:

    http://wiki.openwrt.org/doc/howto/virtualbox

    1–基本系统

    1)选择OS类型:Linux->2.6/3.X

    2)硬盘设置从SATA改为IDE。

    3)启用串口,但要关掉连接。

    4)启动虚拟机。等屏幕不再输出字符时,按下“Enter”键。会出现OpenWrt的欢迎界面及命令行。这说明OpenWrt已经跑起来了。

    5)不是所有的机器都需要2)和3)的设置。如果OpenWrt能跑起来的话,2)和3)也可省略。

    2–网络配置

    从原理上来说,虚拟机需要设置两个网卡。一个是LAN,用于OpenWrt和PC的交互。另一个是WAN,用于OpenWrt的连接上网。

    一般来说LAN和WAN位于不同的网段。而OpenWrt的默认配置只有LAN,没有WAN,而且LAN的IP地址固定为192.168.1.1。这通常和家里面使用的路由器的IP地址相冲突。因此除了修改虚拟机的网络设置之外,还需要修改OpenWrt的网络配置。

    1)虚拟机网络配置

    环境一:Windows平台+路由器(WAN和LAN不在一个网段)

    LAN: eth0 Host-only

    WAN: eth1 NAT

    环境二:Linux平台+拨号无线路由(WAN和LAN在一个网段)

    LAN: eth0 Internal Network

    WAN: eth1 Bridge(Host有两个网卡:eth0和wlan0。这一步的时候,界面名称要选择wlan0的网卡,也就是和Internet相连的那个网卡)

    2)关于网卡芯片类型

    官方img中,PCnet-FAST和Intel Pro 1000的驱动都有,因此VirtualBox选择任何一个芯片类型都是可以的。

    但是从源代码编译得到的img,就要看编译时的选项了。当前默认的是Intel Pro 1000。

    网上的文章提到要修改成PCnet-FAST,我怀疑是由于早先默认的是PCnet-FAST的缘故。

    3)OpenWrt网络配置

    修改文件/etc/config/network

    {% highlight bash %}
    config interface ‘lan’
    option ifname ‘eth0’
    option proto ‘dhcp’

    config interface ‘wan’
    option ifname ‘eth1’
    option proto ‘dhcp’
    {% endhighlight %}

    修改完成后,运行/etc/init.d/network restart,即可使脚本生效。

    4)验证联网是否成功

    WAN:使用ping命令,例如ping www.baidu.com

    LAN:见下一节的登录过程。

    如果不成功的话,可用ifconfig查看网络状态。看看eth0和eth1的IP地址是否是LAN和WAN所在的网段。

    4–登录

    0)登录的IP地址

    登录的IP地址,使用LAN的IP地址。可用ifconfig查看获得。

    1)首次登录

    使用telnet登录成功后,使用passwd命令设置密码。

    Windows平台的telnet虽然是系统自带,但默认没有开启。需要在“控制面板”->“程序”->“启用或关闭Windows功能”中打开“Telnet客户端”。

    2)命令行登录

    使用支持ssh的客户端(如putty)登录。

    3)图形界面登录

    使用浏览器,输入http://192.168.1.1即可。(实际使用中需用LAN的IP地址替换之)

    5–其他

    1)关于USB设备

    虽然可以在虚拟机上调试设备驱动,但是由于这会和宿主机的设备驱动产生冲突,因此并不推荐。比如最近我打算在虚拟机上调试U盘热插拔,结果打开USB选项之后,所有的USB事件都被虚拟机接管,连USB鼠标都用不了…

    LuCI

    LuCI是OpenWrt管理配置界面使用的接口。

    从文件上,它由两个部分组成:

    1)/www

    index.html–网站主页。

    2)/usr/lib/lua

    lua脚本的根目录。

    主流程:

    1./www/index.html

    2./www/cgi-bin/luci

    3.luci.sgi.cgi.run(即/usr/lib/lua/luci/sgi/cgi.lua里的run函数,以下只写简称。)

    4.luci.dispatcher.httpdispatch

    可参考一下文献:

    http://www.cnblogs.com/zmkeil/archive/2013/05/14/3078774.html

    这篇文章对LuCI的流程有详细的描述。

    http://wiki.openwrt.org/doc/uci

    这个是官方的文档。

    参考文献

    http://www.cnblogs.com/zmkeil/archive/2013/04/17/3027385.html

    这篇文章的内容和我写的差不多,可惜没有早看到。。。多走了弯路。

    OpenWrt目录结构粗解

    feeds

    在OpenWrt的源代码中,其实程序代码是微乎其微的。整个代码本身主要是维护一个很复杂的编译系统。至于内核和各个应用的软件包,基本都是以网上下载的方式获得代码,进而编译的。使用源代码的原因,是由于OpenWrt通常是运行在各种嵌入式系统中,而二进制包显然不具备可移植性。

    feeds文件夹的作用就是指明如何下载并编译这些软件源代码包。feeds的更新由专门的版本库来维护,这些版本库也被称为“软件源”。可修改feeds.conf.default来更换不同的或者是非官方的源。

    一个feeds通常会包含一个patch文件夹(也可以没有),这里需要注意的是修改patch文件夹内的patch文件时,需要把生成的临时文件.patch~删除掉,不然会出错。

    dl

    存放下载下来的压缩格式的源码包。

    build_dir

    解压缩之后的源码包。这里又分为三个文件夹:

    host:宿主机上的应用。

    toolchain:交叉编译工具链。

    target:目标板上的应用。

    staging_dir

    编译好的二进制文件及配置文件,也分了host、toolchain、target三个文件夹。

    其中,target下的pkginfo用于维护目标板软件的依赖关系,在编译环节显得尤为重要。

    bin

    最终的生成结果。

    总结

    OpenWrt目录结构是与它的编译系统密切相关的,这样的组织结构使得OpenWrt能用200M左右的源代码,实现一个现代的应用平台。

    尤其是按需下载源代码包的设计,大大缩小了OpenWrt本身的代码规模。可以相比较的是某平台基于Linux开发的SDK,大小超过1G,文件数近50k。这样的代码库甚至很难导入SVN这样的版本控制系统。我曾经做过测试,导入10k文件数的代码,到我PC的SVN库中,在局域网条件下,竟花了25分钟。

    OpenWrt编译系统

    大体结构

    OpenWrt编译系统由一系列makefile脚本组成。除了分散于各个文件夹的Makefile文件之外,在include文件夹下,还有很多.mk文件。这些.mk文件的作用有些类似于C语言的头文件。建议研究编译系统之前,先把这些.mk看一遍。

    此外,OpenWrt编译系统还提供了许多shell之外的命令。这些命令的脚本在scripts文件夹下,基本是用shell和perl编写的。

    镜像文件生成

    以arm64为例,生成镜像文件的过程,由target/linux/arm64/Makefile来控制。其中kernel的生成代码在include/kernel-build.mk中,而rootfs的生成代码在include/image.mk中。

    下载处理

    主要脚本在scripts/download.pl中,其中对几个重要的下载站点做了预置和优化,包括SF、GNU、KERNEL、GNOME等。

    OpenWrt网络配置

    这里主要参考以下文档:

    http://ju.outofmemory.cn/entry/176659

    为防遗失,摘录如下:

    这里写图片描述

    上图为OpenWrt的网络接口图。

    有线网络配置文件:/etc/config/network

    无线网络配置文件:/etc/config/wireless

    pppoe-wan:虚拟设备,拨号上网接口。

    lo:虚拟设备,自身的回环网设备。

    ra0 rai0:无线设备,它们各自对应一个SSID,分别是2.4G和5G。

    扩展包

    大多数情况下,我们并不需要亲手编写OpenWrt模块,因为日常使用中的绝大部分功能,OpenWrt项目都提供了相应的扩展包。因此,如何寻找、安装扩展包,就成为一个经常性的问题。

    官方扩展包可以在代码根目录下的feeds.conf.default文件中找到。

    从这里可以看出,OpenWrt项目早期的代码托管在openwrt.org下,而最近的开发已经迁移至github。因此,如果有的包在源代码中没有看到的话,可以到openwrt.org下碰碰运气。

    一个软件包可以生成独立的ipk安装文件(Modularizes),也可以直接打包进img中(Built-in)。这个生成选项在make menuconfig的选项菜单中,选择Y就是Built-in,选择M就是Modularizes。

    iptables设置

    iptables是Openwrt的防火墙软件命令,可参见:

    http://wiki.openwrt.org/doc/howto/netfilter

    这里将主要用法示例如下:

    iptables -I zone_wan_input 4 -p tcp --dport 22 -j ACCEPT # allow SCP on WAN port

    展开全文
  • Openwrt 初探

    2015-04-07 22:14:00
    最近想研究一下Openwrt,于是开始搭建openwrt环境,虽然现在没有现成的板子,但是 可以先编译起来。 openwrt的特点是基于下载 -> patch -> 编译 的一个工作模式,openwrt整个包一开始下载下来也不是很大,...

     

    最近想研究一下Openwrt,于是开始搭建openwrt环境,虽然现在没有现成的板子,但是

    可以先编译起来。

     

    openwrt的特点是基于下载 -> patch -> 编译 的一个工作模式,openwrt整个包一开始下载下来也不是很大,因为里面

    基本上没有源码,要在编译的时候下载。

     

     

    看了别人的帖子,都推荐使用svn从官网下载源码,

    svn co svn://svn.openwrt.org/openwrt/trunk/

    但是实际测试发现它的速度太慢了,为了得到官方的源码,从github上找到了它:

    https://github.com/openwrt-mirror/openwrt

     

    将它下载下来之后,要安装一些必要的包来编译它,我使用的是ubuntu12.04.

    sudo apt-get install flex g++ gawk zlib1g-dev libncurses5-dev libssl-dev subversion

     

    先看一下它的目录树:

    tree -d -L 2
    .
    ├── config
    ├── docs
    ├── include
    │   └── site
    ├── package
    │   ├── base-files
    │   ├── boot
    │   ├── devel
    │   ├── firmware
    │   ├── kernel
    │   ├── libs
    │   ├── network
    │   ├── system
    │   └── utils
    ├── scripts
    │   ├── config
    │   └── flashing
    ├── target
    │   ├── imagebuilder
    │   ├── linux
    │   ├── sdk
    │   └── toolchain
    ├── toolchain 
    │   ├── binutils
    │   ├── gcc
    │   ├── gdb
    │   ├── glibc
    │   ├── insight
    │   ├── kernel-headers
    │   ├── musl
    │   ├── uClibc
    │   └── wrapper
    └── tools 
        ├── autoconf
        ├── automake
        ├── b43-tools
        ├── bc
        ├── bison
        ├── ccache
        ├── cloog
        ├── cmake
        ├── dosfstools
        ├── e2fsprogs
        ├── elftosb
        ├── findutils
        ├── firmware-utils
        ├── flex
        ├── flock
        ├── genext2fs
        ├── gengetopt
        ├── gmp
        ├── include
        ├── libelf
        ├── libtool
        ├── lzma
        ├── lzma-old
        ├── m4
        ├── missing-macros
        ├── mkimage
        ├── mklibs
        ├── mm-macros
        ├── mpc
        ├── mpfr
        ├── mtd-utils
        ├── mtools
        ├── padjffs2
        ├── patch
        ├── patchelf
        ├── patch-image
        ├── pkg-config
        ├── ppl
        ├── qemu
        ├── quilt
        ├── scons
        ├── sed
        ├── sparse
        ├── squashfs
        ├── squashfs4
        ├── sstrip
        ├── upslug2
        ├── upx
        ├── wrt350nv2-builder
        ├── xz
        └── yaffs2

     

     

     

     

     

     

    首先是更新一下feed:

    ./scripts/feeds update -a
    ./scripts/feeds install -a

     

    这里的-a表示更新所有的feed,那么这里有哪些feed呢,可以从log里面看出来:

    tan@love:~/openwrt-git/openwrt$ scripts/feeds update -a
    Updating feed 'packages' from 'https://github.com/openwrt/packages.git' ...
    Cloning into './feeds/packages'...
    remote: Counting objects: 3682, done.
    remote: Compressing objects: 100% (2941/2941), done.
    remote: Total 3682 (delta 488), reused 3055 (delta 247), pack-reused 0
    Receiving objects: 100% (3682/3682), 2.00 MiB | 24 KiB/s, done.
    Resolving deltas: 100% (488/488), done.
    Create index file './feeds/packages.index' 
    Collecting package info: done
    Collecting target info: done
    Updating feed 'luci' from 'https://github.com/openwrt/luci.git' ...
    Cloning into './feeds/luci'...
    remote: Counting objects: 11683, done.
    remote: Compressing objects: 100% (6278/6278), done.
    remote: Total 11683 (delta 3832), reused 9770 (delta 2394), pack-reused 0
    Receiving objects: 100% (11683/11683), 8.42 MiB | 85 KiB/s, done.
    Resolving deltas: 100% (3832/3832), done.
    Create index file './feeds/luci.index' 
    Collecting package info: done
    Collecting target info: done
    Updating feed 'routing' from 'https://github.com/openwrt-routing/packages.git' ...
    Cloning into './feeds/routing'...
    remote: Counting objects: 441, done.
    remote: Compressing objects: 100% (343/343), done.
    Receiving objects: 100% (441/441), 242.46 KiB | 58 KiB/s, done.
    remote: Total 441 (delta 81), reused 330 (delta 38), pack-reused 0
    Resolving deltas: 100% (81/81), done.
    Create index file './feeds/routing.index' 
    Collecting package info: done
    Collecting target info: done
    Updating feed 'telephony' from 'https://github.com/openwrt/telephony.git' ...
    Cloning into './feeds/telephony'...
    remote: Counting objects: 268, done.
    remote: Compressing objects: 100% (222/222), done.
    remote: Total 268 (delta 51), reused 211 (delta 22), pack-reused 0
    Receiving objects: 100% (268/268), 140.49 KiB | 102 KiB/s, done.
    Resolving deltas: 100% (51/51), done.
    Create index file './feeds/telephony.index' 
    Collecting package info: done
    Collecting target info: done
    Updating feed 'management' from 'https://github.com/openwrt-management/packages.git' ...
    Cloning into './feeds/management'...
    remote: Counting objects: 40, done.
    remote: Compressing objects: 100% (28/28), done.
    remote: Total 40 (delta 7), reused 27 (delta 2), pack-reused 0
    Unpacking objects: 100% (40/40), done.
    Create index file './feeds/management.index' 
    Collecting package info: done
    Collecting target info: done
    Updating feed 'targets' from 'https://github.com/openwrt/targets.git' ...
    Cloning into './feeds/targets'...
    remote: Counting objects: 137, done.
    remote: Compressing objects: 100% (95/95), done.
    remote: Total 137 (delta 17), reused 122 (delta 16), pack-reused 0
    Receiving objects: 100% (137/137), 130.80 KiB | 44 KiB/s, done.
    Resolving deltas: 100% (17/17), done.
    Create index file './feeds/targets.index' 
    Collecting package info: done
    Collecting target info: done

    可以从上面的网址看出来更新的feed。

     

     

    更新feed后目录树的变化:

    .
    ├── config
    ├── docs
    ├── feeds
    │   ├── luci
    │   ├── luci.tmp
    │   ├── management
    │   ├── management.tmp
    │   ├── packages
    │   ├── packages.tmp
    │   ├── routing
    │   ├── routing.tmp
    │   ├── targets
    │   ├── targets.tmp
    │   ├── telephony
    │   └── telephony.tmp
    ├── include
    │   └── site
    ├── package
    │   ├── base-files
    │   ├── boot
    │   ├── devel
    │   ├── feeds
    │   ├── firmware
    │   ├── kernel
    │   ├── libs
    │   ├── network
    │   ├── system
    │   └── utils
    ├── scripts
    │   ├── config
    │   └── flashing
    ├── staging_dir
    │   └── host
    ├── target
    │   ├── imagebuilder
    │   ├── linux
    │   ├── sdk
    │   └── toolchain
    ├── tmp
    │   └── info
    ├── toolchain
    │   ├── binutils
    │   ├── gcc
    │   ├── gdb
    │   ├── glibc
    │   ├── insight
    │   ├── kernel-headers
    │   ├── musl
    │   ├── uClibc
    │   └── wrapper
    └── tools
        ├── autoconf
        ├── automake
        ├── b43-tools
        ├── bc
        ├── bison
        ├── ccache
        ├── cloog
        ├── cmake
        ├── dosfstools
        ├── e2fsprogs
        ├── elftosb
        ├── findutils
        ├── firmware-utils
        ├── flex
        ├── flock
        ├── genext2fs
        ├── gengetopt
        ├── gmp
        ├── include
        ├── libelf
        ├── libtool
        ├── lzma
        ├── lzma-old
        ├── m4
        ├── missing-macros
        ├── mkimage
        ├── mklibs
        ├── mm-macros
        ├── mpc
        ├── mpfr
        ├── mtd-utils
        ├── mtools
        ├── padjffs2
        ├── patch
        ├── patchelf
        ├── patch-image
        ├── pkg-config
        ├── ppl
        ├── qemu
        ├── quilt
        ├── scons
        ├── sed
        ├── sparse
        ├── squashfs
        ├── squashfs4
        ├── sstrip
        ├── upslug2
        ├── upx
        ├── wrt350nv2-builder
        ├── xz
        └── yaffs2

     

     

     

     

    然后使用:

    make menuconfig
    make

    编译的过程会持续好几个小时,因为编译的时候还需要在线下载工具包,如果网络慢的话就会

    更慢了。

     

    关于make的作用,README是这样说的:

     

    Simply running "make" will build your firmware.
    It will download all sources, build the cross-compile toolchain, 
    the kernel and all choosen applications.

     

    中文手册是这样说的:

    OpenWrt选择了另一种方式来生成固件:下载,打补丁,编译,一切从零开始,即使交叉编译链也是如此。

    一开始下载openwrt源码的时候,也就大约300MB,但是里面基本上没有代码,大部分

    都是配置文件。

     

     

     

     

     openwrt的英文文档如下:

     

    https://downloads.openwrt.org/kamikaze/docs/openwrt.html

     

     

     

    在编译过程中,使用make -j V=99 可以加快编译速度,并且显示所有信息,

    在编译的时候,我的swap被占满,并且报错,可能是因为屏幕上刷的太快导致的:

    virtual memory exhaustedvirtual memory exhausted

     

     

    不打开V=99的情况下,我的编译log如下:

    tan@ubuntu:~/openwrt$ make -j4
     make[1] world
     make[2] target/compile
     make[2] package/cleanup
     make[3] -C target/linux compile
     make[2] package/compile
     make[3] -C package/system/opkg host-compile
     make[3] -C package/libs/toolchain compile
     make[3] -C package/kernel/gpio-button-hotplug compile
     make[3] -C package/libs/ncurses host-compile
     make[3] -C package/libs/libnl-tiny compile
     make[3] -C package/utils/lua compile
     make[3] -C package/libs/libjson-c compile
     make[3] -C package/libs/lzo compile
     make[3] -C package/libs/zlib compile
     make[3] -C package/libs/ncurses compile
     make[3] -C package/boot/uboot-ar71xx compile
     make[3] -C package/firmware/linux-firmware compile
     make[3] -C package/libs/ocf-crypto-headers compile
     make[3] -C package/network/utils/iw compile
     make[3] -C package/network/services/dropbear compile
     make[3] -C package/libs/libpcap compile
     make[3] -C package/network/utils/linux-atm compile
     make[3] -C package/network/utils/resolveip compile
     make[3] -C package/utils/busybox compile
     make[3] -C package/libs/libubox compile
     make[3] -C package/utils/util-linux compile
     make[3] -C package/kernel/linux compile
     make[3] -C package/libs/openssl compile
     make[3] -C package/system/ubus compile
     make[3] -C package/system/uci compile
     make[3] -C package/utils/jsonfilter compile
     make[3] -C package/system/mtd compile
     make[3] -C package/system/opkg compile
     make[3] -C package/network/config/netifd compile
     make[3] -C package/system/ubox compile
     make[3] -C package/utils/ubi-utils compile
     make[3] -C package/network/services/hostapd compile
     make[3] -C package/network/config/swconfig compile
     make[3] -C package/network/services/odhcpd compile
     make[3] -C package/network/utils/iwinfo compile
     make[3] -C package/system/procd compile
     make[3] -C package/system/fstools compile
     make[3] -C package/base-files compile
     make[3] -C package/boot/uboot-envtools compile
     make[3] -C package/kernel/mac80211 compile
     make[3] -C package/network/utils/iptables compile
     make[3] -C package/network/services/dnsmasq compile
     make[3] -C package/network/ipv6/odhcp6c compile
     make[3] -C package/network/services/ppp compile
     make[3] -C package/network/config/firewall compile
     make[2] package/install
     make[3] package/preconfig
     make[2] target/install
     make[3] -C target/linux install
     make[2] package/index

    最终会生成下面的文件(在bin文件夹内):

    由于我使用默认的配置,生成的文件太多,这里只给一个部分的截图

     

    初次下载源代码,为了理解openwrt的架构和编译过程,下面做一下简要的分析:

     

    openwrt是基于linux kernel的,并且使用uclibc作为c库。

     注意到编译过程中生成了三个文件夹,那么他们分别是干什么的呢?

    dl
    
    build_dir
    
    staging_dir

     

    dl是在编译的时候下载文件的目录,这些文件都是编译所需要的,下面是它们的的一部分:

    ├── ath10k-firmware-da0f85d924226ee30c46e037120621c9e192b39e.tar.bz2
    ├── autoconf-2.69.tar.xz
    ├── automake-1.15.tar.xz
    ├── bc-1.06.95.tar.bz2
    ├── binutils-linaro-2.24.0-2014.09.tar.xz
    ├── bison-3.0.2.tar.xz
    ├── broadcom-wl-4.150.10.5.tar.bz2
    ├── broadcom-wl-5.100.138.tar.bz2
    ├── busybox-1.23.2.tar.bz2
    ├── cmake-2.8.12.2.tar.gz
    ├── compat-wireless-2015-03-09.tar.bz2
    ├── dnsmasq-2.72.tar.gz
    ├── dropbear-2014.65.tar.bz2
    ├── e2fsprogs-1.42.8.tar.gz
    ├── findutils-4.4.2.tar.gz
    ├── firewall-2015-02-26-165029cb8c0f1545628f44143aec965e64cef021.tar.gz
    ├── flex-2.5.39.tar.bz2
    ├── fstools-2015-03-30-a5fa5b6144253726dcd7e769197eed787a723f5f.tar.gz
    ├── gcc-linaro-4.8-2014.04.tar.xz
    ├── gdb-linaro-7.6-2013.05.tar.bz2
    ├── genext2fs-1.4.1.tar.gz
    ├── gengetopt-2.22.6.tar.gz
    ├── gmp-5.1.3.tar.xz
    ├── hostapd-2015-03-25.tar.bz2
    ├── iptables-1.4.21.tar.bz2
    ├── ipw2100-fw-1.3.tgz
    ├── ipw2200-fw-3.1.tgz
    ├── iw-3.17.tar.xz
    ├── json-c-0.12.tar.gz
    ├── jsonfilter-2014-06-19-cdc760c58077f44fc40adbbe41e1556a67c1b9a9.tar.gz
    ├── libelf-0.8.13.tar.gz
    ├── libiwinfo-2015-03-23-40f2844fadc05f4a4de7699dbc12fee295b7057b.tar.gz
    ├── libpcap-1.5.3.tar.gz
    ├── libtool-2.4.tar.gz
    ├── libubox-2015-03-22-b8d9b382e39823850331edc2a92379173daf1be3.tar.gz
    ├── linux-3.18.10.tar.xz
    ├── linux-atm-2.5.2.tar.gz
    ├── linux-firmware-2015-03-20-f404336ba808cbd57547196e13367079a23b822c.tar.bz2
    ├── lua-5.1.5.tar.gz

     

    注意到,这些都是从网上下载的,要注意保留,以后编译的时候就不用上网下载了。

    build_dir的作用就是存放上述这些压缩包的解压路径,也就是说,dl的包会解压到build_dir里面,

    并且编译这些包。

    其中,这里有三个目录:

    tan@ubuntu:~/openwrt$ tree build_dir/ -d -L 1
    build_dir/
    ├── host
    ├── target-mips_34kc_uClibc-0.9.33.2
    └── toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2

     

    host目录是为了编译一些tools用于协助生成openwrt image

    target目录是为目标主机编译用的,可以在目录上看到CPU的架构和所用的c库

    toolchain是用来编译交叉编译器的

     

     

    在staging_dir下面可以看到类似的三个目录:

    tan@ubuntu:~/openwrt$ tree staging_dir/ -d -L 1
    staging_dir/
    ├── host
    ├── target-mips_34kc_uClibc-0.9.33.2
    └── toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2

     

    host目录下存放了一些编译主机上的一些工具(tools)

    target 目录主要存放编译出来的firmware,是给目标机器用的

    toolchain目录包含了交叉编译器,你可以在里面写一个简单的c文件,并且使用交叉编译器编译它,

    生成的程序可以在目标机器上运行。

     

    虽然不完全如此,可以将staging_dir的每个文件夹对应理解成build_dir的产物

     

    这里有编译过程的大体介绍:

    http://wiki.openwrt.org/doc/howto/build
    http://downloads.openwrt.org/docs/buildroot-documentation.html

     

    openwrt是一个高度定制版的buildroot,官网有它的介绍:

    http://wiki.openwrt.org/about/toolchain

    使用这个系统,可以基本做到全自动的编译过程。

     

     

    bin目录下面的文件粗看可以分为两类:

    openwrt-ar71xx-generic-a02-rb-w300n-squashfs-factory.bin
    openwrt-ar71xx-generic-a02-rb-w300n-squashfs-sysupgrade.bin

    其中这两个的区别是(转自http://see.sl088.com/wiki/Openwrt_factory%E5%9B%BA%E4%BB%B6/%E4%B8%BA%E4%BD%95%E5%85%88%E5%88%B7factory):

     

    factory是用来从原厂固件升级到openwrt用的。 sysupgrade是用来给openwrt升级用的

    无论你是升级还是从官方方刷openwrt,openwrt-XXXXXXX-factory.bin的固件都是适用的。 而openwrt-XXXXXXX-sysupgrade.bin.固件只能用来升级用。如TTL救砖就不能用sysupgrade的固件。

     

    其中这里又进一步说明了:

    http://www.cnblogs.com/siikee/p/4224086.html

     

     

    bin文件下还有很多ipk文件,这些文件是opkg包管理系统的文件,在openwrt

    运行起来的时候可以使用opkg安装,用起来和debian的deb差不多。

     

    另外,openwrt 官方说了,the bootloader is not part of OpenWrt

    http://wiki.openwrt.org/doc/techref/bootloader

    而且,bootloader对于每一个路由器都是不一样的,负责将最底层开起来。厂家也不见得会将最底层的

    代码开源。

    目前有很多卖修改好的openwrt路由器,一个卖点就是不死uboot,就是说

    你的firmware不管怎么刷都可以恢复,它包括一个网页接口,可以上传firmware

    到路由器上,这样大大方便了openwrt的调试。

     

     

     

     

    openwrt的menuconfig是定制好的,项目在config**.in里面:

     

     最后看看openwrt 的patch系统

     

    package的很多子目录都包含这两个东西,patches 是一些patch,Makefile包含了下载地址和其他的一些信息。

    当发现这些用户空间软件出问题的时候,为其加patch就可以了,

    实际上linux kernel出问题时,也可以这样类似地对其加一些patch进去。

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/tanhangbo/p/4394751.html

    展开全文
  • openwrt相关

    千次阅读 2014-04-17 14:25:47
    flash布局,文件系统划分: http://wiki.openwrt.org/zh-cn/doc/techref/flash.layout
  • 如何编译OpenWrt

    2014-09-17 18:52:46
    分类: openwrt ... Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。这些编译好的
  • [OpenWrt] 如何编译OpenWrt

    千次阅读 2012-11-26 13:15:14
    ...文末,附加人生如戏写的编译OPENWRT的TXT内容,可直接... Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 Ope
  • 最近用吃灰的nuc搭建了一个基于OpenWrt的软路由,用的旁路由模式。日常待机10W左右,用着还不错。下面讲一下如何用check_mk来监控OpenWrt系统:1、点击右边导航栏中的Monitoring Agents链接,然后在点击右侧的Check_...
  • [OpenWrt] 新版OpenWrt编译教程

    千次阅读 2012-11-27 14:54:42
    Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到 为了参与测试或参与开发OpenWrt的工作;我们需要重新移植或者重新编译个一个...
  • openwrt系统编译简述

    千次阅读 2020-01-09 20:12:10
    OpenWrt编译要求 以生成安装8M的OpenWrt固件镜像为例: 在你的操作系统上安装OpenWrt的编译系统和一些必要的东西; 确保有3-4 GB的可用空间; 环境变量: 不应该设置SED,如果有在编译之前执行unset SED; GREP_...
  • openwrt搭建环境

    2018-03-19 20:24:03
    openwrt 是一个开源的路由器操作系统由linux改造而来源代码开放,一般的开发方法是用linux操作系统来搭建环境开发openwrt有两种版本一个是测试版俗称 trunk,二是稳定版俗称 backfire 在开始编译Openwrt之前需要...
  • openwrt-cpufreq-源码

    2021-04-11 19:24:52
    luci-app-cpufreq Openwrt LuCI应用程序管理ARM处理器的内核参数。 OpenWrt> = 19.07。 屏幕截图
  • 华美OpenWrt记录

    2021-08-17 19:16:41
    (2)C键:清除屏幕的显示内容; (3)B键:浏览minicom的历史显示; (4)X键:退出minicom,会提示确认退出。 (5)P 设置通信参数 问题 我编译下载openwrt固件支持ch340和cp2012,但是不支持pl2303,利用dmesg...
  • openwrt学习计划

    2016-02-25 13:58:16
    1.学习openwrt整个环境 能很好的移植到板子上 掌握系统基本的配置技能 模块功能  2.能在openwrt上跑自己写的应用程序
  • 如何编译openwrt

    2015-05-31 23:43:59
     Openwrt 官方正式的发行版是已编译好了的映像文件(后缀名bin或trx、trx2),此映像文件可从Openwrt官方网站的下载页面中轻松获取到,连接地址为 OpenWrt官方网站。这些编译好的映像文件是基于默认的配置设置,且...
  • [OpenWrt] OpenWRT-Document中文

    千次阅读 2012-11-26 10:54:57
    1.2 配置OpenWrt  1.2.1 网络  1.2.2 无线  1.3 高级配置  1.3.1 热插拔  1.3.2 初始化脚本  1.3.3 网络脚本  2 开发需知  2.1 构建系统  2.1.1 构建一个镜像  2
  • 折腾两小时,总算把斐讯N1盒子成功刷入Openwrt, 并且设置成旁路由。如下图最终效果,下面记录一下主要步骤以及注意事项。(至于为什么要用软路由,软路由有什么好处,请自行搜索,这次就不过多解释)完成以后路由器...
  • VMware15搭建OpenWRT

    2021-04-17 23:25:11
    这里分享一下需要用到的vmdx文件(openwrt的硬盘文件),提取码:1234,下载好之后找个空的文件夹作为openwrt的系统文件夹放进去 我们打开VMware15, 按住"ctrl + N"或者“文件”—>“新建虚拟机”创建一个虚拟机...
  • openwrt环境搭建

    2014-11-25 16:23:38
     上述编译命令意为:V99参数,将出错信息保存在build.log,生成输出完整详细的副本(with stdout piped to stderr),只有在屏幕上显示的错误。 一键编译  即使用脚本来编译Openwrt固件。许多朋友编译...
  • Centos7下编译openwrt

    千次阅读 2016-09-22 01:47:44
    1.下载openwrt最新源码git clone https://github.com/openwrt/openwrt.git 2.下载feeds执行 $ ./scripts/feeds update -a $ ./scripts/feeds install -a 3.配置环境make defconfig 可检查所需依赖 $sudo yum -y ...
  • OpenWrt 基础软件模块之ubus Openwrt 支持模块化编程,增加新功能非常简单。但是一些通用的基础模块必须包含,他们是OpenWrt核心。 如:实用基础库libubox、系统总线ubus、网络接口管理模块netifd、核心工具模块ubox...
  • OpenWRT编译过程

    千次阅读 2016-02-23 10:06:16
          驿外断桥边,寂寞开无主。已是黄昏独自愁,更著风和雨。无意苦争春,一任群芳妒。零落成泥碾作尘,只有香如故~ ...hoowa从来没有说过关于编译OpenWrt很多人都很好奇如何编译,其实编译本身是非常简单
  • [OpenWrt] 编译OpenWrt-Dreambox

    千次阅读 2012-12-10 17:24:19
    说明:将编译的所有输出信息保存在build.log中,将error和warning信息打印在屏幕上。编译过程使用双核CPU,占用后台资源。 7、 生成镜像(Image)位置 新生成的镜像会默认放在新建的一个bin目录下。例如:/...
  • -q 在执行后续的参数时,不在屏幕上显示任何信息。 -r或1> 设定硬盘的读写模式。 -S 设定硬盘进入省电模式前的等待时间。 -t 评估硬盘的读取效率。 -T 平谷硬盘快取的读取效率。 -u或1> 在硬盘存取时,允许其他中断...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 726
精华内容 290
关键字:

openwrt屏幕