标题:【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!,并无其它错误提示,既制作成功)
-
# cd /root/R1
-
# chmod 777 getfiles.sh mksys.sh
-
# ./getfiles.sh
- # ./mksys.sh /dev/sda
1)getfiles.sh (获取所需的文件)
-
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
2) mksys.sh (将OpenWrt for R1写入SD卡)
-
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!"
【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软件,设置如图。
R1上电后,我们会在Putty窗口看到R1的启动信息。
带启动信息输出完毕,回车,即可登录到我们之前组装的OpenWrt For R1
Step 3:连接以太网,安装swconfig,有线路由
按照如下方式连接设备:
- R1 WAN口通过网线连接至上级路由LAN口
-
PC网口通过网线连接至R1 LAN口
我们期望R1正常的接入网络并起到路由功能,这样PC就可以通过R1上网了。
而事实上,因为缺失swconfig软件包,网络配置文件无法被正确的应用, R1无法上网并起到路由功能。
swconfig是用来配置以太网交换机的工具。
首先我们需要安装这个软件包。
1)备份原有的网络配置文件
- # mv /etc/config/network /etc/config/network_owrt
2)写入新的网络配置文件
-
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'
3)开启wan口
- # ifup wan
然后我们就可以安装需要的软件包了,这里我们要安装的是swconfig
4)安装swconfig
-
# opkg update
- # opkg install swconfig
5)恢复原始的网络配置
- # cp /etc/config/network_owrt /etc/config/network
6)重启网络
- # /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,输入:
- # passwd
如此即会开启SSH,并禁用Telnet。
开启Web访问功能也很简单,安装luci和附属软件包即可。
-
# opkg update
- # opkg install luci
详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1有线路由, Telnet,SSH, LuCI
Step 5:开启SFTP以及使用PSCP
这部分比较简单而且也不是必须的,但是为了方便电脑与R1交换文件,还是加上吧。
不同于OpenSSH默认开启sftp子系统,OpenWrt使用Dropbear提供SSH服务需要安装sftp软件包。
-
# opkg update
- # 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复制到本地当前目录下:
- pscp root@192.168.1.1:/root/file1 ./
与SFTP类似,pscp也依赖于sftp服务,
如果没有按上文方式开启SFTP,那么会提示以下错误信息:
-
ash: /usr/libexec/sftp-server: not found
-
- 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热点功能还是很简单的。
执行以下指令:
-
# opkg update
-
# opkg install kmod-rtl8192cu
- # opkg install hostapd
重启R1后,执行:
-
# uci set wireless.@wifi-device[0].disabled=0
-
# uci commit wireless
- # wifi
连接即可用。
详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1 开启WIFI热点
Step 8:进一步设置
现在一个全新的,并且完全定制的系统已经诞生了。
像一张白纸,任你绘画。
你可以为无线设置密码、设置防火墙、安装你需要的软件包,实现VPN上网等等。
这些就不在本文讨论的范围内啦。
总结
本文对之前折腾的内容做了简明扼要的总结,便于新手参考。
因为我也是这一两周刚接触R1以及OpenWrt系统,算是一个爱折腾菜鸟,
所以对一些技术细节讨论的不够深入,同时也难免有错漏之处。
希望大家不吝赐教,我也会不断更新此文,使之更加完善。
同时,我也在努力制作一个安装脚本,以期自动完成以上大部分内容,
待完成后,会在这里共享给大家参考。
注:Trunk分支有风险,使用需谨慎。