069月 2018

0

1036

全志H5 Ubuntu系统通过VPN下载源码编译

老wu最近在玩全志的H5,用的是友善之臂的NanoPi NEO Plus2开发板,其基于全志的H5 SoC,拥有4个的ARM Cortex-A53的内核, ARMV8 64位架构,内置六核Mali450 GPU,集成1GB DDR3内存,标配 8GB eMMC高速闪存。

这款开发板非常小巧,尺寸仅有40x52mm,随身携带很方便,板载了AP6212 WiFi蓝牙模块,用充电宝通过标准的安卓线给它供电,就可以通过WIFI的方式SSH连接到开发板的系统,调试很方便。

以往,我们开发嵌入式Linux,往往都是基于交叉编译的方式,所谓的交叉编译,也即在某个主机平台上(比如PC上)用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。那为什么要这么折腾呢,因为早期的ARM 处理器性能相对于X86来说太烂,支持的内存也不够,只能作为嵌入式系统跑经裁剪过的Linux操作系统和执行特定任务的程序。

而现在,4核心ARM Cortex-A53性能已经不错了,跑Linux应该能达到初代P4单核的水平,内存也足够的大,基本都512MB了,甚至可达2GB了,跑个Ubuntu Server 版压力不大,而且还内置了六核Mali450 GPU,甚至可以跑Lubuntu桌面系统。

基于Ubuntu完善的包管理系统,我们完全可以把这块基于全志H5 SoC的开发板作为一个微型电脑,自己在开发板的Ubuntu里进行本地编译并可以立即运行程序并进行调试,非常方便。

但是有个情况,我们在编译一些开源软件项目的时候,这些开源项目往往依赖很多开源的库,在编译时需要通过脚本一并下载下来,而这些开源库存放路径,往往在国外的服务器上,但国内目前的网络环境,你懂得,国内下载这些开源库网络连接非常不稳定甚至会被咔嚓掉,这时后我们就要将源替换成对应的国内的镜像,或者要在PC上翻出去下载源码后再拷到开发板上,比较繁琐。

由于开发板中跑的是Ubuntu系统,他对VPN的支持跟PC上的Ubuntu是一样的,我们可以在编译的时候,直接在开发板的Ubuntu系统里开启VPN连接,这样下载国外的开源库就畅通无阻了。

老wu比较喜欢用Shadowsocks,Shadowsocks是一种基于Socks5代理方式的加密传输协议,目前包使用Python、C、C++、C#、Go语言等编程语言开发,大部分主要实现(iOS平台的除外)采用Apache许可证、GPL、MIT许可证等多种自由软件许可协议开放源代码。Shadowsocks分为服务器端和客户端,在使用之前,需要先将服务器端部署到服务器上面,然后通过客户端连接并创建本地代理。

这里主要是要在开发板的Ubuntu系统里安装Shadowsocks Client程序,由Clicent发起加密的连接与Shadowsocks Sever端交互数据。

在Ubuntu上安装Shadowsocks Client比较简单,官网给出的安装方式就是pip来安装,直接

pip install shadowsocks

搞定,但是友善的Ubuntu系统里安装的Python里并没有默认包含pip这个模块,我们需要先安装上pip。

安装pip,我们很容易想到的在PC上Ubuntu的包管理通过APT来安装,开始老wu也是通过

sudo apt install python-pip

来安装的,但安装下来的pip版本比较低,所以老wu参考官网给出的手动安装方式来安装pip

https://pip.pypa.io/en/stable/installing/

首先通过apt包管理器,先把curl装上

sudo apt install curl

然后安装pip安装到当前用户权限下
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py –user

由于是在用户目录下安装的pip,需要在用户环境变量PATH里包含pip的执行程序
vim ~/.bashrc 编译用户环境变量,加入

export PATH=$PATH:/home/pi/.local/bin

保存编辑后,source ~/.bashrc 使刚才编辑的环境变量生效,然后我们验证一下pip是否按照成功了

pip –version

接着通过

pip install shadowsocks –user

来安装shadowsocks 客户端

安装好shadowsocks 客户端后,我们便可以通过 sslocal 命令来发起VPN连接。

但建立VPN连接之前,我们需要创建一个shadowsocks的配置文件,告诉shadowsocks服务器地址,端口,密码及加密方式等等

我们在当前用户目录下创建一个shadowsocks.json 的配置文件:
vim ~/shadowsocks.json

其中shadowsocks.json的编辑内容如下:

{
“server”:”hk9.gs.jgjs.me”,
“server_port”:52xxx,
“local_address”: “127.0.0.1”,
“local_port”:1080,
“password”:”passwd”,
“timeout”:600,
“method”:”aes-256-cfb”
}

server为你购买的服务器IP,老wu的为hk9.gs.jgjs.me
server_port:服务器的端口,购买后VPN服务商会给你提供
“local_address”: “127.0.0.1”, “local_port”:1080, 保持默认即可
password:服务器密码,同样VPN服务商会提供
method:机密方式,一般为aes-256-cfb,以VPN服务商提供的信息为准

通过命令 sslocal -c ~/shadowsocks.json -q & 发起VPN连接

-q 参数为静默方式,这样shadowsocks在运行时就不会在控制台中输出日志信息,以免影响我们的正常使用

现在虽然shadowsocks已经在后台跑起来了,但还没完,还要解决socks转http代理问题,如shadowsocks名称所谓,shadowsocks默认走socks5代理,但我们通过curl或wget下载开源库需要走http

老wu这里采用github上边的方法,用polipo这个工具将socks代理转化为http代理。

https://github.com/shadowsocks/shadowsocks/wiki/Convert-Shadowsocks-into-an-HTTP-proxy

安装polipo:

sudo apt-get install polipo

配置:
停止polipo服务 sudo service polipo stop
编辑polipo配置文件/etc/polipo/config,添加如下内容:

socksParentProxy = localhost:1080
proxyPort = 1081

 

启动polipo服务 sudo service polipo start

使用:
http_proxy=http://localhost:8123 apt-get update

http_proxy=http://localhost:8123 curl www.google.com

http_proxy=http://localhost:8123 wget www.google.com

或者

编辑~/.bashrc 添加环境变量

export http_proxy=http://127.0.0.1:1081

git的话则配置 git config –global http.proxy 127.0.0.1:1081

搞定,开始享受吧。

可以

curl http://www.google.com

拉个谷歌的首页来测试一下,🙃

 

微信扫描二维码
为老wu 打个赏
pay_weixin
金额随意 快来“打”我呀 老wu要买六味地黄丸补补~~

原创文章,转载请注明: 转载自 吴川斌的博客 http://www.mr-wu.cn/

本文链接地址: 全志H5 Ubuntu系统通过VPN下载源码编译 http://www.mr-wu.cn/allwinnertech-h5-ubuntu-use-shadowsocks-client/