初次接触Raspberry Pi 无线网卡驱动 路由设置


:)  喜欢编程、图形、游戏、运动。


本文主要内容是如何将Raspberry Pi配置成一个具备路由功能的开发机。虽然网上已经有很多文章类似文章,但是我发现即便是完全按照步骤操作还是会遇到很多麻烦,例如:无线网卡驱动问题、路由自动启动问题、SD卡的读取问题等等。所以写此篇文章与大家分享一下经验,当然也欢迎大家提出问题,共同进步。:)

最近,入手了风靡全球的Raspberry Pi。这个设备真是一个不错的玩具,可以用你的智慧在上面实现很多非凡的想法和创意。搜索一下就会发现已经涌现出很多有趣的创意。而至于我入手的原因,主要为了能够利用长途路上的空闲时间进行web应用的移动式开发,像nodejs、ruby、html5、websocket、webgl。所以我将这个小Pi做成一个路由器兼linux开发机,然后用Android移动设备(本人屌丝无Apple设备)通过Secure Shell Client(强力推荐ConnectBot,其Google Play链接)进行开发,在移动设备的浏览器上进行测试。^_^

好了,我们开始吧。

第一步,设备清单,装配

本人购买的是一个四合一套装版,包括Raspberry Pi(Model B,Made In UK)、透明亚克力外壳(需手动拼装)、一张SD卡(4G,Class 4)、HDMI连接线,通过ICKey.cn购买(因为Pi官网提到了这个商家,不过它的新套餐居然更便宜了,而且感觉配件更实用,真的很无语),当然也还有很多其它渠道,如亚马逊、淘宝或者海外代购。其实Pi本身的价格虽然不高,但是随着功能的扩展和模块的添加,最后的价格也不会便宜。就拿我来讲,还要专门购买了一个无线网卡(TP-LINK TL-WN725N)。

在拿到货后先将外壳和线路板拼装起来,如下图,是手动拼装好后的Pi:

rpi_device_main_idle

ps:据其他网友讲拼这个外壳的时候还是要手轻些,以免掰折卡口。

第二步,准备SD卡和系统

Raspberry Pi官网下载系统镜像压缩包,由于个人平时使用ubuntu,所以就选用同样是基于Debian的Raspbian(其它系统并不了解)。下载完成后解压得到一个img文件,按照如下方法将该系统镜像写入SD卡中。

对于linux用户:

将SD卡与PC链接,通过如下命令写入系统。这个过程比较长,请耐心等待。

dd if=*raspbian镜像文件名*.img of=*设备路径*

ps:请根据自己的使用环境替换*raspbian镜像文件名*和*设备路径*

对于windows用户:

下载Win32DiskImager工具,解压后运行。同样将SD卡与PC链接,选择系统镜像,选择SD卡盘符,点击Write,将会把系统写入SD卡。

ps:这里与官网所描述没什么区别。更全面的讲解请参考:http://elinux.org/RPi_Easy_SD_Card_Setup

在做好系统后不要着急去启动,因为如果显示器分辨率比较低的话,你会发现屏幕无法显示所有内容。所以为了能够得到一个完整的显示,需要配置一下相应显示器的分辨率。

将写入系统的SD卡重新连接到PC上,你可以看到一个fat格式的盘符(ubuntu和windows都可以识别出来)。找到并打开该盘符下的config.txt文件,把其中的hdmi_group设置改为2,hdmi_mode设置改为11,去掉这两项前的“#”(如果有的话)。这个设置表示显示器的分辨率和频率分别为800×600和75Hz。当然还有很多其它分辨率可用,具体数值配置请参考此网址:http://elinux.org/RPi_config.txt

rpi_device_extend

第三步,首次启动和配置Pi,修复SD卡文件系统,更新系统

通电之前要将SD卡和无线网卡插入Pi,连接一根网线(我们需要通过网络更新系统和安装驱动),连接一个USB键盘作为输入设备,通过HDMI线连接显示器作为输出设备。使用当前很常见的一种电源线(Micro USB Power)给Pi供电。注意:Pi并没有电源开关,链接电源启动,拔掉电源则关机。

通电后系统将会进入首次启动配置页面(如果以后还想进行这样的配置运行‘sudo raspi-config’即可),请进行下列操作:

  1. 选择expand_rootfs,将系统容量进行扩展
  2. 选择boot_behaviour,将启动方式设置为console
  3. 选择change_pass,设置用户pi的密码。这个pi用户就是一个管理员账户
  4. 选择ssh,启用ssh
  5. 选择change_timezone,设置时区

完成以上5个配置后,在主菜单中选择Finish,即完成首次启动前的配置。

刚开始使用Pi时,总是会发生磁盘分区问题,导致一出现问题就重写SD卡。经过一番搜索后发现需要通过fsck对SD卡文件系统进行一次修复。估计是第一次启动的扩充系统容量操作会导致分区大小错误,从而出现后续写入的文件在重启后无法读取。

将SD卡重新链接到ubuntu上,运行如下脚本命令:

sudo fsck.ext4 -p /dev/sdd2

好了,至此我们的SD卡就已经准备完毕。

重启系统后通过用户名pi和密码(如果没有设置新密码则为raspberrypi)进入系统。在命令行模式下,通过如下命令更新系统:

sudo apt-get update && sudo apt-get upgrade

一段漫长的更新后,你就已经可以使用最新版的Raspberry Pi了。

第四步,编译安装无线网卡驱动(TP-LINK TL-WN725N 2.0)和软AP程序

由于当前Raspbian系统并没有提供TL-WN725N 2.0的驱动,所以在启动后无法识别到wlan设备。在这里要感谢《用raspberry-pi制作无线路由过程的札记2-编译8188eu芯片的无线网》和《raspberry pi 入手小记》文章的作者,感谢他们提供了编译安装TL-WN725N 2.0驱动和该网卡的软AP程序的方法,具体操作请转至这两篇文章。

如果你不想编译,后面‘相关链接’部分有已经编译好的驱动和软AP程序下载链接。然后通过下面命令安装该驱动:

sudo install -p -m 644 8188eu.ko  /lib/modules/3.6.11+/kernel/drivers/net/wireless/
sudo /sbin/depmod -a 3.6.11+

第五步,设置路由

此处要感谢《树莓派上手实战之把Raspberry Pi 配置成无线路由器》,这篇文章描述了如何使用hostapd和isc-dhcp-server将Pi制作成一个软路由。使用TL-WN725N 2.0无线网卡的用户要记住安装好hostapd后,请用我们上一步所编译好的hostapd和hostapd_cli覆盖/usr/sbin目录下的文件。完成文中所述操作后,平板或者手机就应该可以通过Pi来访问网络了。

这时会出现一个使用问题,每次开机后都要通过命令来开启路由功能。由于软路由的开启是两个模块组成的,所以最好的解决方法是自制一个启动服务脚本,然后使用update-rc.d来控制。我的启动脚本raspi-router,其内容如下:

#!/bin/sh
#
#

### BEGIN INIT INFO
# Provides:          raspi-router
# Required-Start:    $remote_fs $network $syslog
# Required-Stop:     $remote_fs $network $syslog
# Should-Start:      $local_fs slapd $named $network
# Should-Stop:       $local_fs slapd
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Router Server in Raspberry Pi
# Description: Activite hostapd and isc-dhcp-server in Raspberry Pi
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
	start)
		service hostapd start
		echo "Set the address of wlan0 to 192.168.91.1"
		ifconfig wlan0 192.168.91.1
		service isc-dhcp-server start
		;;
	stop)
		service hostapd stop
                service isc-dhcp-server stop
		;;
	restart | force-reload)
		service hostapd restart
                echo "Set the address of wlan0 to 192.168.91.1"
                ifconfig wlan0 192.168.91.1
                service isc-dhcp-server restart
		;;
	status)
		service hostapd status
                service isc-dhcp-server status
		;;
	*)
		echo "Usage: $0 {start|stop|restart|force-reload|status}"
		exit 1
esac

exit 0

注意:第23行和33行的192.168.91.1,这个地址是Pi作为路由的ip地址。如果你的有所不同,请自行更改。

将该脚本放到/etc/init.d目录下,运行以下脚本命令,将会安装并运行rcconf:

sudo apt-get install rcconf
sudo rcconf

选择rcconf界面中的raspi-router并确定,如下图:

rpi_rcconf

第六步,完成,测试

好了,按照上面所描述的方法和注意事项,你应该可以得到一个路由器兼开发机。通过手机或平板上的ssh应用程序即可访问该路由,并进行web应用开发。如果配上随身电源,那么不管走到哪里都可以连接到Pi上,访问你的web应用服务。在我的Pi上就运行着用nodejs+websocket开发的聊天服务,这样即便是在旅途中,周围的朋友都可以访问这个路由进行沟通(似乎有点多余:))。当然也可以做成文档服务器、游戏服务器、微社交服务器等等,就可以真正的实现移动办公、移动游戏、移动交友(瞎掰了)。

结束语

文中如有错误和问题,欢迎指正,欢迎咨询、欢迎交流、欢迎留言。

最后附一张截图,启动后的Pi:

rpi_device_main_run

相关链接

  1. 用raspberry-pi制作无线路由过程的札记2-编译8188eu芯片的无线网
  2. raspberry pi 入手小记
  3. 树莓派上手实战之把Raspberry Pi 配置成无线路由器
  4. 打包下载TL_WN725n驱动、软AP和路由启动脚本
  5. 单独下载TL_WN725n驱动、软AP(hostapdhostapd_cli)和路由启动脚本
Fork me on GitHub
关于

喜欢编程、图形、游戏、运动。

文章分类 Raspberry Pi 标签: , , , , , , ,

Info

Ohloh profile for Alex Chi





Github Alex Chi

An error occured with the GitHub API. Please try again later.