旧物利用 - 将机顶盒改造为一台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 lzma2. 拷贝预先配置,覆盖主目录下的cfg.mak
预先配置文件在configs目录下
cp configs/hi3798mv300/hi3798mv3dmm_hi3798mv300_cfg.mak cfg.mak3. 预加载编译环境
. ./env.sh make tools4. (可选)自定义配置编译选项
和Linux内核一样,所用的配置系统是KConfig
make menuconfig几个比较重要的配置选项
Base->Chip Type: 选择芯片组
Base->Out DIR: 输出路径,在out目录下
Board->Boot Regfile Config List: 启动的配置文件,将第一个改为自己的机顶盒匹配的配置文件名称
该文件存放于source/boot/sysreg/xxx/*.reg
不同机顶盒的内存颗粒等硬件可能有所区别,参照连接测试显示的Reg Name进行选择
