小米路由器mini 安装openWrt+更新源+挂载U盘+安装python

2023-10-27

刚刚入手一个小米路由器mini,本来就是打算装openWrt的,想试试玩玩看。


刷openwrt的基本流程是参考的如下博主的文章

http://www.right.com.cn/forum/thread-147929-1-1.html


没有遇到什么严重问题,但是一些细节需要注意。

(0)小米路由器mini和小米路由器,不要搞混了。。。。

(1)截止到今天,小米路由mini的firmware版本为0.7.51,我的是0.7.50。一定要先刷入一个开发板而不是稳定版,并且能够支持上面博主所说的mtd命令的版本。

若不使用低版本,在尝试mtd -r write xxxx.bin firmware时会找不到firmware的错误。

我使用的是0.7.15版,这个版本可以从如下地址获得。

http://www.miui.com/thread-1776173-1-1.html

(2)刷机之前需要做一次路由器绑定,然后连接上路由器,进入miwifi.com,再进入“下载”页面。找到页面下面的“SSH工具”那个按钮,此时会有一个root密码需要记下来,后面用。

(3)刷miwifi_ssh.bin时,一定要保证U盘里没有残留miwifi.bin。

(4)貌似一定要用WinSCP这个软件将待刷入的固件传送到小米路由mini上,记得选择SCP模式。

(5)刷完以后,重新连接小米路由器mini,这次使用的是192.168.1.1的ip,要配置好ssh,之后才能通过电脑ssh上去。我选择的是Dropbear接口为wan。我ssh工具用的是SecureCRT,并不是上面博主说的putty。


好,总的来说刷机过程还是没有痛苦的。系统小,刷起速度也快。刷的时候还在和女朋友看关于大脑的纪录片。看完了以后想,怎么也要搞个软件源才行吧,于是就ssh上小米路由mini。上来就

opkg update


好嘛,没有一个源是可以的。。。于是着手手动改源。目前我刷的openWrt是PandoraBox 14.09 r355,是基于openWrt Barrier Breaker的。使用的原地址是

http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/


这里面有好几个文件夹,将这些源都写到/etc/opkg.conf里。我的opkg.conf文件如下

rc/gz barrier_breaker_base http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base 
src/gz barrier_breaker_management http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/management
src/gz barrier_breaker_oldpackages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/oldpackages
src/gz barrier_breaker_packages http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages      
src/gz barrier_breaker_routing http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/routing      
src/gz barrier_breaker_telephony http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/telephony    
dest root /data                                                                                                          
dest ram /tmp                                                                                                            
lists_dir ext /data/var/opkg-lists                                                                                       
option overlay_root /data

保存后运行opkg update。发现源是可以链接上了,但是报出类似于如下错误

Package xxx version xxx has no valid architecture, ignoring.

一些朋友也遇到了

http://www.right.com.cn/FORUM/thread-128532-1-1.html


google了一下原因,发现是源指定的architecture和路由上刷好的系统的不一致造成的。一些解决方案可以从如下地址找到

http://wayjam.me/post/two-problems-about-install-package-on-openwrt.md

其实在openWrt官网上已经对opkg进行了详细的说明,上面博主的做法也是和openWrt官网推荐的方法相一致(http://wiki.openwrt.org/doc/techref/opkg),意思就是在/etc/opkg.conf文件中加入对系统支持的architecture的设置,具体方法是添加如下几行

arch all 100
arch <arch类型1> 200
arch <arch类型2> 300

官网的意思是告诉opkg,arch类型2的包可以兼容的装在arch类型1的系统上。那么问题来了,现在的arch类型是什么呢?折腾了好久,我尝试过查看系统的arch,利用

uname -a


我得到

Linux PandoraBox 3.10.64 #20 Wed Jan 14 00:19:50 CST 2015 mips GNU/Linux


就是说系统的mechine type 是mips的,这个硬件描述我也不是很懂,再看看uname -p,查看一下processor type,好嘛。。。显示是这样的


整个人都不好了有木有!!这unknown算是什么?

再看cat /proc/cpuinfo


也就是说,小米路由mini使用的是联发科的MT7620A型号的芯片,机器类型属于mips类的,这也与官网的源地址相一致,

于是我又尝试了

arch all 100
arch mips 200
arch mips2 300
arch ramips 400
arch unkown 500

入此种种甚至是待arch unkown的脑残设置,每次都有opkg update,每次都要看那一大片报错信息。夜已经深了,为了不打扰室友,在客厅里用的笔记本电池,电脑的电也剩一半了。突然灵机一动,想如果能确定系统指定的arch,不就不就不用乱试各种arch了么,虽说最可能的ramips 的architecture都不行,但是总该在什么地方写着正确的arch的配置吧。于是开始翻官网的源目录,发现疑似文件


下载下来,notepad++打开查看,配置项目还是很多的,直接搜索“ARCH”,找到了这样的一行


我只能说,我擦了,为毛要有一个"_24kec"的后缀!?


把脑残的opkg.conf文件改成


再次opkg update,终于没有错误了!!!!yeah


那么整个什么软件安装一下试试看呢,先来python吧!其实我只想装一个python而已。。。。google一下发现貌似要先装libc库,貌似还要手动装(可参考这篇博客中关于安装Transmission的描述,http://blog.sina.com.cn/s/blog_56a70c040102vaay.html),opkg自己装不了。于是在官网的源列表里找libc,很容易找,就在base文件夹里


下载下来。从这个libc名字上也看到,确实系统的arch是ramips_24kec,看来是自己too森破too naive啊


scp到路由器/tmp,然后寻思着,这玩意应该装在挂载的u盘上吧,要不根文件系统的空间不够啊,于是根据那个装Transmission的博主的做法,外加自己google到的其他方法,尝试将库安装到u盘上。openWrt官网上对调整opkg安装位置做了描述,还是改/etc/opkg.conf文件,添加dest设置,用一个别名来代替一个地址位置,在opkg install时用-d参数来控制opkg的安装位置。我就填了两个dest,一个是到U盘的根上,一个是到u盘里新创建的opt目录。这么做有个原因是,openWrt刚刷好的系统里根上是没有opt路径的,可以做一个符号链接从U盘的opt到根上。我的/etc/opkg.conf文件最后变为


然后用opkg安装libc,

opkg -d usb install libc_xxxxx


好嘛,又报错,错误意思是做符号链接时出现了“Operation not permitted”,这个网友遇到了一样的错误

http://www.dd-wrt.com/phpBB2/viewtopic.php?p=766847


完全不知道为什么,关键是,手动做符号链接是可以的,可以将u盘上的文件链接到路由器上。确实没问题。那么问题又来了,这是TM怎么个情况??google了许久,然后在一个德语论坛上找到了一个解决方案,貌似外部挂在的usb存储设备,必须要使用ext格式才能作为opkg安装时符号的链接点。这点在openWrt官网关于扩展根文件系统的描述中都没有找到。

http://forum.nas-portal.org/archive/index.php/t-14384.html

http://wiki.openwrt.org/doc/howto/extroot/extroot.theory


已经是夜里三点了。。。所以我果断选择先睡一觉。。。。主要还是因为手头没有舍得格式化的u盘。。。。。


第二天,找了个不用的microSD卡,加了个读卡器,格式化成了ext4格式,查到小米路由上,再来opkg安装,没问题了!yeah

当然也不忘改一下环境变量,参考这个博主的做法

http://blog.jkey.lu/2013/04/22/openwrt-install-package-on-usb-flash-disk/


一运行python,果然给力,打个hello world,果然可以,来个方向键。。。擦,方向键乱码。。。

好嘛,这又是什么情况。。。

google了一圈,发现貌似是readline的问题,于是opkg了readline的包,还有python-ncurses包,都没用。于是想是不是搞个ipython能好一点。opkg了一下ipython,竟然有!安装,成了运行,报module import错误,擦,这也行!?

查看了一下python的lib,发现确实没有ipython所要import的package,怎么回事,这python安装的不完整???看来要自己编译python了,没想到才第二天就要搞交叉编译,痛苦可能来的太早啊。上openWrt,看看如何develop,从git上搞下来现在trunk代码,按照documentation的方法一步一步的实践,发现,python的编译配置就在feeds/oldpackages/python里,打开makefile看一看,发现openWrt把很多python的package做成独立的ipk文件放到源上了,若是找不到某个package,直接opkg安装就可以了。ipthon说是缺少pydoc,这个对应python-doc,opkg安装,再次运行ipython,起来了。


悲剧的是,方向键还是不能用,看来真的要重新编译python才行了。。。。今天就到这了,搞不动了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小米路由器mini 安装openWrt+更新源+挂载U盘+安装python 的相关文章

  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • sy.sympify(str(表达式)) 不等于表达式

    据我了解 str将 SymPy 表达式转换为字符串并sympify将字符串转换为 SymPy 表达式 因此 我希望以下内容成立 对于合理的表达 gt gt gt sy sympify str expr expr True 我尝试过这个 确实
  • 如何使用 python、openCV 计算图像中的行数

    我想数纸张 所以我正在考虑使用线条检测 我尝试过一些方法 例如Canny HoughLines and FLD 但我只得到处理过的照片 我不知道如何计算 有一些小线段就是我们想要的线 我用过len lines or len contours
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 在 PhotoImage 下调整图像大小

    我需要调整图像大小 但我想避免使用 PIL 因为我无法使其在 OS X 下工作 不要问我为什么 无论如何 因为我对 gif pgm ppm 感到满意 所以 PhotoImage 类对我来说没问题 photoImg PhotoImage fi
  • Python 中 time.sleep 和多线程的问题

    我对 python 中的 time sleep 函数有疑问 我正在运行一个脚本 需要等待另一个程序生成 txt 文件 虽然 这是一台非常旧的机器 所以当我休眠 python 脚本时 我遇到了其他程序不生成文件的问题 除了使用 time sl
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • sleep 0 有特殊含义吗?

    我看到很多用法sleep 0在我的一个客户项目中 代码看起来像这样 while true sleep 0 end 阅读一些像这样的答案this https stackoverflow com questions 3727420 signif
  • Karasuba算法递归过多

    我正在尝试用 c 实现 Karasuba 乘法算法 但现在我只是想让它在 python 中工作 这是我的代码 def mult x y b m if max x y lt b return x y bm pow b m x0 x bm x1
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • 打印一份拥有多个家庭的人员名单,每个家庭都有多个电话号码

    我有一类 Person 它可以有多个 Home 每个 Home 都有一个或多个电话号码 我已经定义了类 但现在我正在尝试创建一个视图 其中列出每个人的所有家庭以及每个家庭地址的所有电话号码 类似于 john smith 123 fake s
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • 如何仅注释堆积条形图的一个类别

    我有一个数据框示例 如下所示 data Date 2021 07 18 2021 07 19 2021 07 20 2021 07 21 2021 07 22 2021 07 23 Invalid NaN 1 1 NaN NaN NaN N
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 如何让 Streamlit 每 5 秒重新加载一次?

    我必须每 5 秒重新加载 Streamlit 图表 以便在 XLSX 报告中可视化新数据 如何实现这一目标 import streamlit as st import pandas as pd import os mainDir os pa
  • 在 for 循环中访问 itertools 产品的元素

    我有一个列表列表 是附加 itertools 产品的一些其他结果的结果 我想要的是能够使用 for 循环访问列表列表中列表的每个元素 但我无法访问所有元素 我只能访问最后一个列表的元素 结果是一个非常巨大的列表列表 例如 1 2 4 3 6
  • 通过新数据更新绘图,而不是在 Jupyter 笔记本中制作新绘图

    我有一些问题 希望你能帮我解决 我需要使用下拉小部件创建交互式绘图 我可以在其中选择并绘制感兴趣的数据 我通过以下方式做到这一点 import plotly graph objects as go import ipywidgets as
  • Python RE(总之检查第一个字母是否区分大小写,其余部分不区分大小写)

    在下面的情况下 我想匹配字符串 Singapore 其中 S 应始终为大写 其余单词可能为小写或大写 但在下面的字符串 s 是小写的 它在搜索条件中匹配 任何人都可以让我知道如何实施吗 import re st Information in
  • 为什么我的 PyGame 应用程序根本不运行?

    我有一个简单的 Pygame 程序 usr bin env python import pygame from pygame locals import pygame init win pygame display set mode 400
  • 在 python 中使用高精度时间戳

    嘿 我正在使用 python 处理日期时间 我想知道解析这个时间戳的最佳方法是什么 时间戳是ISO标准 这里是一个例子 2010 06 19T08 17 14 078685237Z 现在到目前为止我已经使用过 time datetime d

随机推荐

  • c语言long和long long的取值范围

    溢出和取值范围 C语言的整型溢出问题 整数溢出 int long int long long int 占用字节 C和指针 中写过 long与int 标准只规定long不小于int的长度 int不小于short的长度 double与int类型
  • UGUI屏幕自适应

    关键点 0 自适应的测试 通过设置多种的屏幕大小进行测试 测试时最好要打开Maximize on Play 在屏幕放大的情况下容易观察自适应情况 1 所谓的自适应 就是 a 保持相对位置不变 例如UI设计在屏幕的左上角 那么在各种的分辨率下
  • java多线程和高并发系列一 & JMM、Synchronized、volatile

    目录 什么是JMM模型 概念 JVM的工作 JMM的工作 总结 JMM不同于JVM内存区域模型 主内存 工作内存 数据同步八大原子操作 同步规则分析 并发编程的可见性 原子性于有序性问题 原子性 可见性 有序性 volatile内存语义 v
  • js复制图片,支持jpg和png

    直接上关键代码 copy jpg url jpg 示例 复制图片 支持jpg png 传入图片url即可 function copy jpg url var canvas document createElement canvas 创建一个
  • unity 延迟等待执行

    关于unity延迟执行网上也有很多了 我这里只是封装下 让写代码变得更加优雅 使用更加方便 一个问题想要表述清楚 读者也能看明白 无非3个点 What 要说的是什么 How 怎么用你这个东西 什么情况下有用 Why 为什么要这么做 这么做有
  • 3天快速了解区块链技术 day01

    文章目录 区块链技术与应用相关概念 关于作者 作者介绍 前言 一 区块链基础概念 1 1 区块链历史 1 2 区块链和区块的定义 1 3 区块链分类 1 4 区块链价值 1 5 区块链应用领域 1 6 区块链特点 1 7 区块链关键技术 二
  • 使用cJSON解析JSON字符串

    JSON学习 使用cJSON解析 使用cJSON解析JSON字符串 一 为何选择cJSON 我们在使用JSON格式时 如果只是处理简单的协议 可以依据JSON格式 通过对字符串的操作来进行解析与创建 然而随着协议逐渐复杂起来 经常会遇到一些
  • Altium Designer 18 速成实战 第四部分 PCB库的设计(七)3D PCB封装的创建

    Altium Designer 18 速成实战 第四部分 PCB库的设计 七 3D PCB封装的创建 目录 一 3D元件体绘制3D PCB封装 1 放置3D元件体 2 绘制成下图所示 3 根据下图 图来自百度 调整属性 二 3D元件体绘制3
  • 修改weblogic控制台路径

    我们在使 weblogic控制台时 出于安全的考虑需要对weblogic的console进行设置 修改默认的访问路径 有两种方法 任选一种都可以 一 在web控制台进行修改 先使用默认的ip 端口 console登录到weblogic控制台
  • Basic Level 1074 宇宙无敌加法器 (25分)

    题目 地球人习惯使用十进制数 并且默认一个数字的每一位都是十进制的 而在 PAT 星人开挂的世界里 每个数字的每一位都是不同进制的 这种神奇的数字称为 PAT数 每个 PAT 星人都必须熟记各位数字的进制表 例如 0527 就表示最低位是
  • Ubuntu 14.04 将其他盘挂载到/home的子目录下

    Ubuntu 14 04 将其他盘挂载到 home的子目录下 当安装完Ubuntu系统 由于当时没有注意 分配的分区空间太小 经过一段时间安装了各式各样的软件后 常常会遇到 home目录下空间不够的情况 这时除了卸载软件以及重装系统以外 还
  • MDK 编译错误:multiply defined (重复定义)

    这个代码实现很简单 出现重复定义首先检查了自己的头文件 发现没问题 后来经过师兄的点拨 发现他提示后面有 表示有两个头文件key1 c和key c 马上检查了工程 果然发现有两个 c文件 删除一个即可解决问题
  • 广度优先探索例题java_LeetCode:广度优先搜索(BFS)算法(常见面试题)

    今天推荐一道常见的面试算法题 比较实用也比较常见 一 认识广度优先搜索算法 广度优先搜索 BFS 算法是图的一种遍历方法 它的核心思想是从图的某一个节点开始 依次遍历相邻节点 再从这些相邻节点继续向外层节点遍历 直到连通图的所有节点均被访问
  • Django-项目构建(一)

    环境 python3 Django2 window10 工具 pycharm 构建项目前期准备工作 安装python3 Django2 等 略 一 使用git Bash Here 打开git bash Here 构建项目命令 django
  • java取html中的table_从一段html的table标签中按列提取信息

    我们平时经常会遇到提取某个html中某个table的信息 比如 我们要提取出序号 登记编号 出质人等等 我的思路是先通过正则锁定该table 在通过Jsoup来按列解析内容 我将提取信息的过程抽取出了一个方法 其中内含Jsoup和Regex
  • idea配置使用git以及ssh key的介绍使用

    文章目录 1 Git GUI 的使用 2 ssh key 的介绍和使用 安装ssh key 3 idea中配置并使用git idea配置git 1 Git GUI 的使用 首先先将 git gui 汉化一下 把msgs文件夹copy到 Gi
  • 本地把虚拟光驱传到服务器,将文件传到服务器

    将文件传到服务器 内容精选 换一换 监控数据上报功能可以将系统中采集到的监控数据写入到文本文件 并以FTP或SFTP的形式上传到指定的服务器中 使用该功能前 管理员需要在FusionInsight Manager页面进行相关配置 监控数据上
  • windows服务程序中创建用户进程

    最近碰到个问题 需要在服务中检测用户桌面的情况 但是服务程序都是SYSTEM账户下运行 属于Session0 不能检测到用户桌面的情况 所以就需要另启一个用户进程来获取这些信息 然后发送给服务 所以就用到了 CreateProcessAsU
  • 卷积神经网络系列之卷积/池化后特征图大小怎么计算??

    1 卷积后的大小 W 矩阵宽 H 矩阵高 F 卷积核宽和高 P padding 需要填充的0的个数 N 卷积核的个数 S 步长 width 卷积后输出矩阵的宽 height 卷积后输出矩阵的高 width W F 2P S 1 向下取整 h
  • 小米路由器mini 安装openWrt+更新源+挂载U盘+安装python

    刚刚入手一个小米路由器mini 本来就是打算装openWrt的 想试试玩玩看 刷openwrt的基本流程是参考的如下博主的文章 http www right com cn forum thread 147929 1 1 html 没有遇到什