旧物利用 - 将机顶盒改造为一台Linux开发机!
前言
家里有一台机顶盒(移动魔百盒)淘汰下来了,博主想要物尽其用,看看是否能将其改造为一台Linux"开发机",量身定制系统,用作开发和测试,以及跑服务器
博主选择的是Ubuntu发行版系统,话不多说,开始“破解”吧!
准备工作
机顶盒型号:移动魔百盒CM201-2(CH),芯片组: hi3798mv300(hi3798mv3dmm),其他型号类似
理论上适用于以下SOC的机顶盒:Hi3798Mv100 / Hi3798Cv200 / Hi3798Mv200 / Hi3798Mv300
1. 准备Linux系统和Windows系统
前者作为源码编译环境,后者需要使用到进行固件烧录的软件
(烧录也可以命令行形式甚至不需要Windows,需要参考海思官方文档,为了方便故在Windows平台下进行烧录)
故强烈推荐在Windows平台上安装WSL
2. 准备海思的烧录软件HiTool(Windows软件)
3. 准备烧录固件所需的USB传串口模块以及接线,其中只需要TXD, RXD, GND三条连接到板上,并准备一根网线用于向机顶盒快速发送固件程序
博主使用的是CH340G,如图
CH340G需要驱动程序,需要去官网下载CH341SER.EXE
若CH340驱动安装正确,进入设备管理器将会看到对应端口
4. 准备机顶盒源码
源码链接:https://github.com/martixjohn/HiSTBLinuxV100R005C00SPC050
源码包含机器的引导程序、启动参数、Linux内核以及一个基本的rootfs
博主修改了部分配置以适配hi3798mv3dmm
5. Ubuntu 镜像
-
从ubuntu官网或镜像源下载匹配机顶盒架构的Ubuntu base
-
新建空文件,建议至少为800M,用作环回文件(loopback)
dd if=/dev/zero of=ubuntu.img bs=400M count=1
-
格式化该环回文件,创建ext4文件系统
mkfs.ext4 ubuntu.img
-
挂载环回文件
# 创建挂载分区 mkdir -p /mnt/loopback # 虚拟成块设备 losetup --find --show ubuntu.img # 将块设备挂载到分区,如/dev/loop0 mount /dev/loop0 /mnt/loopback
-
解压Ubuntu base
tar -xzf ubuntu.base.tar.xz -C /mnt/loopback
-
切换根目录
建议使用arch-chroot,其中做了许多挂载等工作,无需关心额外步骤
arch-chroot /mnt/loopback
-
更改root密码
重要:需要修改root密码或创建新用户并指定密码,刷入启动后方能登录
passwd
-
定制你的rootfs,安装必要和非必要软件
注意Ubuntu base预装systemd,Network Manager,需要自行安装
apt install systemd network-manager
建议安装openssh,否则只能串口作为tty交互使用
apt install ssh
提前了解设备配置信息
1. 使用TTL线连接到机顶盒
连接示意图
主板接线如图,从左到右依次连接到转接板的GND, TXD, RXD,不同板子可能有所差别,可以尝试调一下TXD, RXD顺序
2. 连接测试
-
打开HiTool软件,选择芯片,第一次使用可能会弹出显示
可以百度搜一下自己的机顶盒背面的型号,确认芯片
-
点击连接管理器
配置端口,会自动识别,选择CH340的端口,波特率为115200
-
打开终端工具
-
机顶盒连接电源,并按下机顶盒电源按钮,开机
3. 查看配置信息
若连接无误,将会在终端显示类似于如下启动信息
其中Reg Name是我们需要留意的
关闭机顶盒电源开关,并点击终端页面的断开连接,防止端口占用
在Linux环境下编译源码SDK
1. 下载编译环境
以ubuntu为例
sudo apt install gcc make gettext bison flex bc zlib1g-dev libncurses5-dev lzma
2. 拷贝预先配置,覆盖主目录下的cfg.mak
预先配置文件在configs目录下
cp configs/hi3798mv300/hi3798mv3dmm_hi3798mv300_cfg.mak cfg.mak
3. 预加载编译环境
. ./env.sh
make tools
4. (可选)自定义配置编译选项
和Linux内核一样,所用的配置系统是KConfig
make menuconfig
几个比较重要的配置选项
-
Base->Chip Type: 选择芯片组
-
Base->Out DIR: 输出路径,在out目录下
-
Board->Boot Regfile Config List: 启动的配置文件,将第一个改为自己的机顶盒匹配的配置文件名称
该文件存放于source/boot/sysreg/xxx/*.reg
不同机顶盒的内存颗粒等硬件可能有所区别,参照连接测试显示的Reg Name进行选择
5. 执行编译
make build
可以开启多核编译,如博主使用16核进行编译
make build -j 16
等待编译完成,输出结果放在out目录下,烧录所需的文件如图所示
加上ubuntu rootfs image之后,烧录应当准备好如下所示的文件
修改分区配置文件emmc_partitions.xml,将最后一项的SelectFile改为ubuntu镜像的文件名,Length属性改为-,表示占满存储器剩余空间
在Windows环境下使用HiTool软件烧录固件到EMMC
打开软件,进入HiBurn视图模式
1. 配置选项
-
取一根网线连接机顶盒主板和路由器,确保PC和机顶盒能互通,配置IP信息(使用网络传输进行烧录,原因是串口传输速率过慢)
- PC与板端配置选项卡如图
-
在本地PC配置下,点击刷新获得对应的端口和PC的IP地址
-
在板端配置下,网关一般设置为路由器内网IP,一般路由器默认为192.168.1.1,子网掩码需要按照路由器进行配置,家用路由器默认是255.255.255.0,IP随意配置保证与路由器在同一子网,如192.168.1.200,物理地址随意设置
-
传输方式选择:网口
注:以上配置的目的是让机顶盒固定IP地址,以便将固件通过以太网传输到机顶盒,机顶盒会按照配置自动设置对应IP和PC建立通信
-
加载分区配置和固件:依次选择HiBurn->烧写EMMC->浏览(选择分区配置文件emmc_paritions.xml)
2. 烧录固件
-
确保连接好网线,机顶盒处于关机状态
-
点击烧写
-
打开机顶盒电源开关,自动开始烧写
-
烧写完成,弹窗提示成功
3. 验证结果
-
机顶盒可能会自动重启,先关闭机顶盒开关
-
打开HiTool终端工具
-
右键Clear Terminal以清除以前的日志信息
-
点击连接
-
打开机顶盒开关,先是打印bootloader等启动信息后,直到一串绿色的OK字样显示出来,表示Ubuntu已经成功刷入!
-
登录Ubuntu,开始使用
以后设备每次开机都会自动引导进入Ubuntu
更换或定制属于自己的Linux发行版
只需烧写最后一个分区对应的镜像即可
确保只选择该分区,再点击刷写
任何分区都可以类似地自定义,大家愉快的DIY吧!
感谢你的阅读,觉得不错麻烦帮忙点个小小的推荐吧😘
本文来自博客园,作者:学习新知识的小白白,转载请注明原文链接:https://www.cnblogs.com/onecainiao/p/18353586