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


#1

原文信息

标题:【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。并具备如下特点:

[list]
*]最新内核与软件包
*]白纸般洁净的系统
*]可以进一步折腾
[/list]
同时为了不至于做完就忘,将做的每个步骤均已帖子的形式记录在狗趴论坛(http://forum.godpub.com),
期间苦逼的累着、折腾着、郁闷着、也快乐着,每个帖子都是见证也是汗水。

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

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

Step 1:制作镜像

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

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

  1. mksys.sh (将OpenWrt for R1写入SD卡)
    [list=1]
    *]if $# != 1 ] ; then
    *]echo “usage: $0 disk”
    *]echo " e.g.: $0 /dev/sda"
    *]exit 1;
    *]fi
    *]
    *]echo -e “\n######### Prepare: Partition the disk ########”
    *]
    *]disk=$1
    *]
    *]p1=${disk}1
    *]p2=${disk}2
    *]
    *]umount $p1
    *]umount $p2
    *]
    *]fdisk $1<<EOF
    *]p
    *]d
    *]1
    *]d
    *]p
    *]n
    *]p
    *]1
    *]
    *]+15M
    *]n
    *]p
    *]2
    *]
    *]+240M
    *]t
    *]1
    *]c
    *]p
    *]w
    *]EOF
    *]
    *]echo -e “\n…1) Copy the SPL + U-boot image to the card”
    *]dd if=openwrt-sunxi-Lamobo_R1-u-boot-with-spl.bin of=$disk bs=1024 seek=8
    *]
    *]echo -e “\n…2) Create a boot (FAT32) partition”
    *]mkfs.vfat ${disk}1
    *]
    *]echo -e “\n…3) Mount the boot partition”
    *]mount -t vfat ${disk}1 /mnt
    *]
    *]echo -e “\n…4) Copy the U-Boot environment file uEnv.txt to the boot partition”
    *]cp openwrt-sunxi-Lamobo_R1-uEnv.txt /mnt/uEnv.txt
    *]
    *]echo -e “\n…5) Copy the device tree data to the boot partition”
    *]cp sun7i-a20-lamobo-r1.dtb /mnt/dtb
    *]
    *]echo -e “\n…6) Copy the kernel image to the boot partition.”
    *]cp openwrt-sunxi-uImage /mnt/uImage
    *]
    *]echo -e “\n…7) Copen the boot.scr to the boot partition.”
    *]cp openwrt-sunxi-Lamobo_R1-boot.scr /mnt/boot.scr
    *]
    *]echo -e “\n…8) Resize the root filesystem image to match the partition size.”
    *]resize2fs openwrt-sunxi-root.ext4 240M
    *]
    *]echo -e “\n…9) Create the root filesystem.”
    *]dd if=openwrt-sunxi-root.ext4 of=${disk}2 bs=128k
    *]
    *]echo -e “\n…10) Wrap up (flush buffers and unmount boot partition).”
    *]sync
    *]umount /mnt
    *]echo -e “\n…Finished!”
    [/list]
    复制代码
    详情请参考:
    【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1
    【Joytag 香蕉R1学习】OpenWrt for R1 组装脚本

**Step 2:连接R1串口与电脑

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

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

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

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

**

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

按照如下方式连接设备:
[list]
*]R1 WAN口通过网线连接至上级路由LAN口
*]PC网口通过网线连接至R1 LAN口
[/list]
我们期望R1正常的接入网络并起到路由功能,这样PC就可以通过R1上网了。
而事实上,因为缺失swconfig软件包,网络配置文件无法被正确的应用, R1无法上网并起到路由功能。

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

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

2)写入新的网络配置文件
[list=1]
*]config interface ‘loopback’
*] option ifname ‘lo’
*] option proto ‘static’
*] option ipaddr ‘127.0.0.1’
*] option netmask ‘255.0.0.0’
*]
*]config interface ‘wan’
*] option ifname ‘eth0’
*] option proto ‘dhcp’
[/list]
复制代码

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

4)安装swconfig
[list=1]
*] # opkg update
*] # opkg install swconfig
[/list]
复制代码

5)恢复原始的网络配置
[list=1]
*] # cp /etc/config/network_owrt /etc/config/network
[/list]
复制代码

6)重启网络
[list=1]
*] # /etc/init.d/network reload
[/list]
复制代码

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

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

Step 4:Telnet,SSH, LuCI

根据官网信息,现在的系统状态应该是
[list]
*]IP地址:192.168.1.1
*]Telnet已开启
*]SSH已禁用
*]尚未安装LuCI(亦即无法通过Web界面访问和控制)
[/list]
通过串口或者Telnet连接R1,输入:
[list=1]
*] # passwd
[/list]
复制代码
回车,按提示输入两次新密码,密码即设置成功。
如此即会开启SSH,并禁用Telnet。

开启Web访问功能也很简单,安装luci和附属软件包即可。
[list=1]
*] # opkg update
*] # opkg install luci
[/list]
复制代码
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软件包。
[list=1]
*] # opkg update
*] # opkg install openssh-sftp-server
[/list]
复制代码

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

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

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

与SFTP类似,pscp也依赖于sftp服务,
如果没有按上文方式开启SFTP,那么会提示以下错误信息:
[list=1]
*]ash: /usr/libexec/sftp-server: not found
*]
*]Fatal: Received unexpected end-of-file from server
[/list]
复制代码

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

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

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

**

Step 7:开启WIFI热点**

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

执行以下指令:
[list=1]
*] # opkg update
*] # opkg install kmod-rtl8192cu
*] # opkg install hostapd
[/list]
复制代码

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

**Step 8:进一步设置
**
现在一个全新的,并且完全定制的系统已经诞生了。
像一张白纸,任你绘画。

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

总结

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

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