在路由器安装python之前,还是经过了一番折腾的。淘宝上买了个已经刷好系统的小米迷你路由器,但里面安装的不是预期的Pandorbox,而是LEDE。

这个固件已经带了大量自带的软件,128的内存实在太局促,改个密码分分钟都提示我空间爆了。

于是我决定刷个新的固件,这个命令很简单,后面的firmware还是OS1是通过cat /proc/mtd命令来确定的。

mtd -r write /tmp/PandoraBox.bin firmware

root@LEDE:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00030000 00001000 "u-boot"
mtd1: 00010000 00001000 "u-boot-env"
mtd2: 00010000 00001000 "factory"
mtd3: 00f80000 00001000 "firmware"
mtd4: 00128278 00001000 "kernel"
mtd5: 00e57d88 00001000 "rootfs"
mtd6: 00195000 00001000 "rootfs_data"
mtd7: 00010000 00001000 "crash"
mtd8: 00010000 00001000 "reserved"
mtd9: 00010000 00001000 "Bdata"

cat /proc/mtd

dev: size erasesize name
mtd0: 01000000 00010000 "ALL"
mtd1: 00030000 00010000 "Bootloader"
mtd2: 00010000 00010000 "Config"
mtd3: 00010000 00010000 "Factory"
mtd4: 00c80000 00010000 "OS1"
mtd5: 00b19a3b 00010000 "rootfs"
mtd6: 00200000 00010000 "OS2"
mtd7: 00100000 00010000 "overlay"
mtd8: 00010000 00010000 "crash"
mtd9: 00010000 00010000 "reserved"
mtd10: 00010000 00010000 "Bdata"

大概几分钟后路由器一直蓝灯,而pytty上一直显示rebooting,我才意识到该用网线把电脑和路由器连起来。并不像攻略上说的断了后自动会连上,还以为变砖,吓死了。幸好重启路由后发现无线网络上出现pandorabox的WIFI,然而,点进去却要求输入PIN码,没找到正确的,路由器盒子早扔了。
我意识到也许是路由器固件默认的IP不一样,192.168.0.1,192.168.1.1,192.168.31.1,总归有一个是正确的吧,重新插了网线,猜中了,是192.168.1.1,那么事情就简单了,进入网页配置页面设置好就行了。
潘多拉比LEDE好多了,主要是比较简洁,没安装那么多重复没用的软件,占用空间小。还有硬盘休眠,真是省心。然而,我还是没找到路由器的PIN码。

继续研究,想安装shadowsocks,

必须先安装luci,然后再安装shadowsocks才不会出错
[root@PandoraBox:/root]#opkg install /mnt/sda1/ipk/luci-app-shadowsocks-spec_1.3.0-1_all.ipk

[root@PandoraBox:/root]#opkg install shadowsocks-libev-spec

可是安装好后却死活运行不了,我注意到别人的pandorbox系统跟我的不大一样,既然处理器上显示MT7620A,那我还是找这个版本的pandorbox好了。

又开始刷固件
http://downloads.pandorabox.com.cn/Snapshoot/2016-09-22/mt7620-lite/

官方的刷机方法,把PandoraBox重命名为xxx.bin,然后插U盘刷机,但我试过没作用
正确的步骤是官方固件开启ssh后使用命令刷机
其中/tmp/PandoraBox-ralink-xiaomi-mini-r327-20141226.bin是刷机包的文件名。

cp /mnt/sda1/ipk/ramips/PandoraBox-ralink-mt7620.apk /tmp/PandoraBox-ralink-mt7620.apk
mtd -r write /tmp/PandoraBox-ralink-mt7620.apk firmware

刷了下面这个固件后,发现上不了网,外面的宽带是没问题,但借口的WLAN总是红色(后来发现红色是正常的),连接的无线网络上面也有个感叹号。在Luci上怎么弄都不行,我就琢磨着自己改/etc/config/network,照着以前的配置文件些,然后/init.d/network restart。后来就发现坏事了,路由器的IP地址连不上,熟悉的Luci界面换成了外部宽带进口的中国移动登录界面,随手按了下设备注册,这下就连外面的宽带连接也弄丢了。移动的人过来重新激活后,用旧的路由很顺利就连上。
新的路由信号明明很好,蓝灯亮着,但就是连不去外部网络,Luci界面也看不到。决定用手中的移动硬盘刷机,格式成exfat格式,拷入bin文件,拔电源。用牙签顶着reset的孔,再插上电源口,但依然亮着蓝灯,预想中的闪黄灯表示正在刷机,那么也许是不能识别exfat格式吧。下载了个disk genins,将硬盘格式为fat32,再试了试,依然不行。我很受打击,放弃前尝试了将旧路由正常使用,新路由插在旧路由的LAN口上,新路由和电脑用网线相连。。。铛铛铛,这次的192.168.1.1居然显示了个Breed Web控制台界面。看了里面的信息,确定是新路由无疑,看来这个是输入的PandorBox固件给装的,那么重新上传固件再刷一次就行了。于是终于把PandoraBox折腾回来了。
 
那么又是漫长的探索shadowsocks,安装运行都可以,也照着别人的设置。。。然而没有鸟用,没有成功过。我疑心是DNS污染的问题,但深受打击,无心继续研究了。

OpenWRT路由器上的ShadowSocks+ChinaDNS搭梯子方案
https://cn2.chionlab.moe/2016/01/23/openwrt-bypass-gfw-solution/

还是看下怎么安装python吧,这里又遇到了空间的问题,随便安装个什么就容易塞爆。这里我走了岔路,为了扩展分区到U盘,交换分区替换掉重启后路由器变成砖了,后来又靠bleed web才恢复过来。

在openwrt上将U盘格式化成ext分区可参考:http://blog.csdn.net/yufei_email/article/details/8805682
 
重新刷好后,我就想着把所有东西都装U盘上。
 
openwrt路由器安装Python教程


给opkg.conf加软件源,可是还是不能自动下载安装,只好自己下载了软件手动安装
http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/
 
加上dest usb /mnt/sdb1/opkg

[root@PandoraBox:/mnt/sda1/opkg/src]#opkg install libc
[root@PandoraBox:/mnt/sda1/opkg/src]#opkg -d usb install libreadline
[root@PandoraBox:/mnt/sda1/opkg/src]#opkg -d usb install python
[root@PandoraBox:/mnt/sda1/opkg/src]#opkg -d usb install python-json
[root@PandoraBox:/mnt/sda1/opkg/src]#opkg -d usb install python-curl

 
 
有很多依赖文件需要安装

[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/libgcc_4.8-linaro-1_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/libc_0.9.33.2-1_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/libpthread_0.9.33.2-1_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/zlib_1.2.8-1_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/python-mini_2.7.3-2_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/libffi_3.0.13-1_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/python_2.7.3-2_ramips_24kec.ipk
[root@PandoraBox:/mnt/sda1/opkg]#opkg -d usb install /mnt/sda1/ipk/libopenssl_1.0.2f-1_ramips_24kec.ipk
[root@PandoraBox:/mnt/sda1/opkg]#opkg -d usb install /mnt/sda1/ipk/python-openssl_2.7.3-2_ramips_24kec.ipk
[root@PandoraBox:/mnt/sda1/opkg/usr/bin]#opkg -d usb install /mnt/sda1/ipk/python-json_3_4-1_ramips_24kec.ipk
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/libpolarssl_1.3.9-2_ramips_24kec.ipk
Installing libpolarssl (1.3.9-2) to usb...
Configuring libpolarssl.
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/libcurl_7.38.0-1_ramips_24kec.ipk
Installing libcurl (7.38.0-1) to usb...
Configuring libcurl.
[root@PandoraBox:/root]#opkg -dest usb install /mnt/sda1/ipk/python-curl_7.19.0-1_ramips_24kec.ipk
Installing python-curl (7.19.0-1) to usb...
Configuring python-curl.
[root@PandoraBox:/mnt/sda1/projects/openwrtpytest/utils]#opkg -d usb install /mnt/sda1/ipk/libexpat_2.1.0-1_ramips_24kec.ipk
Installing libexpat (2.1.0-1) to usb...
Configuring libexpat.
[root@PandoraBox:/mnt/sda1/projects/openwrtpytest/utils]#opkg -d usb install /mnt/sda1/ipk/python-expat_2.7.3-2_ramips_24kec.ipk
Installing python-expat (2.7.3-2) to usb...
Configuring python-expat.

安装好后

root@PandoraBox:/mnt/sda1/opkg/usr/bin]#/mnt/sda1/opkg/usr/bin/python

Python 2.7.3 (default, Sep 24 2014, 18:21:25)
[GCC 4.8.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
 
设置环境变量
echo 'export PATH=$PATH:/mnt/sda1/opkg/usr/bin' >> /etc/profile
需要下次登录才生效,使用export可以查看PATH值
export
 
这样直接用python就可以使用了
装好后并非就万事无忧了,发现还有很多丰富好用的库要么装不了,要么运行不了

安装easy_install
[root@PandoraBox:/mnt/sda1/projects/openwrtpytest/utils]#sh /mnt/sda1/egg/setuptools-0.6c11-py2.7.egg

安装Pip
easy_install pip

python的基础库lxml卡在ctypes这个错误不能继续使用,如果我改变so文件会导致"' is not an ELF executable for MIPS",于是我干脆把ctypes里面出错的coding 注释掉,这样至少lxml可以解析了

pip也是会报错,所以我都是从一个虚拟机ubuntu上用pip安装好库后全部拷贝到
/mnt/sda1/opkg/usr/lib/python2.7
大部分可以直接使用,还有些是实在用不了,只好找替代库

python: '/mnt/sda1/opkg/usr/lib/python2.7/lxml/etree.so' is not an ELF executable for MIPS

BeautifulSoup , numpy , pandas,pyquery,lxml都不能用
py-linq,tinydb 替换 pandas
xmldict,HTMLParser,sgmlib替换 BeautifulSoup ,pyquery
pickledb替换redis

这些麻烦些也能用,然而,我至今没在上面安装成功数据库,mysql,mongodb,sqlite,redis,统统运行不了

失败的尝试就不写了。。。烦心

 

 
 

 

Openwrt路由器上安装python的更多相关文章

  1. Openwrt 路由器上 安装 svn server

    Openwrt 上也可以搭建 svn 服务了,这样就不用开着 ubuntu 了,省电. 在后台打开 ssh 服务,或者使用 telnet 服务,使用 putty 登录路由器. 如下图所示,这里刷的是 ...

  2. Python--Linux上安装Python

    Linux 上安装 Python 官网下载:https://www.python.org/downloads/ 本文安装包下载链接:https://pan.baidu.com/s/1uL2JyoY_g ...

  3. [转]在Linux CentOS 6.6上安装Python 2.7.9

    在Linux CentOS 6.6上安装Python 2.7.9 查看python安装版本 python -V yum中最新的也是Python 2.6.6,所以只能下载Python 2.7.9的源代码 ...

  4. windows上安装python虚拟环境

    一.windows上安装python虚拟环境 1.安装pip install virtualenvvirtualenv --version 2.新建一个python虚拟环境virtual_env_01 ...

  5. 在 mac 系统上安装 python 的 MySQLdb 模块

    在 mac 系统上安装 python 的 MySQLdb 模块 特别说明:本文主要参考了Mac系统怎么安装MySQLdb(MySQL-Python) 第 1 步:下载 MySQL-python-1.2 ...

  6. centos上安装python环境

    1.安装python-pip ​ 首先安装epel扩展源: ​ yum -y install epel-release ​ 更新完成之后,安装pip: ​ yum -y install python- ...

  7. 将 DNSCrypt 部署到 Openwrt 路由器上+ DNSmasq 解析国内域名用本地 DNS[ZT+实践]

    原文地址: 1.https://typcn.com/legacy/blog/posts/openwrt-dnscypt.html 2.http://www.openwrt.pro/post-376.h ...

  8. Openwrt路由器上开发微信公众号应用

    利用nohup命令创建启动服务 nohup, /dev/null 2>&1,输出重定向 http://www.cnblogs.com/taosim/articles/2610170.ht ...

  9. 【初学者教程】在电脑上安装Python,写第一个程序

    欢迎来到Python的世界 1.存在Python 2和Python 3两个版本,我该用哪个?如果书是关于2的,下载2:如果书是关于3的,就下载3.建议用Python 3,不过用2也是可以的. 2.下载 ...

随机推荐

  1. ubuntu 使用新添加的用户登录只有$解决方法

    在ubuntu中,使用useradd新建的用户,默认使用的shell是dash,导致界面不美观,操作也不舒服. 情况如下: 只有美元符,不显示用户,很多乱码,且文件没有颜色. 解决方法,将该用户使用的 ...

  2. flask框架(六)——闪现(get_flashed_message)、请求扩展、中间件(了解)

    message -设置:flash('aaa') -取值:get_flashed_message() -假设在a页面操作出错,跳转到b页面,在b页面显示a页面的错误信息 1 如果要用flash就必须设 ...

  3. LeetCode第151场周赛(Java)

    这是我第一次写周赛的题目,而且还是虚拟的.从这次起,以后就将所有错过的题目都写到博客来.当然既然是我错的,那代码肯定不是我自己的.我会注明来源.并且我会自己敲一遍.多总结总是没坏处的. 另外比较糟糕的 ...

  4. Tensorflow基本概念笔记

    一.TensorFlow使用简单,部署快捷 TensorFlow使用数据流图(计算图)来规划计算流程,可以将计算映射到不同的硬件和操作平台.凭借着统一的架构,TensorFlow可以方便的部署剑各种平 ...

  5. 登陆并访问k8s的apiserver

    kubeadm安装的k8s集群默认需要用户登陆认证,无法直接使用命令curl访问.所以首先的第一步就是获取token. 先找到k8s集群中的dns组件coredns,之前的版本使用的是kube-dns ...

  6. [高清] Java编程思想第四版完整中文高清版

    ------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...

  7. 在jenkins中使用shell命令推送当前主机上的docker镜像到远程的Harbor私有仓库

    1.jenkins主机上的docker配置 先在Jenkins主机的docke上配置上Harbor私有仓库地址 cat /etc/docker/daemon.json { "insecure ...

  8. Python之TensorFlow的数据的读取与存储-2

    一.我们都知道Python由于GIL的原因导致多线程并不是真正意义上的多线程.但是TensorFlow在做多线程使用的时候是吧GIL锁放开了的.所以TensorFlow是真正意义上的多线程.这里我们主 ...

  9. Golang-使用md5对字符串进行加密

    方式一: func md5Test1(str string) string { m5 := md5.New() _,err := m5.Write([]byte(str)) if err != nil ...

  10. Node笔记(新手入门必看)

    . 初识Node.js 1.1 Node.js是什么 Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. ...