请选择 进入手机版 | 继续访问电脑版

狗趴(GodPub),开源硬件学习与实践

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 10414|回复: 3

【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1(全)

[复制链接]

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
发表于 2015-2-16 22:21:48 | 显示全部楼层 |阅读模式
原文信息

标题:【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1(全)
连接:http://forum.godpub.com/thread-82-1-1.html
备注:狗趴论坛首发,转载请注明出处。



折腾缘起


大约两周前,我从朋友大球那里拿到了一枚BPI-R1,感谢追梦无偿提供R1板卡。

“香蕉派 BPI-R1是一款高性价比开源无线路由器,采用全志 A20 1.2G 双核 Cortex™-A7处理器; 无需加载任何设备,只需SD卡即可开机、运行系统并存储的高性价比智能无线路由器, 采用BCM53125 Switch芯片,满足有线网络传输10/100/1000Mbps的要求;无线支持 IEEE 802.11 b/g/n 2.4GHz,配置双外置天线加强无线传输信号,无线传输速率高达300Mbps”

尽管BPI官方已经提供了R1镜像的下载,但是本着学习和折腾的精神,
参考OpenWrt官方WIKI,自动动手组装了一个OpenWrt for R1。并具备如下特点:

  • 最新内核与软件包
  • 白纸般洁净的系统
  • 可以进一步折腾

同时为了不至于做完就忘,将做的每个步骤均已帖子的形式记录在狗趴论坛(http://forum.godpub.com),
期间苦逼的累着、折腾着、郁闷着、也快乐着,每个帖子都是见证也是汗水。

然则回头再看,自己如何走弯路别人未必多有兴趣关注,
另外帖子组织也略显混乱,相互之间尚有依赖关系,新手操作可能会略微头疼。
所以整理一个完整版,方便大家阅读和实践。


准备工作

  • BPI R1
  • TF卡(带卡套或者读卡器)
  • USB 转TTL  (用于连接电脑与R1串口)
  • 装有Linux系统的电脑或者虚拟机 (用于制作镜像以及写卡等。为了偷懒,我使用的BPI M1)
  • PC (用于登录控制R1以及测试网络连接等)



Step 1:制作镜像

  • 将TF卡通过USB读卡器插入M1
  • 保存并执行以下两个脚本

       使用方法:
       将两个文件保存到工作目录,假定为/root/R1, 执行以下命令:
      (待提示:......Finished!,并无其它错误提示,既制作成功)
  1.     # cd /root/R1
  2.     # chmod 777 getfiles.sh mksys.sh
  3.     # ./getfiles.sh
  4.     # ./mksys.sh /dev/sda   
复制代码
(*:TF卡在香蕉派读卡器中会被识别为/dev/sda,请务必清楚自己要操作的设备,以免对原系统造成破坏)

1)getfiles.sh (获取所需的文件)
  1.     wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/uboot-sunxi-Lamobo_R1/openwrt-sunxi-Lamobo_R1-u-boot-with-spl.bin
  2.     wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/uboot-sunxi-Lamobo_R1/openwrt-sunxi-Lamobo_R1-uEnv.txt
  3.     wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/uboot-sunxi-Lamobo_R1/openwrt-sunxi-Lamobo_R1-boot.scr
  4.     wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/sun7i-a20-lamobo-r1.dtb
  5.     wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/openwrt-sunxi-uImage
  6.     wget http://downloads.openwrt.org/snapshots/trunk/sunxi/generic/openwrt-sunxi-root.ext4
复制代码

2) mksys.sh (将OpenWrt for R1写入SD卡)
  1. if [ $# != 1 ] ; then
  2. echo "usage: $0 disk"
  3. echo " e.g.: $0 /dev/sda"
  4. exit 1;
  5. fi

  6. echo -e "\n#########   Prepare: Partition the disk    ########"

  7. disk=$1

  8. p1=${disk}1
  9. p2=${disk}2

  10. umount $p1
  11. umount $p2

  12. fdisk $1<<EOF
  13. p
  14. d
  15. 1
  16. d
  17. p
  18. n
  19. p
  20. 1

  21. +15M
  22. n
  23. p
  24. 2

  25. +240M
  26. t
  27. 1
  28. c
  29. p
  30. w
  31. EOF

  32. echo -e "\n......1) Copy the SPL + U-boot image to the card"
  33. dd if=openwrt-sunxi-Lamobo_R1-u-boot-with-spl.bin of=$disk bs=1024 seek=8

  34. echo -e "\n......2) Create a boot (FAT32) partition"
  35. mkfs.vfat ${disk}1

  36. echo -e "\n......3) Mount the boot partition"
  37. mount -t vfat ${disk}1 /mnt

  38. echo -e "\n......4) Copy the U-Boot environment file uEnv.txt to the boot partition"
  39. cp openwrt-sunxi-Lamobo_R1-uEnv.txt /mnt/uEnv.txt

  40. echo -e "\n......5) Copy the device tree data to the boot partition"
  41. cp sun7i-a20-lamobo-r1.dtb /mnt/dtb

  42. echo -e "\n......6) Copy the kernel image to the boot partition."
  43. cp openwrt-sunxi-uImage /mnt/uImage

  44. echo -e "\n......7) Copen the boot.scr to the boot partition."
  45. cp openwrt-sunxi-Lamobo_R1-boot.scr /mnt/boot.scr

  46. echo -e "\n......8) Resize the root filesystem image to match the partition size."
  47. resize2fs openwrt-sunxi-root.ext4 240M

  48. echo -e "\n......9)  Create the root filesystem."
  49. dd if=openwrt-sunxi-root.ext4 of=${disk}2 bs=128k

  50. echo -e "\n......10) Wrap up (flush buffers and unmount boot partition)."
  51. sync
  52. umount /mnt
  53. echo -e "\n......Finished!"
复制代码
详情请参考:
【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1
【Joytag 香蕉R1学习】OpenWrt for R1 组装脚本



Step 2:连接R1串口与电脑

通过串口连接R1与电脑,是比较便捷的方式,尤其是设置和调试过程中。

连线方式
  • 电源:(5V 2A MicroUSB接口:图中右下角红圈部分)
  • 串口:(TX, RX, GND:右上角红圈部分,蓝色GND、白色TX、黑色RX,请原谅我联线时没有选择合适的颜色)


通过USB-TTL连接PC与R1。
PC上,我使用Putty软件,设置如图。

putty.PNG

R1上电后,我们会在Putty窗口看到R1的启动信息。
带启动信息输出完毕,回车,即可登录到我们之前组装的OpenWrt For R1





Step 3:连接以太网,安装swconfig,有线路由


按照如下方式连接设备:
  • R1 WAN口通过网线连接至上级路由LAN口
  • PC网口通过网线连接至R1 LAN口

我们期望R1正常的接入网络并起到路由功能,这样PC就可以通过R1上网了。
而事实上,因为缺失swconfig软件包,网络配置文件无法被正确的应用, R1无法上网并起到路由功能。

swconfig是用来配置以太网交换机的工具。
首先我们需要安装这个软件包。

1)备份原有的网络配置文件
  1.     # mv /etc/config/network /etc/config/network_owrt
复制代码

2)写入新的网络配置文件
  1. config interface 'loopback'
  2.         option ifname 'lo'
  3.         option proto 'static'
  4.         option ipaddr '127.0.0.1'
  5.         option netmask '255.0.0.0'

  6. config interface 'wan'
  7.         option ifname 'eth0'
  8.         option proto 'dhcp'
复制代码

3)开启wan口
  1.     # ifup wan
复制代码
现在R1已经可以正常的上网了。
然后我们就可以安装需要的软件包了,这里我们要安装的是swconfig

4)安装swconfig
  1.     # opkg update
  2.     # opkg install swconfig
复制代码

5)恢复原始的网络配置
  1.     # cp  /etc/config/network_owrt /etc/config/network
复制代码

6)重启网络
  1.     # /etc/init.d/network reload
复制代码

现在有线网络功能已经正常了,如果将台式机网口连接只R1 LAN口,既可通过R1上网。
也就是说R1有线路由功能工作正常。

详情请参考:
【Joytag 香蕉R1学习】让新系统(OpenWrt for R1)上网



Step 4:Telnet,SSH, LuCI

根据官网信息,现在的系统状态应该是
  • IP地址:192.168.1.1
  • Telnet已开启
  • SSH已禁用
  • 尚未安装LuCI(亦即无法通过Web界面访问和控制)

通过串口或者Telnet连接R1,输入:
  1.     # passwd
复制代码
回车,按提示输入两次新密码,密码即设置成功。
如此即会开启SSH,并禁用Telnet。

开启Web访问功能也很简单,安装luci和附属软件包即可。
  1.     # opkg update
  2.     # opkg install luci
复制代码
Web访问地址:http://192.168.1.1/

详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1有线路由, Telnet,SSH, LuCI



Step 5:开启SFTP以及使用PSCP

这部分比较简单而且也不是必须的,但是为了方便电脑与R1交换文件,还是加上吧。

不同于OpenSSH默认开启sftp子系统,OpenWrt使用Dropbear提供SSH服务需要安装sftp软件包。
  1.     # opkg update
  2.     # opkg install openssh-sftp-server
复制代码

现在我们就可以使用Filezilla通过sftp登录R1了。
FileZilla设置很简单,只需在协议中选择SFTP就可以了。其它的和使用普通的FTP完全一样。


类似于Linux系统下的scp命令,在windows下我们可以使用pscp与R1交换数据。

首先,下载pscp.exe并保存至: windows/system32目录下。
我们就可以在windows命令行窗口下使用pscp命令了。
命令与scp一致,比如将R1 root目录下file1复制到本地当前目录下:
  1. pscp root@192.168.1.1:/root/file1 ./
复制代码
按提示输入密码即可。

与SFTP类似,pscp也依赖于sftp服务,
如果没有按上文方式开启SFTP,那么会提示以下错误信息:
  1. ash: /usr/libexec/sftp-server: not found

  2. Fatal: Received unexpected end-of-file from server
复制代码

详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1 开启SFTP以及使用PSCP



Step 6:配置R1主机名、时区、LED

这部分内容无关紧要,仅仅作为对使用不同方法配置系统以及对其相关机制进行一些探索。
详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1:设置主机名、时区、LED



Step 7:开启WIFI热点


尽管折腾WIFI热点的过程曲折而又惨痛,但实际上WIFI热点功能还是很简单的。

执行以下指令:
  1.     # opkg update
  2.     # opkg install kmod-rtl8192cu
  3.     # opkg install hostapd
复制代码

重启R1后,执行:
  1.     # uci set wireless.@wifi-device[0].disabled=0
  2.     # uci commit wireless
  3.     # wifi
复制代码
现在使用设备(台式机、手机等)搜索无线网络,就会发现一个名为“OpenWrt"的WIFI热点。
连接即可用。
详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1 开启WIFI热点


Step 8:进一步设置

现在一个全新的,并且完全定制的系统已经诞生了。
像一张白纸,任你绘画。

你可以为无线设置密码、设置防火墙、安装你需要的软件包,实现VPN上网等等。
这些就不在本文讨论的范围内啦。



总结

本文对之前折腾的内容做了简明扼要的总结,便于新手参考。
因为我也是这一两周刚接触R1以及OpenWrt系统,算是一个爱折腾菜鸟,
所以对一些技术细节讨论的不够深入,同时也难免有错漏之处。
希望大家不吝赐教,我也会不断更新此文,使之更加完善。

同时,我也在努力制作一个安装脚本,以期自动完成以上大部分内容,
待完成后,会在这里共享给大家参考。

注:Trunk分支有风险,使用需谨慎。

天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
 楼主| 发表于 2015-2-16 22:41:55 | 显示全部楼层
辛苦一下午+半晚写的长文,被吃的面目全非。
悲催的是,吃掉的部分,自己都忘记写了什么。
重新整理思路,修补ing
天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
 楼主| 发表于 2015-2-16 23:43:43 | 显示全部楼层
终于补全了大半部分。
可惜我当时文思泉涌,妙笔生花
补出来的东西总感觉缺少点滋味呢。

也没仔细检查是否仍有缺失错漏,先就这样吧。
天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。

84

主题

143

帖子

725

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
725
QQ
 楼主| 发表于 2015-2-17 23:35:48 | 显示全部楼层
不想折腾的可以直接从这里下载可用的镜像:
http://elastos.org/elorg_common/Lamobo-R1/2015-01-12/

另外,不同于trunk,这个快照会相对比较稳定
回头可以尝试用这个做一下整个流程
(只是不是最新)
天理路上甚宽,稍游心,胸中便觉广大宏朗;
人欲路上甚窄,才寄迹,眼前俱是荆棘泥涂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|狗趴(GodPub) Arduino&Raspberry Pi开源硬件学习与实践[QQ群:20085629]  

GMT+8, 2024-3-29 01:33 , Processed in 0.048237 second(s), 37 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表