请严格按照以下步骤进行
准备头文件
下载编译需要的头文件:
$sudo apt-get install pcduino-linux-headers-3.4.29+
更新内核支持NAT
编译或直接下载内核
打开这个链接,下载下面提供的内核文件:pcduino_a10_hwpack_20131226.tar
如果你有时间的话也可以按照他的教程来自己编译内核。也可以参考这里
内核安装
首先,将 pcduino_a10_hwpack_YYYYMMDD.tar.xz 放到pcDuino的~下。
-
为从nand 启动的板子更新kernel
依次执行如下命令:
$ tar xvf pcduino_a10_hwpack_YYYYMMDD.tar.xz -C /tmp $ sudo mount /dev/nanda /boot $ sudo cp /tmp/kernel/* /boot -f $ sudo mv /lib/modules/3.4.29+ /lib/modules/3.4.29_old $ sudo cp /tmp/rootfs/lib/modules/3.4.29+ /lib/modules/ -ar $ sudo sync $ sudo umount /boot/ $ sudo reboot
-
为从存储卡启动的板子更新kernel
依次执行如下命令:
$ tar xvf pcduino_a10_hwpack_YYYYMMDD.tar.xz -C /tmp $ sudo mount /dev/mmcblk0p1 /boot $ sudo cp /tmp/kernel/* /boot -f $ sudo mv /lib/modules/3.4.29+ /lib/modules/3.4.29_old $ sudo cp /tmp/rootfs/lib/modules/3.4.29+ /lib/modules/ -ar $ sudo sync $ sudo umount /boot/ $ sudo reboot
注意,此方法不会重装ubuntu
编译安装网卡驱动
参考这里
先执行一下:
$sudo apt-get update
$sudo apt-get install isc-dhcp-server
然后下载驱动:
http://pan.baidu.com/s/1xfP8K
然后执行如下命令:
$cd /usr/src/linux-headers-3.4.29+/arch
$sudo cp arm armv7l -rf
$sudo reboot
然后删除原有的8188cu.ko
$sudo rm /lib/modules/3.4.29+/kernel/drivers/net/wireless/rtl8192cu/8192cu.ko
注意,这里做完后最好不要重启,一重启网卡便连不上了,otg和无线都无效,只能通过hdmi或者debug port继续进行下一步
然后执行:
$unzip RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.zip
$cd RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911
$chmod +x install.sh
$sudo ./install.sh
等大概5min。
安装hostapd
执行如下命令:
$git clone https://github.com/jenssegers/RTL8188-hostapd
$cd RTL8188-hostapd/hostapd
$sudo make install
等大概5min
然后执行:
$cd RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911/wpa_supplicant_hostapd
$tar xvf wpa_supplicant_hostapd-0.8_rtw_r7475.20130812.tar.gz
$cd wpa_supplicant_hostapd-0.8_rtw_r7475.20130812/hostapd/ (这里和教程不一样)
$sudo make install
等大概5min
配置hostapd
这里注意一下,在控制台输入:
$ifconfig
出现类似:
wlan4 Link encap:以太网 硬件地址 00:**:**:**:**:**
inet 地址:192.168.1.1 广播:192.168.1.255 掩码:255.255.255.0
inet6 地址: ***::***:*******:17fd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 跃点数:1
接收数据包:23487 错误:0 丢弃:8569 过载:0 帧数:0
发送数据包:22220 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:4629020 (4.6 MB) 发送字节:10508030 (10.5 MB)
时,记下来你的无线网卡标识(这里是wlan4
)。
然后,执行:
$sudo vi /etc/hostapd/hostapd.conf
然后修改:
interface=wlan* #根据你自己的接点修改(上面获得的标识),我的是wlan4。
保存以后执行:
$sudo service hostapd restart
然后你应该会看到hostapd成功运行了。
配置AP固定ip
执行:
$sudo vi /etc/network/interfaces
在后面添加:
auto wlan4 #注意这里要和上面一样
iface wlan4 inet static
address 192.168.1.1
netmask 255.255.255.0
配置dhcp
执行:
$vi /etc/dhcp/dhcpd.conf
在最后添加:
subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.2 192.168.1.200;
option routers 192.168.1.1;
}
执行:
$sudo service isc-dhcp-server restart
应该可以看到isc-dhcp-server正常启动了。
设置开机启动
注意,这一步很重要,如果不设置开机启动,那么重启以后,wifi连不上,otg连不上,只能接hdmi或者debug port了。
依次执行:
(hostapd启动后dhcpd才能启动,dhcpd关闭hostapd才关闭)
$update-rc.d hostapd defaults 80 20
$update-rc.d isc-dhcp-server defaults 90 10
配置NAT
执行:
$sudo vim /etc/modules
修改该文件:
8192cu
rt5370sta
tun #插入这一行
然后安装:
$sudo apt-get install iptables
reboot
重启完后(会比之前久一点),你会搜到wifi热点信号了。能连上,但是不能上网,于是我们继续。
设置转发
参考这里
开机后执行:
$sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
$sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
这时,你再重连一下热点,你会发现可以上网了!
设置开机启动转发
每次开机都要输入命令才能上网太麻烦了。我们把它设置成开机启动:
执行:
$sudo vi /etc/sysctl.conf
将#net.ipv4.ip_forward=1
的#
去掉。
然后执行:
sudo crontab -e
添加:
@reboot sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
现在开机就可以连上网了!
但是!
刷完内核以后,发现gpio驱动不见了。整个/lib/modules/3.4.29+/kernel/drivers/hardwarelib/
驱动都丢失了。搜索讨论了一番,应该是官方img里面的编译设置不是默认的设置(坑!)。
我们可以将官方的hardwarelib文件夹拷贝回来解决这个问题。到这里下载lib文件,放到~目录下。然后执行:
$ unzip hardwarelib.zip
$ sudo mv hardwarelib/ /lib/modules/3.4.29+/kernel/drivers/
$ sudo modprobe gpio
$ sudo modprobe adc
输入:
$ io_test
如果没有输出** faild,那么就成功了。