家裡的機頂盒淘汰下來,博主想要物盡其用,看看是否能將其改造為一臺Linux"開發機",為其安裝Ubuntu系統,故開始倒騰 ...
前言
家裡有一臺機頂盒(移動魔百盒)淘汰下來了,博主想要物盡其用,看看是否能將其改造為一臺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吧!
感謝你的閱讀,覺得不錯麻煩幫忙點個小小的推薦吧