安装Ubuntu系统到中国移动电视盒子

根据B站的视频资料,貌似这个盒子的性价比要比树莓派高一些,所以做了这个安装实验。新年伊始,armbian库也加紧升级,感觉大家都在想尽一切办法告别3年疫情给大家带来的伤害。

B站视频推荐把系统安装在盒子的内部,但是家的盒子平时还连接着电视,如果安装到内部,就会破坏原有的Android系统,就无法看电视了。第二个原因是内部存储用的是emmc存储卡,这种卡是有读写次数限制的,到了使用寿命,只能更换,届时就无法读写,也无法刷机了。

做这个实验,是为了平时能够将一些程序实现在Arm芯片上的适配运行。所以并不需要太大的资源和性能。

物料准备

  1. 机顶盒准备
    家里的ChinaMobile的TV Box,查看底部的主板型号,主要是从网络上查看一些相关这类机型的刷机可能和操作方法,我家的盒子是E900V22C。最主要的是需要用螺丝刀打开盒子,读取CPU上的型号。

准备好盒子和遥控器,查看产品型号,可以在B站或者抖音上搜索同类机型的刷机体验和操作方法

用螺丝刀打开盒子,正中间就是盒子的CPU,读取一下上面的型号,我的这个是 amlogic的芯片,型号是S905L 3A-B,抖音上有个视频说带-B的比较好刷,说不带这个的就不是特别好刷机。

  1. armbian系统镜像准备
    去这个地址寻找要下载的镜像文件
  • Armbian是操作系统名称,后面是系统版本号;
  • amlogic是支持的芯片类型;
  • 后面是cpu的型号,依据上面的步骤,我们找到s905l3a;
  • jammy是Ubuntu-22.04的产品代号,不了解的可以百度查下Ubuntu各个版本的产品代号;

下载、解压缩,得到一个大约2G左右的img文件,然后用烧录软件(我用的是Win32DiskImager)写入到一个空白的U盘上,当然U盘是需要提前格式化好的空白盘,为了兼容性好,采用了FAT32格式;

安装

把U盘插到机顶盒靠近网线的那个USB口上,另外一个USB口,我插上了一个无线键盘的接收器;HDMI连接显示器,然后点击机顶盒开机按钮;另外一只手拿着遥控器,不断地以每秒3次的频率点击方向右键,据说这是我这个机顶盒启动U盘引导的方法,尝试了是可以的,否则可能就需要按照B站视频上的描述,去找一个具备卡载系统之类应用的固件,重新刷机了;

安装好之后,通过命令armbian-tf进行U盘扩容,整个U盘的空间就都被系统占用了,我的U盘是16G的;从安装完毕的下图来看,内置存储卡是8G的;

为了尽量减少空间浪费,我没有安装视窗,但是我安装了docker,经测试只要插着U盘启动,不需要遥控器,就直接进入armbian系统了,如果不插U盘就进入了android系统;

参考资料

不足百元电视盒,能装Ubuntu,能跑ROS2,性能媲美树莓派

本文转载于网络 如有侵权请联系删除

相关文章

  • LeetCode117:填充每个节点的下一个右侧节点指针 II

    LeetCode117:填充每个节点的下一个右侧节点指针IIPopulatingNextRightPointersinEachNodeII题目:给定一个二叉树GivenabinarytreestructNode{ intval; Node*left; Node*right; Node*next; } 复制填充它的每个next指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将next指针设置为NULL。Populateeachnextpointertopointtoitsnextrightnode.Ifthereisnonextrightnode,thenextpointershouldbesettoNULL.初始状态下,所有next指针都被设置为NULL。Initially,allnextpointersaresettoNULL.进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。Followup:Youmayonlyuseconstantextraspace.Recursiveapproachisfine,you

  • python变量与数据类型

               Python(变量与数据类型)这里就不说python历史了,可以去网上查看访问python官网下载python安装pythonhttps://www.python.org/按照上面图片选择系统(我的操作系统为Windows)选择python版本Python版本:目前已经发布3.6.2,在上面找到适合自己的版本,下载进行安装安装完成之后再所有程序中找到安装的python(我安装的为2.7.1),找到执行程序;IDLE为文本格式,python跟命令行差不多,pythonManuals跟技术文档差不多,可以在里面输入关键字查找所匹配的信息;Python库:主要分为内置库和第三方库Python开发:比较有名气的为比特币、Alfago、douban、yahoo、MAPpython二次开发:openstack运维工具变量与数据类型以下假设变量a为10,变量b为20:运算符描述实例+加两个对象相加a+b输出结果30-减得到负数或是一个数减去另一个数ab输出结果-10*乘两个数相乘或是返回一个被重复若干次的字符串a*b输出结果200/除x除以yb/a输出结果2%取模返回除法的余数

  • 6-1 邻接矩阵存储图的深度优先遍历 (20 分)

    版权声明:本文为博主原创文章,遵循CC4.0BY版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/shiliang97/article/details/103120970试实现邻接矩阵存储图的深度优先遍历。函数接口定义:voidDFS(MGraphGraph,VertexV,void(*Visit)(Vertex));复制其中MGraph是邻接矩阵存储的图,定义如下:typedefstructGNode*PtrToGNode; structGNode{ intNv;/*顶点数*/ intNe;/*边数*/ WeightTypeG[MaxVertexNum][MaxVertexNum];/*邻接矩阵*/ }; typedefPtrToGNodeMGraph;/*以邻接矩阵存储的图类型*/复制函数DFS应从第V个顶点出发递归地深度优先遍历图Graph,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按序号递增的顺序。题目保证V是图中的合法顶点。裁判测试程序样例:#include<stdio.h> typedefe

  • 10、django开发环境搭建及使用

    django是基于python的一个框架,因此在此之前要先安装python环境,关于python环境的搭建,前面已写过,参考这里:http://www.the5fire.com/python-env.html。有了python环境接着就要开始安装django了。在正式开始之前要先介绍一下django的开发环境包括哪些东西:1、django的安装2、mysql安装【非必须,本篇会提及】3、apache安装【非必须】另外主要是为了和大家一起使用django来作为todos的服务器端,因此还简单的介绍下如何使用django来开发。正式开始,安装django可谓相当简单,到这:http://www.djangoproject.com/download/1.3.1/tarball/我自己用的django版本是1.3.1的,大家可以自行选择。下载下来之后,通过命令行进入Django-1.3.1目录中,执行:pythonsetup.pyinstall即可(对于ubuntu用户可能需要加sudo)。在命令行中输入django-admin看有木有提示,如果没有你需要到你对应的C:/python2.7/S

  • 干货 | 从入门到放弃:21种机器学习算法详解,附多种下载方式

    关键字全网搜索最新排名【机器学习算法】:排名第一【机器学习】:排名第二【Python】:排名第三【算法】:排名第四下面是各模型在博客中的详细解说,为方便大家阅读,这儿提供PDF下载版,下载方式:a.加入机器学习交流3群(478882933),文末有二维码链接;b.后台回复关键词:170831;c.加我微信(guodongwe1991),备注姓名-机构-研究方向;d.百度云盘链接:http://pan.baidu.com/s/1qYFOhje密码:fb16(~不要吝啬,动手点赞与分享吆~)1.决策树-参考:decisionTree(Python实现)http://blog.csdn.net/dream_angel_z/article/details/459654632.SVM支持向量机-参考:pluskid支持向量机三重境界http://blog.pluskid.org/?page_id=683 3.Adaboost-参考:组合算法-Adaboosthttp://blog.csdn.net/huruzun/article/details/41323065 4.RandomForest

  • 无人驾驶行业报告:2020年中国市场才能启动

    我国无人驾驶汽车已经过多年的摸索,目前仍处于探索期。紧随2011年一汽无人驾驶车路事件之后,各参与方纷纷在无人驾驶领域展开布局,加大技术研发投入,试图在无人驾驶市场抢先占据一席之地。预计将在2020年以后市场将会进入启动期。1无人驾驶产业发展背景分析无人驾驶是智能汽车发展的最高形态根据美国NHTSA公布的划分标准,智能汽车可以分为4个级别(不包含L0的完全无自动驾驶功能)。◆L0(不具备自动驾驶):完全不具备自动驾驶功能,仅具备普通预警类功能。◆L1(特定功能自动驾驶):1个或多个功能能够实现自动化,且各项功能之间能够独立工作。◆L2(组合功能自动驾驶):组合功能实现自动化,且能够实现功能协同、融合。◆L3(受控的自动驾驶):限定环境下可以实现无人驾驶,判断是否恢复驾驶者自主操作模式。◆L4(完全无人驾驶):在任意环境下实现完全无人驾驶。完全无人驾驶是汽车自动化、智能化程度最高的级别。但目前仍处于路测阶段,距离商用还有较长一段时间。无人驾驶形成两条发展路径——ADAS和人工智能目前无人驾驶的发展已经形成以ADAS和人工智能切入的两条发展路径。路径一:以传统车厂为代表,如上汽集团、长安汽

  • 腾讯云云点播创建音视频内容分析模板

    1.接口描述接口请求域名:vod.tencentcloudapi.com。 创建用户自定义音视频内容分析模板,数量上限:50。 默认接口请求频率限制:10次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:CreateAIAnalysisTemplate。 Version 是 String 公共参数,本接口取值:2018-07-17。 Region 否 String 公共参数,本接口不需要传递此参数。 SubAppId 否 Integer 点播子应用ID。如果要访问子应用中的资源,则将该字段填写为子应用ID;否则无需填写该字段。 Name 否 String 音视频内容分析模板名称,长度限制:64个字符。 Comment 否 String 音视频内容分析

  • MySQL_group by报错 [ERROR 1055 (42000): Expression #2 of SELECT list is not in GROUP BY clause]

    今天晚上电脑上的数据库突然抽风,怎么也连不上了,查了好久的资料说可能是跟我在本机搭建的java项目有关,跟着资料弄了半天,问题还是没有解决,只好另求出路。 想起之前安装过一个linux虚拟机,就想借用虚拟机上的sql,没想到在写分组查询的时候一直报下面这个错: ERROR1055(42000):Expression#2ofSELECTlistisnotinGROUPBYclauseandcontainsnonaggregatedcolumn'user.t_user.name'whichisnotfunctionallydependentoncolumnsinGROUPBYclause;thisisincompatiblewithsql_mode=only_full_group_by   同样查询了网上的教程,得知了问题出现的原因:   MySQL5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BYSQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDERBY列表的查询引用在GROUPBY子句中既未命名的非集合列,也不在功能上依

  • 图片上传本地显示,多浏览器兼容

        经常遇到表单上传图片,使用原生HTML的inputfile,通常都是把图片上传到服务器,返回图片地址,重新设置图片的src。 其实不上传服务器也可以把图片显示出来的,这样可以减少对服务器的请求,并减少服务器端的垃圾图片。      具体做法,现在通过Html5的FileReader接口就可以轻松实现,提到Html5大家会问:“那个恶心的IE怎么做呢?”其实IE可以通滤镜来实现的 IE6直接设置src为图片地址就可以显示的。废话不多说了直接上代码。 <html> <head> <title></title> <scriptsrc="Scripts/jquery-1.11.2.js"></script> <styletype="text/css"> img{width:400px;height:300px;} form{position:absolute;top:-2000px;} label{backgro

  • 用户态和内核态

           通常我们写程序时的关注重点都放在了实现功能,但如果将代码转换成CPU执行的指令时,那么我们所写的代码就是一个动态执行的CPU指令序列。而硬件设备对指令的执行有严格的控制,例如如下代码:   voidtestfork(){   if(0==fork()){     printf(“createnewprocesssuccess!\n”);    }   printf(“testforkok\n”); } 复制 静态观察  从功能的角度来看:就是实际执行了一个fork(),生成一个新的进程;  从逻辑的角度看:就是判断了如果fork()返回的是则打印相关语句,然后函数最后再打印一句表示执行完整个testfork()函数。 动态观察 由操作系统来管理这段代码转换成CPU可执行的指令序列。      对Unix/Linux系统来说,fork的工作实际上是以系统调用的方式完成相应功能的,具体的工作是由sys_fork负责实施。其实无

  • wpf中为DataGrid添加checkbox支持多选全选

    项目中用到DataGrid,需要在第一列添加checkbox,可以多选、全选。其中涉及的概念DataTemplate,DataGridCellStyle,DataGridCellControlTemplate,Binding,OnPropertyChanged等。有下面是实现思路:1.继承INotifyPropertyChanged接口,实现OnPropertyChanged方法: publicabstractclassViewModelBase:INotifyPropertyChanged  {   publiceventPropertyChangedEventHandlerPropertyChanged;    ///<summary>    ///Raisesthisobject'sPropertyChangedevent.    ///</summary>  

  • CF1740G Dangerous Laser Power

    题面传送门 不是很理解为啥场上只有很少的人过掉这道题。 首先看看这种题目不让你输出最大值而且SPJ还死难写的就猜它全部可以取到并且最优解唯一。 然后你翻了翻CF提交记录发现它是全文比较的。 因为这个过程在chkmax,所以考虑从小到大加入点并且判定点的类型。 考虑最小的点,可以发现除了它四周射入的,其余都是不会影响到它的,因此它是直行的。 然后这个最小的点删掉以后,它上下和左右相当于直接联通了。因此可以用链表维护这个东西。而它两边者射入的激光相当于直接射到了四周,也可以用链表维护。 然后直接模拟这个过程即可,时间复杂度\(O(n^2\logn)\) code: #include<bits/stdc++.h> #defineGc()getchar() #defineMe(x,y)memset(x,y,sizeof(x)) #defineMc(x,y)memcpy(x,y,sizeof(x)) #defineR(n)(rnd()%(n)) #definePc(x)putchar(x) #defineLBlower_bound #defineUBupper_bound #defi

  • AI概念分析

    设计的本质是抽象变化。 关于Composites的用法又有了新的认识:在Task返回值的时候尽量要与真实情况相符合,就像Selector下的子节点一旦成功Selector就返回,说明Selector是一种选择的方式,而Sequence下的子节点一旦失败就返回,说明它就是用来一步一步执行的。所以在选择使用的时候尽量按照规矩来,减少强制性的返回结果,这样显得更和谐,别人读程序也更好懂。     上面是整个AI系统中的工具。   PawnAction 也是要在AIController中运行的,有两个特点,ActionTree是动态创建的,2是执行结束后就被释放了。 用处:将一些行为封装成起来可以供很多不同的目标使用。 使用方法:创建一个基于PawnAction_BlueprientBase的类,在其中有5个事件驱动,常用的就是EventActionStart/Tick/Finished,如何判定是要执行Finish呢,有一个节点使用:Finish,并且还可以返回Result。那现在类是有了,将一些AI事件放在这里写,如何去实现呢,这个类只能在有特定的Compo

  • 统信UOS欧拉版本如何制作启动盘

    第1章目的 用U盘制作欧拉版本启动盘。   第2章工具准备 2.1 环境准备 操作系统:UOS 其它:欧拉版本镜像安装包 第3章步骤 采用sudofdisk-l查看U盘的盘符,如下使用的是:/dev/sda1       使用sudoumount/dev/sda1卸载U盘 再使用sudomkfs.vfat /dev/sda1-I完成格式化 最终使用sudoddif=xxx.iso of=U盘路径,进行刻录 完整示例:sudoddif=oula_V20-1010e-arm64-iso.isoof=/dev/sda      

  • PAM30

    """ PAMIEBuild3.0a BasedoncPAMIEandPAM.pybyRLM Revised:March03,2009 Developers:RobertL.Marchetti Description:ThispythonclassfileallowyoutowritescriptstoAutomatetheInternetExplorerBrowserClient. Thissoftwareisprovided'as-is',withoutanyexpressorimpliedwarranty. Innoeventwilltheauthorsbeheldliableforanydamagesarisingfromtheuseofthissoftware. Permissionisgrantedtoanyonetousethissoftwareforanypurpose, includingcommercialapplications,andtoalteritandredistributeitfreely,subjecttothefollowingrestrict

  • vue中使用Moment.js解决antd vue:[antdv: DatePicker] `value` provides invalidate moment time.

    使用antdvue中的datepick,报错:warning.js?2149:7Warning:[antdv:DatePicker]valueprovidesinvalidatemomenttime.Ifyouwanttosetemptyvalue,usenullinstead. 解决方案:因为datepick需要的数据类型是moment值,需要将string类型转换为moment类型 使用moment的方法: 1.安装模块 npminstallmoment--save复制 2.在main.js中引入 importmomentfrom'moment';//导入模块 moment.locale('zh-cn');//设置语言或moment.lang('zh-cn'); Vue.prototype.$moment=moment;//赋值使用复制 3.使用 this.$moment('2019/06/1714:00:00').startOf('hour').fromNow();//1小时前 this.$moment().format('YYYY年MM月DD日HH时mm分ss秒');//

  • 一大波前端干货整合【技术社区、博文、资源、工具】

    前端交流站点 大前端    http://www.daqianduan.com/ V2EX      http://www.v2ex.com/ W3cplus   http://www.w3cplus.com/ W3Cfuns  http://www.w3cfuns.com/ Github      https://github.com/ 掘金          http://gold.xitu.io/ 前端导航    http://jsdig.com/ 百度EFE技术体系http://efe.baidu.com/ 前端学习 CSS      CSS参考手册http://www.w3

  • 数据结构考研复习(链栈)

    参考网上的内容,大部分的链栈实现用到了栈底和栈顶两个指针,而下文整理的这份代码,基本上与单链表的实现方式如出一辙。 与王道复习指导上给的栈的链式存储类型相一致。 #include<stdio.h> #include<malloc.h> typedefstructLinknode{ intdata; structLinknode*next; }Linknode,*LiStack; /*-1-初始化链栈*/ boolInitStack(LiStackS){ S->next=NULL; returntrue; } /*-2-判断是否栈空*/ boolStackEmpty(LiStackS){ if(S->next==NULL){ printf("空栈!\n"); returntrue; } else{ returnfalse; } } /*-3-进栈(插入元素)*/ boolPush(LiStackS,inte){ Linknode*temp; temp=(Linknode*)malloc(sizeof(Linknode)); temp-

  • jmeter BeanShell PostProcessor 获取http请求的response出参,存入CSV

    在http请求同级节点下建立一个BeanShellPostProcessor,获取http请求响应结果里的order_txn_reference1、下图所示为http请求的响应结果:复制   2、下图所示为BeanShellPostProcessor和http请求的位置:    3、需下载json.jar放置到jmeter的lib目录下   https://pan.baidu.com/s/1KFDUIq40BhUXcy2NYo7YkA密码:c91m 放置好后需要重启jmeter,否则无效 (转载:https://blog.csdn.net/agrapea/article/details/124665058) 4、测试计划加载json.jar  5、BeanShellPostProcessor插件写如下代码: importorg.json.*; Stringresponse=prev.getResponseDataAsString(); JSONObjectdata_obj=newJSONObject(response); St

  • Laravel 8 利用Command命令创建自定义文件

    一、先用make:command命令创建一个命令文件 phpartisanmake:commandServicesCommand复制 二、这样会在app\Console\Commands下生成一个ServicesCommand文件 <?php namespaceApp\Console\Commands; useIlluminate\Console\GeneratorCommand; //修改继承的基类为GeneratorCommand classServicesCommandextendsGeneratorCommand { /** *Thenameandsignatureoftheconsolecommand. * *@varstring */ protected$name='make:service';//设置命令 /** *Theconsolecommanddescription. * *@varstring */ protected$description='Createanewservice';//设置描述 /** *Theconsolecommandt

  • TCP协议与UDP协议的区别

    网络由下往上分为   物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。   通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,   三者从本质上来说没有可比性,   socket则是对TCP/IP协议的封装和应用(程序员层面上)。   也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,   而HTTP是应用层协议,主要解决如何包装数据。   关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:   “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。   如果想要使传输的数据有意义,则必须使用到应用层协议。   应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。   WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”   而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用

相关推荐

推荐阅读