如何在OpenWrt下做驱动开发
1、搭建开发环境 首先,在执行make menuconfig后,会出现下图: 其中,图中红框部分是我定制路由器的系统版本,大家可以根据不同的路由器进行不同的选择;绿框部分表示我们需要编译一个SDK开发环境(默认情况下,此项未勾选)。
编译过程中需要通过官网下载很多相关的软件包,所以必须保证能够顺利连上外网。
由于下载速度的限制,编译过程大概需要数小时。
编译结束后,所有的产品都会放在编译根目录下的bin/yourtarget/. 例如:我所编译的产物都放在./bin/brcm47xx/下,其中文件主要有几类: (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/brcm47xx/OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2 可以从名称上看出,target system是brcm47xx,host system是Linux-x86_64,使用的编译工具以及库是4.3.3+cs_uClibc-0.9.30.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 /**************** * Helloworld.c * The most simplistic C program ever written. * An epileptic monkey on crack could write this code. *****************/ #include #include int main(void) { printf("Hell! O' world, why won't my code compile?\n\n"); return 0; } 编写Makefile文件# build helloworld executable when user executes "make" helloworld: helloworld.o$(CC) $(LDFLAGS) helloworld.o -o helloworld helloworld.o: helloworld.c$(CC) $(CFLAGS) -c helloworld.c # remove object files and executable when user executes "make clean" clean: rm *.o helloworld 在这两个文件的目录下,执行make 应该可以生成helloworld的可执行文件。
执行helloworld后,能够打印出“Hell! O' world, why won't my code compile?”。
这一步,主要保证我们的源程序是可以正常编译的。
下面我们将其移植到OpenWRT上。
(2)将OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2解压 tar –xvf OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1.tar.bz2 (3)进入SDK cd OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1 可以看到里面的目录结构跟我们之前source的目录结构基本相同,所需要编译的软件包,需要放置在package目录下 (4)在package目录下创建helloworld目录 cd package mkdir helloworld cd helloworld (5)创建src目录,拷贝 helloworld文件 mkdir src cp /home/wrt/test/helloworld.c src cp /home/wrt/test/Makefile src (6)在helloworld目录下创建Makefile文件 这个Makefile文件是给OpenWRT读的,而之前写的那个Makefile文件是针对helloworld给编译其读的。
两个Makefile不在...
在openwrt中安装包,下载之后咋安装
方法一、web安装系统--》软件包先点更新软件包清单 填入软件包网址,然后点ok方法二、ssh连接路由命令安装或者用ssh软件PuTTY连接路由器PuTTY下载地址:http://openwrt.8800.org:82/PuTTY_SSH_Telnet程序.raropkg updateopkg install 软件包网址或者用winscp连接路由 然后上传包到/tmp/下opkg updateopkg install /tmp/xxx.ipkwinscp(用于管理路由上的文件 类似FTP)date:2018-8-31卸载软件opkg remove
Openwrt ipv6 怎么设置
Ipv6的网络现在基本只有部分高校的教育网才能连接上的。
其他的网络暂时还未普及,只有Ipv4。
你的是学校的网络不?如果不是,那就没办法了……如果是,而且登不上的话,你试一下这个方法:按 win+R组合键,调出 ”运行 “对话框,输入”CMD“,再在弹出的对话框里面输入 "ipv6 install",然后按一下Enter键,看能不能加载Ipv6网络。
还不行的话,你只能去你们的学校网络中心问一下,有没有开通Ipv6通道的网络了。
当然,现在也有一些专门的把Ipv4转Ipv6的软件,你百度一下就有了。
不过这些都不好用,我用过一个,速度太渣了,从此没用过。
都是回学校才用v6的。
在线等,OpenWrt怎么安装软件
刷了openwrt 的路由器在启动后按reset键可以进入 failsafe 模式,就是让你的路由器恢复到刚刷 openwrt 的状态,解决因为配置错误引起的路由器无法访问的问题。
如何按 reset 键进 failsafe 模式因路由器厂商而异,具体方法请参考 openwrt 的 wiki,比如 linksys 的 WRT54GL 见 http://wiki.openwrt.org/toh/linksys/wrt54g#enter.failsafe.mode背后的原理是 openwrt 路由器的文件系统由只读的 rom 和可改写的 overlay 两部分合并而成,刷 openwrt 后通过 web 或者命令行进行的所有修改(包括配置参数的调整、安装新的软件包)都保存在 overlay 里面。
进 failsafe 模式就是只加载 rom,这样就去掉了所有的配置。
OpenWrt都可以实现什么功能?netgear r7000可以刷openwrt吗
openwrt基于linux系统,所以说是一个智能路由器好处有1,校园网的破解(前提你要会破解算法)2,有usb功能的可以实现nas ,挂站,远程监控甚至智能家居3,无线可桥接,可以无线连接一般的chinanet热点并拨号,4,无线可以用来破解别人的无线,,(这个需要自己搞)简单的说,刷了openwrt就相当于一个linux系统带无线带多网卡的电脑,虽然性能不如电脑
openwrt无线网卡应该怎么挂
openwrt 官方默认的固件,大概支持以下芯片的网卡软件包名称 版本 描述安装 kmod-rt2400-pci 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT2400 PCI)安装 kmod-rt2500-pci 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT2500 PCI)安装 kmod-rt2500-usb 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT2500 USB)安装 kmod-rt2800-lib 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (rt2800 LIB)安装 kmod-rt2800-pci 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT2860 PCI)安装 kmod-rt2800-usb 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT2870 USB)安装 kmod-rt2x00-lib 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (LIB)安装 kmod-rt2x00-pci 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (PCI)安装 kmod-rt2x00-usb 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (USB)安装 kmod-rt61-pci 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT2x61 PCI)安装 kmod-rt73-usb 3.3.8+2012-09-07-3 Ralink Drivers for RT2x00 cards (RT73 USB)安装 kmod-rtl8180 3.3.8+2012-09-07-3 Realtek Drivers for RTL818x devices (RTL8180 PCI)安装 kmod-rtl8187 3.3.8+2012-09-07-3 Realtek Drivers for RTL818x devices (RTL8187 USB)
请教LEDE/OpenWrt自动挂载优盘中文乱码
不推荐做extroot,因为extroot不是那么容易成功而且难以确定问题的原因。
单纯的把软件包安装到sd卡中可以通过修改opkg配置达成。
如果非要做extroot,请严格按照指示操作。
简单来说,需要复制所需数据,修改/etc/config/fstab,重启三步。
这之后,应该可以通过挂载列表看到结果:如成功,SD卡会挂载为/overlay,否则会挂载为/tmp/overlay-disable。
如果确定数据已经完整复制就重启一次吧,不管怎么说把sd卡挂载到/dev/sda1实在是看着难受啊。
如果只需要把软件装到sd卡,那么在LuCI的软件包管理中选择配置选项卡,然后添加一个dest sd ,对应路径为sd卡挂载点,然后编辑/etc/profile,把sd卡上的bin、sbin、usr/bin、usr/sbin加入PATH变量,lib、usr/lib加入LD_LIBRARY_PATH变量,其他比如/etc啊/www啊就在sd卡上做个符号链接就好了。
就用opkg -d sd install 。
DD
DD-WRT,通常情况下是一种可用于某些无线路由器的非商业的第三方固件。
功能强大,但是又具有友好的Web管理/配置界面,可以提供很多“原版”路由器不支持的功能,如调整无线发射功率等。
OpenWrt是一个嵌入式的Linux发行版,主流路由器固件有 dd-wrt、tomato、openwrt三类,而不是试图建立一个单一的、静态的系统。
OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。
对于用户来说,这意味着其拥有完全定制的能力,可以用前所未有的方式使用该设备;对于开发人员,OpenWrt 是使用框架来构建应用程序,而无需建立一个完整的固件来支持。
ubnt在接收wifi信号方面有优势,可以设置发射功率和距离以及天线的调整,要么接收,要么发射,不能同时进行,用于远距离组网;DD-WRT能接收信号的同时再发射信号,也就是网络术语上说的中继,它可以延伸wifi信号范围;OpenWrt有DD-WRT功能以外,可以编程方式控制路由器,可以虚拟多网卡接收或发射信号,功能比较多,OpenWrt会好一些。
转载请注明出处51数据库 » openwrt njit 软件包