卓泰科技 发表于 2015-2-16 22:21:48

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

原文信息

标题:【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    (*:TF卡在香蕉派读卡器中会被识别为/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,请原谅我联线时没有选择合适的颜色)
http://forum.godpub.com/data/attachment/forum/201502/07/213210rh1665ef5o4hn9re.jpg

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



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

http://forum.godpub.com/data/attachment/forum/201502/07/215135keww343e24hcijmc.png



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现在R1已经可以正常的上网了。
然后我们就可以安装需要的软件包了,这里我们要安装的是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 luciWeb访问地址:http://192.168.1.1/

详情请参考:
【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完全一样。
http://forum.godpub.com/data/attachment/forum/201502/15/121317j7t04v3topsc3k2v.png

类似于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.disabled=0
    # uci commit wireless
    # wifi现在使用设备(台式机、手机等)搜索无线网络,就会发现一个名为“OpenWrt"的WIFI热点。
连接即可用。
详情请参考:
【Joytag 香蕉R1学习】OpenWrt for R1 开启WIFI热点


Step 8:进一步设置

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

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



总结

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

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

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

卓泰科技 发表于 2015-2-16 22:41:55

辛苦一下午+半晚写的长文,被吃的面目全非。
悲催的是,吃掉的部分,自己都忘记写了什么。
重新整理思路,修补ing

卓泰科技 发表于 2015-2-16 23:43:43

终于补全了大半部分。
可惜我当时文思泉涌,妙笔生花:$
补出来的东西总感觉缺少点滋味呢。:'(

也没仔细检查是否仍有缺失错漏,先就这样吧。

卓泰科技 发表于 2015-2-17 23:35:48

不想折腾的可以直接从这里下载可用的镜像:
http://elastos.org/elorg_common/Lamobo-R1/2015-01-12/

另外,不同于trunk,这个快照会相对比较稳定
回头可以尝试用这个做一下整个流程
(只是不是最新):lol
页: [1]
查看完整版本: 【Joytag 香蕉R1学习】自己动手组装OpenWrt for R1(全)