全志H5 Ubuntu系统通过VPN下载源码编译
Posted 吴川斌的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全志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连接。
我们在当前用户目录下创建一个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
拉个谷歌的首页来测试一下,
以上是关于全志H5 Ubuntu系统通过VPN下载源码编译的主要内容,如果未能解决你的问题,请参考以下文章
全志H3系统移植 | 移植主线最新uboot 2023.04和kernel 6.1.11到Nanopi NEO开发板