- 浏览: 962787 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wuchanghyz:
我的情况恰巧与博主相反,做了不少电子开发,总是无法把电子硬件与 ...
软件工程师如何转行做电子 -
kaopuso:
学习了 谢谢
扩展和嵌入Python解释器 Extending and Embedding the Python Interpreter -
YA_AY:
好厉害!
2014年度笔记统计与2015设想 -
cwqcwqmax9:
我也很想把底层的电路原理搞懂啊
软件工程师如何转行做电子 -
phrmgb:
团队建设是为了建设团队,感觉不能光吃,吃的过程中增加些互动游戏 ...
团队小论-自助餐
OpenWrt的网上笔记
gashero |
2009-09-04 |
目录
1 简介
我希望给自己的无线路由改造一下用OpenWrt,并且开放svn服务器,还有其他很多玩法。所以同时看一些网上的帖子吧。
这里主要选择OpenWrt的新版本kamikaze,对于whiterusssian版本只记录地址,不做详细阅读了。
2 参考文献
tsend time的博客: http://blog.chinaunix.net/u1/38213/ :
- [r]DD-WRT初次接触: http://blog.chinaunix.net/u1/38213/showart_1889929.html
- [r]OpenWrt-1.安装手记: http://blog.chinaunix.net/u1/38213/showart_1890101.html
- [u]OpenWrt FAQ-入门级别的中文帮助: http://blog.chinaunix.net/u1/38213/showart_1890319.html
- [r]OpenWrt NVRAM集合: http://blog.chinaunix.net/u1/38213/showart_1890362.html
- [r]OpenWrt-2.投入工作: http://blog.chinaunix.net/u1/38213/showart_1890368.html
我们都很疯的博客:
- [r]OpenWrt固件介绍: http://www.ssbbcc.com/349.html
- [r]路由器升级版本选择(DD-WRT/TOMATO/...): http://www.ssbbcc.com/228.html
- [i]贝尔金7231-4P 64M版介绍: http://www.ssbbcc.com/224.html (还有关于JTAG的内容)
- [r]OpenWrt固件配置简介: http://www.ssbbcc.com/398.html
ning的个人空间:
- [u]主页: http://www.lupaworld.com/131820/ 包含一些OpenWrt编译的笔记,不过设备不同
- [r]非常方便的OpenWrt的嵌入式Linux开发环境: http://www.lupaworld.com/131820/viewspace-108558.html 一些没什么内容的介绍
- [r]OpenWrt嵌入式Linux开发环境: http://www.dzkf.cn/html/qianrushixitong/2009/0525/3795.html 关于WRT的历史
- [i]一个小型的无线路由器Linux系统OpenWRT: http://www.cppblog.com/Khan/archive/2006/11/23/15573.html (还有很多关于nvram设置的提示)
- [u]OpenMoko移植OpenWrt: http://wiki.openmoko.org/wiki/OpenWrt/zh_cn
- [u]OpenWrt经验小结: http://blog.liuyi.info/openwrt (主要讲WRT54G有关的)
- [u]什么是OpenWrt: http://hi.baidu.com/fnsoxt/blog/item/c2414f10a6fa33fcc2ce79d7.html (简介)
- [r]OpenWrt/kamikaze/8.09.1/brcm-2.4/ 7231-4P路由器安装笔记: http://hi.baidu.com/westhack/blog/item/64cdcc455b58642fcefca361.html
- [r]备份CFE和NVRAM的命令: http://hi.baidu.com/westhack/blog/item/5a6bfe35aedcda1690ef3976.html
- [u]刷OpenWrt教程: http://hi.baidu.com/lnas/blog/item/15497166f835f02cab184c84.html (包含一些有用的外部链接)
- [r]OpenWrt Remote Admin: http://www.wantmoore.com/archives/2007/08/06/openwrt-remote-admin/
3 OpenWrt介绍
NVRAM是Non-Volatile RAM,在OpenWrt里面是用了Flash Rom的最后64KB区块,用于存储一些配置参数。
3.1 NVRAM操作
显示所有参数:
# nvram show # nvram show | grep wl0_
设置:
# nvram set <param>=<value> # nvram set lan_ipaddr=192.168.1.2 # nvram commit # reboot
删除一些参数:
# nvran unset <param>
提交修改:
# nvram commit
4 准备工作
判断硬件支持主要是看CPU型号。查看 http://oldwiki.openwrt.org/TableOfHardware.html 。
把我自己的无线路由拆开看了,可以确定的配置如下:
设备 | 参数 |
型号 | F5D 7231-4P |
CPU | Broadcom 4712 200MHz |
闪存 | 4MB |
内存 | 64MB |
交换机芯片 | ADM6996L |
版本 | 不确定 |
按照硬件支持列表中来看,只剩下两种可能,一种是Support,一种是Untest。应该没问题的。
下载合适的版本: http://downloads.openwrt.org/kamikaze/8.09.1/ 其中 brcm-2.4 是linux-2.4的版本,比较稳定, brcm47xx 是linux-2.6的版本,比较新。从附带软件包数量来看, brcom-2.4 接近1500个, brcm47xx 接近1600个。不过我需要的subversion是都有的。据谣传说2.6的好像有问题。
下载的镜像有多种版本:brcm是指CPU方面的通用版本,jffs2是指文件系统可写,但是较大,squashfs是只读文件系统,但是压缩后很小。
.trx版本是通用的,.bin为了提供设备支持而做的。首先尝试.trx版本。
备份原有的CFE:
dd if=/dev/mtd/0 of=/tmp/cfe.bin dd if=/dev/mtd/3 of=/tmp/nvram.bin
5 关于Belkin 7231-4P
先查看一下无线网卡的版本:
# nvram show | grep corerev wl_corerev= wl0_corerev=7
各个版本号对应的驱动版本:
- wl0_corerev=4 :一定使用VINT版
- wl0_corerev>=5 <=7 :使用VINT和NEWD均可,推荐VINT
- wl0_corerev>=8 :使用VINT和NEWD均可
- wl0_corerev>9 :一定使用NEWD
如果结果不唯一,就先刷一个试试。我的是7。市面上买到的一部分时7230-4改的。一款刷不坏的路由。建议不要碰CFE,因为坏了需要JTAG才能修复。
7 安装
直接下载的brcom没有bin版本,只有trx版,一个作者尝试该文件名直接刷,刷成砖头了,重新做nvram以后居然可用了。
7.1 清空nvram
如果变砖头了需要清空nvram,有三种方法:
- 30/30/30方法:最保险的方式。推荐。
- 网页法
- 命令行法,也许就是mtd方式
30/30/30方法,首先确保dd-wrt里面开了reset功能,然后:
- 接通路由器,按住复位30秒
- 不要松开,断开电源,按住30秒
- 不要松开,重新接通,按住30秒
7.3 TFTP方式安装
确保开启了Boot Wait了。
- 使用网线连接到路由器,给本机网卡设置一个静态IP地址,不要跟路由的冲突了,但是在同一个C段,如 192.168.1.9 或 192.168.2.9 。
- 将firmware存放到根目录,注意,这种方式要用.bin的firmware。
- 打开第一个命令行窗口,执行 ping 192.168.1.1 -t ,回车开始执行
- 打开第二个命令行窗口,输入 tftp -i 192.168.1.1 put dd.bin ,预备而暂时不执行
- 断开路由器电源,马上接通电源
- 看到ping通后,立刻对tftp命令按下回车,基本上没问题
7.4 MTD方式安装
-
下载固件:
wget http://downloads.openwrt.org/kamikaze/...../openwrt-brcom-2.4-squashfs.trx
-
使用mtd刷新进去:
mtd -r write openwrt-brcm-2.4-squashfs.trx linux
7.5 对改装的路由恢复64MB内存设置
-
telnet登录: telnet 192.168.1.1
-
用户名root,密码admin
-
输入如下命令,一共5行:
nvram set sdram_init=0x0008 nvram set sdram_config=0x0033 nvram set sdram_ncdl=0x0000 nvran commit reboot
-
不要断电,等待路由重启完成
恢复32MB内存的命令:
nvram set sdram_init=0x0008 #另一说0x000a nvran set sdram_ncdl=0x0000 nvran commit reboot
7.6 7231-4P的WEB安装OpenWrt-kamikaze-8.09.1
下载 http://downloads.openwrt.org/kamikaze/8.09.1/brcm-2.4/openwrt-brcm-2.4-squashfs.trx ,扩展名改为.bin,然后在DD-WRT或TOMATO中WEB升级到OpenWrt。
8 后期配置
8.1 配置MAC地址,未确定版本
nvram set il0macaddr=00:11:50:xx:xx:xx nvram set et0macaddr=00:11:50:xx:xx:xx nvram set et1macaddr=00:11:50:xx:xx:xx nvram set wan_hwaddr=xx:xx:xx:xx:xx:xx nvram set lan_hwaddr=xx:xx:xx:xx:xx:xx nvram set wl0_hwaddr=xx:xx:xx:xx:xx:xx nvram commit reboot
8.2 设置路由的内网IP地址
nvram set lan_ipaddr=192.168.1.9 nvram commit reboot
8.3 无线网络配置
修改文件 /etc/config/wireless ,寻找 config wifi-iface ,如下修改:
option ssid XXXXXX #定义SSID option mode ap #AP的工作模式 option encryption none #不加密 option encryption wep #WEP加密 option key 1 option key1 XXXXXXX #密钥,wep64为10个16进制数字,wep128为26个16进制数字 option encryption psk #WPA-PSK加密 option key XXXXXX #WPA密钥 option hidden 1 #启用SSID隐藏,0为广播
还要将上面的如下行给注释掉,否无线不会启动:
#option disable 1
配置好以后运行:
/etc/init.d/network restart
8.4 PPPoE上网配置
自动获取IP的PPPoE,修改 /etc/config/network ,寻找 config interface wan ,如下修改:
option ifname "eth0.1" option proto pppoe option username <username> #PPPoE用户名 option password <password> #PPPoE密码 option macaddr xx:xx:xx:xx:xx:xx #MAC地址克隆
配置好以后运行:
/etc/init.d/network restart
检查状况,在 ifconfig 中看到ppp0就好了。
DHCP配置:
option ifname "eth0.1" option proto dhcp option hostname <routername> #设置路由器机器名
8.5 简单的无线中继配置
修改 /etc/config/wireless ,添加如下配置:
config wifi-iface option device wl0 option mode sta option ssid #需要中继的AP的SSID option encryption #加密方式
然后把 /etc/config/network 中的宽带配置修改为:
config interface wan option ifname "wl0" option proto dhcp
8.6 修改路由器交换端口
kamikaze默认交换端口与7231-4P的不同,修改 /etc/config/network 文件,找到 config switch eth0 一节的valn0和vlan1设置:
option vlan0 "0 1 2 3 5*" option vlan1 "4 5"
9 软件与模块安装
9.1 安装USB设备
安装驱动,针对7231-4P:
opkg update opkg install kmod-usb-ohci opkg install kmod-usb-storage
安装文件系统模块:
opkg install kmod-fs-ext3 opkg install e2fsprogs
接入U盘,可以用dmesg看到 /dev/scsi/host0/bus0/target0/lun0 之类的信息,并可以认出型号。
格式化U盘:
mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
挂载:
mkdir /opt mount -t ext3 /dev/scsi/host0/bus0/target0/lun0/part1 /opt
开机自动挂载U盘,建立 /etc/init.d/optware 文件。这种太复杂,略过。
可以通过设置 /etc/fstab 来自动挂载,先启用fstab:
# uci set fstab.@mount[0].enabled=1 # uci set fstab.@mount[0].fstype=ext3 # uci set fstab.@mount[0].device=/dev/mmcblk0p1 # uci set fstab.@mount[0].target=/mnt/mmc # uci set fstab.@mount[0].options=rw,sync,noatime # uci commit fstab # /etc/init.d/fstab restart
经测试来看不管用。
修改 /etc/preinit 也不管用。
修改 /etc/config/fstab 也不管用。
11 我的归纳
刷firmware时可以用web界面升级,扩展名必须由.trx改成.bin。
刷完以后就可以直接进telnet来进行配置了。主要顺序如下:
- 修改交换机端口
- 修改路由器的IP地址以及内网网段
- 修改无线AP的配置
- 修改PPPoE的配置
- 重启路由器
这时应该就可以上网了,默认情况下对内网的DHCP是打开的,这个不用担心。
这时可以进入WEB管理界面看看,注意立即修改自己的管理密码。
修改管理密码以后telnet就无法使用了,但是可以使用ssh了。
通过nvram修改支持64MB内存。
我尝试在debian etch上格式化优盘来用,不过接到路由上提示错误。于是尝试安装OpenWrt里面附带的磁盘管理工具 e2fsprogs ,附加安装了另外3个软件包 libblkid 、 libext2fs 、 libuuid 。如果以后控件不够用了可以再删除掉。
安装完 kmod-usb-ohci 、 kmod-usb-storage 、 kmod-fs-ext3 这3个模块以后 /jffs 分区已经使用600KB了,剩余1.1MB。
修改使得软件安装到U盘,修改 /etc/opkg.conf
dest usb /mnt/usb option force_space #option overlay_root /jffs #?
安装时使用:
mount /dev/scsi/host0/...../part1 /mnt/usb opkg update opkg -d usb install xxxxx
看来 /etc/profile 还是可用的,所以我将挂载U盘、设置bin和lib路径的工作都放到这里了。很好用。不过这个文件主要用于登录时修改东西的,所以不登录就不会执行。修改后我添加到 /etc/profile 的部分:
export PATH=$PATH:/mnt/usb/bin:/mnt/usb/usr/bin export LD_LIBRARY_PATH:/mnt/usb/lib:/mnt/usb/usr/lib mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt/usb sleep 1 svnserve -d -r /mnt/usb/svnroot --listen-host=0.0.0.0 --listen-port=3690
添加动态域名3322的支持:
先建立文件 /etc/config/ddns ,这样就可以用uci体系进行配置了:
config 3322 option user username:password option server www.3322.org option name myname.3322.org
建立文件 /etc/hotplug.d/iface/30-update3322 ,并且可执行,内容如下:
# cat /etc/hotplug.d/iface/30-update3322 NAME=wget CONFIG=ddns COMMAND=/usr/bin/$NAME [ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && { [ -x $COMMAND ] && [ -r /etc/config/$CONFIG ] && { . /etc/functions.sh config_load ddns ${COMMAND} -q -O - \ "http://`config_get cfg1 user`@`config_get cfg1 server`/dyndns/update?system=dyndns&hostname=`config_get cfg1 name`" 2>&1| logger -t $NAME } & }
这个脚本方式失败,但是后来发现opkg源里面有 ez-ipupdate ,也就是3322使用的IP更新客户端。
自动挂载U盘的问题在于启动服务时的顺序,可以看到如下 /etc/rc.d/S20fstab 是在 /etc/rc.d/S39usb 之后的,所以usb尚未开始使用就执行fstab当然不会挂载成功。只要建立新的符号链接即可,注意只要放在usb之后即可,不要与已有的冲突:
cd /etc/rc.d ln -s ../init.d/fstab S42fstab
这时修改 /etc/config/fstab 中的U盘挂载就有效了。
安装ez-ipupdate以后,手动更新IP地址:
ez-ipupdate -s www.3322.org -u zerologos:zlogos
如上也是不能用的,因为ez-ipupdate最近宣布不支持3322(qdns)了。
更新自身IP可以使用3322.org的URL参数来完成,格式如下:
URL=http://<username>:<password>@members.3322.org/dyndns/update?system=dyndns&hostname=<domain>&wildcard=off
然后调用wget命令来完成:
wget -q -O - $URL
可以将如上命令写入一个脚本,然后建立脚本 /etc/hotplug.d/qdns_update.sh 该脚本用于动态管理网络接口的改变,内容如下:
sh /root/qdns_update.sh >> /mnt/usb/qdns_update.log 2>&1
这样即可,重启也无妨了。
对于在U盘上安装的软件,启动服务时注意设置好 $PATH 和 $LD_LIBRARY_PATH ,可以考虑在 /etc/init.d 目录下的启动脚本中,各个函数前加上如下语句:
source /etc/profile
当然前提是你已经在 /etc/profile 中加入了合适的环境变量定义了。
需要小心的是无论是使用ssh从哪个方向拷贝文件,都回导致OpenWrt的内存使用率急剧上升。尤其是写入到由OpenWrt管理的存储时,当内存用光时,拷贝进程会停止响应。强行结束就会导致ext3文件系统的出错,而且再次挂载也会失败。
开启远程登录-防火墙配置
开启一个指定端口到路由的连接(ssh的例子):
WAN=$(nvram get wan_ifname) LAN=$(nvram get lan_ifname) iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j ACCEPT iptables -A input_rule -i $WAN -p tcp --dport 22 -j ACCEPT
疑似端口转发,不确保可以工作:
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 22 -j NAT --to 192.168.1.50 iptables -A forwarding_rule -i $WAN -p tcp --dport 22 -d 192.168.1.50 -j ACCEPT
未测试的指定源地址的防火墙通过规则:
iptables -s <IP> -t nat -A prerouting_wan -p tcp -dport 22 -j ACCEPT iptables -s <IP> -A input_wan -p tcp -dport 22 -j ACCEPT iptables -s <IP> -t nat -A prerouting_wan -p tcp -dport 1080 -j DNAT -to 192.168.0.1:80 iptables -s <IP> -A input_wan -p tcp -dport 80 -j ACCEPT
发表评论
-
OpenCL与GPU计算入门 译文
2015-05-29 11:50 10613OpenCL与GPU计算入门 作者: E ... -
Linux下禁用T440s,X240的一体化触摸板(touchpad)
2014-08-13 15:26 7146自打1月买了Thinkpad T440s就一直很火大,其中最 ... -
使用AVR-GCC编程Arduino
2013-09-17 02:01 14763使用AVR-GCC编程Arduino 原文标 ... -
Unix Geek的10个顶级Mac OS X技巧
2010-04-04 11:05 9966Unix Geek的10个顶级Mac OS X技巧 ... -
Linux为什么比BSD流行
2009-09-03 10:13 3293从大学时开始搞linux, ... -
将Debian Lenny 5.0 Linux 安装到优盘
2009-03-01 17:05 4992将Debian Lenny 5.0安装到 ... -
Ion2入门指导
2009-02-18 00:34 1901Ion2入门指导 ...
相关推荐
【标题】"笔记本安装OpenWrt系统完整技术资料"涵盖了如何在笔记本上安装开源路由器操作系统OpenWrt的详细步骤。OpenWrt是一个基于Linux的嵌入式操作系统,常用于网络设备,如路由器,以提供高度定制和扩展的功能。 ...
《OpenWrt 深入学习笔记》是一个深入探讨OpenWrt操作系统的资源包,包含了一份详细的PDF文档。OpenWrt是一个基于Linux的开源嵌入式操作系统,广泛应用于无线路由器和其他网络设备。这个压缩包旨在帮助用户理解...
openwrt学习笔记,关于openwrt学习的最详细资料,供大家学习
### OpenWRT经典笔记知识点概览 #### 1. 基础部分 - **安装编译环境**:这是OpenWRT开发的第一步,需要在主机上安装一系列工具,如GCC、make等,来构建一个适合编译OpenWRT的环境。 - **下载源码**:官方提供了一...
### OpenWRT与LEDE深入学习笔记v2.0概览 #### 一、基础知识介绍 根据提供的部分内容,本文档主要介绍了如何安装OpenWRT与LEDE系统的编译环境,并详细记录了从GitHub下载源码的过程及后续的操作步骤。下面我们将...
`Openwrt学习笔记_通用固件makemenuconfig配置_2015.8.19修订.pdf`提供了对`makemenuconfig`配置工具的详细指南。`makemenuconfig`是一个图形化的界面,用于配置OpenWrt内核和软件包的选择。这份笔记将帮助初学者...
OpenWrt的学习笔记主要涵盖了对通用固件的make-menuconfig配置方法。 make-menuconfig是一个用于配置OpenWrt固件的工具,它提供了一个基于文本的菜单界面,允许用户选择需要编译进固件的组件和功能。在OpenWrt的...
OpenWrt 深入学习笔记详细记录了安装、配置、操作和维护 OpenWrt 系统的各个步骤和知识点。 1. 安装编译环境:在开始编译 OpenWrt 固件之前,需要在宿主系统上搭建合适的编译环境。通常这涉及到安装编译器、依赖库...
OpenWRT 安装指南 OpenWRT 是一个基于 Linux 的嵌入式操作系统,主要用于路由器和其他嵌入式设备。下面是 OpenWRT 安装指南的详细信息: 1. 入门 ---------------- * 安装 OpenWRT 需要具备基本的 Linux 知识和...
"我的openwrt学习笔记--链接.txt"是个人学习OpenWrt过程中积累的经验和技巧,可作为快速参考。而"Wifidog认证服务器搭建参考步骤.txt"则讲解了如何在OpenWrt上部署Wifidog,实现公共Wi-Fi的接入控制,提供安全的网络...
【OpenWRT之旅】LuCI探究.pdf Atheros openwrt WDS.pdf Attach functions to a push button ...openwrt luci学习笔记.pdf openwrt user manual.pdf openwrt 基于qmi的 3G4G拨号.pdf The UCI System [OpenWrt Wiki].pdf
通过阅读《Openwrt学习笔记-通用固件-make-menuconfig配置.pdf》这份文档,你可以深入理解这一过程,并逐步掌握如何有效地使用`make menuconfig`工具。这份文档应当包含了详细的步骤、配置选项解释以及常见问题的...
### OpenWRT添加LTE-3G-UMTS Modem - QMI模式详解 #### 引言 随着无线通信技术的发展,越来越多的场景需要利用移动网络作为主要或备用互联网接入手段。OpenWRT作为一种广泛应用于嵌入式设备的操作系统,提供了强大...
openwrt烧录教程及实操笔记,适合小白入门
openwrt: openwrt-brcm47xx-squashfs.trx Tomato dualwan: tomato-K26USB-15.02.0068-MIPSR1-8M.trx Tomato bwq51 带nginx: tomato-K26USB-1.28.121-MIPSR1-20140808.Hyzoom.RT-16M-AIO-AR-TR-NGINX.trx 1. ...
OpenWrt作为一个嵌入式开发框架,它在Linux系统中提供了一种全新的构建和部署方式,尤其适用于资源受限的嵌入式设备。OpenWrt的开发框架具有独特的目录结构、工具链配置、软件架构设计以及软件包管理和目标平台支持...