OpenWrt的网上笔记

笔记: gashero
日期: 2009-09-04

目录

  • 1   简介
  • 2   参考文献
  • 3   OpenWrt介绍
    • 3.1   NVRAM操作
  • 4   准备工作
  • 5   关于Belkin 7231-4P
  • 6   内核配置与编译
  • 7   安装
    • 7.1   清空nvram
    • 7.2   安装firmware
    • 7.3   TFTP方式安装
    • 7.4   MTD方式安装
    • 7.5   对改装的路由恢复64MB内存设置
    • 7.6   7231-4P的WEB安装OpenWrt-kamikaze-8.09.1
  • 8   后期配置
    • 8.1   配置MAC地址,未确定版本
    • 8.2   设置路由的内网IP地址
    • 8.3   无线网络配置
    • 8.4   PPPoE上网配置
    • 8.5   简单的无线中继配置
    • 8.6   修改路由器交换端口
  • 9   软件与模块安装
    • 9.1   安装USB设备
  • 10   故障解决
  • 11   我的归纳

2   参考文献

tsend time的博客: http://blog.chinaunix.net/u1/38213/ :

  1. [r]DD-WRT初次接触: http://blog.chinaunix.net/u1/38213/showart_1889929.html
  2. [r]OpenWrt-1.安装手记: http://blog.chinaunix.net/u1/38213/showart_1890101.html
  3. [u]OpenWrt FAQ-入门级别的中文帮助: http://blog.chinaunix.net/u1/38213/showart_1890319.html
  4. [r]OpenWrt NVRAM集合: http://blog.chinaunix.net/u1/38213/showart_1890362.html
  5. [r]OpenWrt-2.投入工作: http://blog.chinaunix.net/u1/38213/showart_1890368.html

我们都很疯的博客:

  1. [r]OpenWrt固件介绍: http://www.ssbbcc.com/349.html
  2. [r]路由器升级版本选择(DD-WRT/TOMATO/...): http://www.ssbbcc.com/228.html
  3. [i]贝尔金7231-4P 64M版介绍: http://www.ssbbcc.com/224.html (还有关于JTAG的内容)
  4. [r]OpenWrt固件配置简介: http://www.ssbbcc.com/398.html

ning的个人空间:

  1. [u]主页: http://www.lupaworld.com/131820/ 包含一些OpenWrt编译的笔记,不过设备不同
  2. [r]非常方便的OpenWrt的嵌入式Linux开发环境: http://www.lupaworld.com/131820/viewspace-108558.html一些没什么内容的介绍
  3. [r]OpenWrt嵌入式Linux开发环境: http://www.dzkf.cn/html/qianrushixitong/2009/0525/3795.html 关于WRT的历史
  4. [i]一个小型的无线路由器Linux系统OpenWRT:http://www.cppblog.com/Khan/archive/2006/11/23/15573.html (还有很多关于nvram设置的提示)
  5. [u]OpenMoko移植OpenWrt: http://wiki.openmoko.org/wiki/OpenWrt/zh_cn
  6. [u]OpenWrt经验小结: http://blog.liuyi.info/openwrt (主要讲WRT54G有关的)
  7. [u]什么是OpenWrt: http://hi.baidu.com/fnsoxt/blog/item/c2414f10a6fa33fcc2ce79d7.html (简介)
  8. [r]OpenWrt/kamikaze/8.09.1/brcm-2.4/ 7231-4P路由器安装笔记:http://hi.baidu.com/westhack/blog/item/64cdcc455b58642fcefca361.html
  9. [r]备份CFE和NVRAM的命令: http://hi.baidu.com/westhack/blog/item/5a6bfe35aedcda1690ef3976.html
  10. [u]刷OpenWrt教程: http://hi.baidu.com/lnas/blog/item/15497166f835f02cab184c84.html (包含一些有用的外部链接)
  11. [r]OpenWrt Remote Admin: http://www.wantmoore.com/archives/2007/08/06/openwrt-remote-admin/

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

7   安装

直接下载的brcom没有bin版本,只有trx版,一个作者尝试该文件名直接刷,刷成砖头了,重新做nvram以后居然可用了。

7.4   MTD方式安装

  1. 下载固件:

    wget http://downloads.openwrt.org/kamikaze/...../openwrt-brcom-2.4-squashfs.trx
    
  2. 使用mtd刷新进去:

    mtd -r write openwrt-brcm-2.4-squashfs.trx linux
    

7.5   对改装的路由恢复64MB内存设置

  1. telnet登录: telnet 192.168.1.1

  2. 用户名root,密码admin

  3. 输入如下命令,一共5行:

    nvram set sdram_init=0x0008
    nvram set sdram_config=0x0033
    nvram set sdram_ncdl=0x0000
    nvran commit
    reboot
    
  4. 不要断电,等待路由重启完成

恢复32MB内存的命令:

nvram set sdram_init=0x0008 #另一说0x000a
nvran set sdram_ncdl=0x0000
nvran commit
reboot

8   后期配置

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来进行配置了。主要顺序如下:

  1. 修改交换机端口
  2. 修改路由器的IP地址以及内网网段
  3. 修改无线AP的配置
  4. 修改PPPoE的配置
  5. 重启路由器

这时应该就可以上网了,默认情况下对内网的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/libmount /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 3322option user     username:passwordoption server   www.3322.orgoption 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.shconfig_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
转自:http://blog.csdn.net/ffilman/article/details/5754989

openwrt 网上资料搜集相关推荐

  1. openwrt网上资料

    OpenWrt的网上笔记 笔记: gashero 日期: 2009-09-04 目录 1   简介 2   参考文献 3   OpenWrt介绍 3.1   NVRAM操作 4   准备工作 5    ...

  2. [转]openwrt网上资料

    原文地址:http://blog.csdn.net/ffilman/article/details/5754989# OpenWrt的网上笔记 笔记: gashero 日期: 2009-09-04 目 ...

  3. 分享2011年10月网上随机搜集的超酷超有趣的web开发和Javascript代码

    日期:2011/10/26       来源:jquery4u.com    编译:GBin1.com 2011年10月份就快结束了,web开发世界也发生了很多有趣的事情.下面是GBin1编译的201 ...

  4. Java PathFinder (JPF) 在Eclipse和NetBeans中的配置方法(综合网上资料)

    因为要使用Java PathFinder (JPF),我综合了一下网上搜到的资料.首先谢谢提供这些资料的网友,文中都注明了转载出处.-- by orzorz 飞天硕鼠 一.Java PathFinde ...

  5. 资料搜集-JAVA系统的梳理知识9-高级计算机网络

    <!-- TOC -->- [1. SSL 与 TLS](#1-ssl-%E4%B8%8E-tls) - [2. 从网络协议的角度理解 HTTPS](#2-%E4%BB%8E%E7%BD% ...

  6. FPGA 资料搜集记录

    一套典型的开发板,其资源扩展板目前有卖两个版本 扩展板V5.0 V5系列是在V3的基础上,把flash由V3的2MByte统一升级为8Mbyte,V5实验板在V3的基础上, 增加了两个4位数码管,10 ...

  7. 手机扫描条形码二维码原理和实现等网上资料整理

    有志于要从事条形码和二维码开发的同学,和我一样想多了解这方面的东西.但是苦于网上资源甚少,我已经把现有资源整理如下. 原理.实现方案.代码资源.规则是否通用比如加密如何实现? ============ ...

  8. 资料搜集-JAVA系统的梳理知识18- Spring

    ## Spring相关教程/资料### 官网相关- [Spring官网](https://spring.io/).[Spring系列主要项目](https://spring.io/projects). ...

  9. 关于MOS功率与选型,网上资料的整理

    MOS管自身的功率 P = VDS * ID,VDS = ID * Rds,Rds是MOS管得导通电阻,可以通过查看芯片手册得知RDS. MOS管的实际功耗是怎样计算的呢?各位大神,最近迷茫中:P=U ...

最新文章

  1. Altium Designer -- PCB设置板框
  2. Spring3+ibatis (SQL Server)+pager-taglib.tld查询分页的实现
  3. java web 笔试 题_JavaWeb综合笔试题(带答案).doc
  4. 要么干,要么滚,千万别混
  5. oracle database link创建
  6. .net 手机问卷 源码_当.Net成为大厂门槛代码小白该何去何从?
  7. 两条信号之间加电容_电容是什么?怎么用?怎么买?
  8. OpenCV】透视变换 Perspective Transformation(续)
  9. Lena图像分解成小块与从小块合成
  10. 按键精灵手机助手之实战篇(二)防封
  11. java获取本年、本月、本周、本日开始时间结束时间
  12. 信息系统项目管理师(软考高项)
  13. 《手Q Android线程死锁监控与自动化分析实践》
  14. python与SQL学习比较
  15. vc6.0 如何添加全局变量
  16. 【MQTT基础篇(一)】MQTT介绍
  17. 在浏览器中嵌入播放器
  18. 敏捷的精髓在于即时反馈
  19. 360浏览器怎样清除缓存
  20. 人力资源管理案例-左右为难的经理

热门文章

  1. 九龙证券|聪明资金大幅加码!北上资金成交活跃股名单出炉
  2. 财付通绑定谷歌钱包的问题
  3. 十进制转八进制 c语言
  4. 全印展报道-OKI携个性化解决方案登录2018全印展
  5. c语言学号姓名德育学分,学生德育信息管理系统.cpp
  6. Code Runner:vscode一键运行插件
  7. 计算机类晋升高级职称业绩报告,高级职称评审,业绩材料怎么写?
  8. 转录组Trinity组装软件的介绍
  9. OpenVINO之二:Windows环境下OpenVINO安装与配置
  10. node.js生成条形码图片