在上一篇中讲到openwrt的编译安装:
http://www.cnblogs.com/yeqluofwupheng/p/7296218.html
但是烧写进去,启动系统后发现它的默认配置是路由器,所以地址是192.168.1.1的形式,如果你不是把它做路由器的系统来用,那就要重新配置openwrt的网络。下面介绍一些它的网络设置。
在此之前先远程登录树莓派openwrt
首先检查是否安装了ssh(使用dpkg -l | grep ssh),没有的话,使用命令:
apt-get install ssh
然后使用命令:ssh username@address来连接,其中username是远程的计算机账户名,address是远程计算机IP,例如:ssh root@192.168.1.109
注意:
首次连接,可能提示“the authenticity of the host can’t be established”。没有关系,回答yes进行连接,输入密码即可。
如果你登录一个标准的Shell会话,命令行提示符是“用户名@远程计算机的名称”
如果希望通过SSH运行图形程序,可以使用:ssh -X username@address
连接以后,输入程序的名称即可。譬如,启动gedit,输入gedit即可。另外注意,尽管程序出现在你的计算机上面,但是它依然是运行在远程计算机上面。如果启动OpenOffice或者其他复杂的图形程序,可能有一段时间的延迟。
然后介绍如何修改IP地址
方法一:
vi etc/config/network
将option ipaddr '192.168.1.1'中的地址改为 192.168.1.109(按i进入修改,修改完成按esc退出编辑,接着:wq保存退出),然后保存退出,然后再重启树莓派(如果使用命令可以使用reboot),就发现IP地址被改为192.168.1.109了.
方法二:在源代码中设置IP
前面是通过在树莓派上面修改配置文件的方式来修改IP,这样做虽然简单,但是每当我们重新烧写固件后,都要通过这个方式重新修改IP,这样太麻烦。那么,接下来我们就来通过修改源码的方式,来修改IP,这样就能编译出一个初始IP是192.168.1.109的镜像。
如果大家对OpenWrt系统的启动流程有一定的了解的话,我们就知道,系统在启动的时候,会通过运行uci-defaults.sh这个脚本程序来设置 IP 等基本参数。该脚本文件位于系统源码的openwrt/trunk/package/base-files/files/lib/functions目录,那么接下来我们就来修改该脚本文件,从而修改IP 地址,输入命令:
/home/Linux/openwrt/trunk$vi./package/base-files/files/lib/functions/uci-defaults.sh
新版本在目录:
./package/base-files/files/bin/config_generate
然后我们就可以在该脚本程序中看到,它的IP地址设置为192.168.1.1,将它改成你希望的IP就可以了。
更改了IP之后,可能还是无法上网,可以按照下面的流程检查:
1.网络设置有问题
因为openwrt配置是按照路由器的方式配置的,连上网线后可能与当前路由器冲突。例如:我是使用ssh远程登录树莓派,如果不关闭dhcp,就会出现树莓派和原本的路由器两边给我的主机分配ip使得主机这边冲突而无法上网。所以需要关闭openwrt中的dhcp。
如何关闭openwrt上的dhcp服务:
#./etc/init.d/dnsmasq stop
#./etc/init.d/dnsmasq disable
但是这样树莓派上的openwrt还是不能上网,原因是openwrt上的网络设置是路由器的设置,因此,他是没有设置网关,但是现在我不把他当作路由来用,只是使用它的系统,就要修改网络配置。
很简单,在/etc/config/network里面有树莓派的网络配置,跟正常的设置比较一下发现没有网关的设置,于是加上
option gateway '192.168.2.1'
这样ping 202.108.22.5就可以ping通。
2.dns有问题
但是,有了上面的设置你会发现"ping www.baidu.com"还是ping不通。这说明dns的配置有问题。
先介绍一个工具用来检查dns,就是nslookup命令。
nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。而且,它在linux下和windows下面都能用。
用法参考:blog.csdn.net/violet_echo_0908/article/details/52033725
那么如何配置dns呢?
首先最直接的方法在/etc/resolv.conf中添加dns地址:
vi /etc/resolv.conf nameserver 8.8.8.8
nameserver 8.8.4.4
但是这样只能使用一时,你会发现每次重启网络或重启系统就要重新添加上面的dns地址。
那么怎样永久的添加dns的地址呢?
从文件的链接关系可以看出来dns地址是记录在/tmp/resolv.conf.auto里面的,其他/etc/resolv.conf和/tmp/resolv.conf都是/tmp/resolv.conf.auto的链接,正常的思路是在/tmp/resolv.conf.auto里面添加dns地址就可以保证dns正常,但是实际上,在这里添加后,重启系统/tmp/resolv.conf.auto就会被清空,正确说应该是每次重启系统/tmp/resolv.conf.auto都会重新新建一次,你可以尝试删除它,重启后还是会恢复。
这样只要找到创建改文件的脚本然后不让它重新创建,后者创建后自动添加dns就可以了,但是可惜我没有找到脚本的位置,没办法我尝试在编译的时候就将dns的地址写进去,可不可以这样做呢?
我在下面这五个文件(整个编译的代码里面只有这个五个文件有直接设置dns的)中添加了dns的地址,这是我的思路不能保证都成功:
/home/openwrt/openwrt-master/staging_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.14_eabi/root-brcm2708/etc/init.d/dnsmasq:
/home/openwrt/openwrt-master/build_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.14_eabi/root-brcm2708/etc/init.d/dnsmasq:
/home/openwrt/openwrt-master/build_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.14_eabi/dnsmasq-nodhcpv6/dnsmasq-2.75/ipkg-brcm2708/dnsmasq/etc/init.d/dnsmasq:
/home/openwrt/openwrt-master/package/network/services/dnsmasq/files/dnsmasq.init:
/home/openwrt/openwrt-master/build_dir/target-arm_cortex-a53+neon-vfpv4_musl-1.1.14_eabi/root-brcm2708/etc/rc.d/S60dnsmasq:
/home/openwrt/openwrt-master/package/network/services/ipset-dns/files/ipset-dns.config:(改文件是配置文件可以不用添加dns的地址)
3.扩展SD卡空间
处理好上面的问题,也还不能开始使用openwrt系统,因为,你运行#df -h命令,发现它的磁盘空间只有几百M,但是TF卡是有几十G的,这是怎么回事呢?
熟悉树莓派的就知道,树莓派第一次安装系统也是这样,需要在配置选项里面选择扩展SD卡空间,才能使他的空间和SD的实际空间一样大,但是openwrt里面没有这样的配置选项,那么如何扩充空间呢?
实际上可以下载一个工具gparted,通过那个工具来扩充SD卡的空间。网上有教程我这里就不赘述了,操作也很简单,可以参考这篇博客:
http://blog.csdn.net/eric_lmy/article/details/51785912
其他
上面是安装openwrt但是不使用它路由器的功能,而是使用它的SDK的一些设置,但实际上你就是想做个路由器,那可以参考下面的几篇博客:
http://shumeipai.nxez.com/2015/07/28/install-openwrt-will-be-transformed-into-a-versatile-router-raspberry-pi.html
http://blog.csdn.net/AGrapier/article/details/51971535