舊物利用 - 將機頂盒改造為一臺Linux開發機!

来源:https://www.cnblogs.com/onecainiao/p/18353586
-Advertisement-
Play Games

家裡的機頂盒淘汰下來,博主想要物盡其用,看看是否能將其改造為一臺Linux"開發機",為其安裝Ubuntu系統,故開始倒騰 ...


前言

家裡有一臺機頂盒(移動魔百盒)淘汰下來了,博主想要物盡其用,看看是否能將其改造為一臺Linux"開發機",量身定製系統,用作開發和測試,以及跑伺服器

博主選擇的是Ubuntu發行版系統,話不多說,開始“破解”吧!

準備工作

機頂盒型號:移動魔百盒CM201-2(CH),晶元組: hi3798mv300(hi3798mv3dmm),其他型號類似

理論上適用於以下SOC的機頂盒:Hi3798Mv100 / Hi3798Cv200 / Hi3798Mv200 / Hi3798Mv300

1. 準備Linux系統和Windows系統

前者作為源碼編譯環境,後者需要使用到進行固件燒錄的軟體

(燒錄也可以命令行形式甚至不需要Windows,需要參考海思官方文檔,為了方便故在Windows平臺下進行燒錄)

故強烈推薦在Windows平臺上安裝WSL

2. 準備海思的燒錄軟體HiTool(Windows軟體)

image

3. 準備燒錄固件所需的USB傳串口模塊以及接線,其中只需要TXD, RXD, GND三條連接到板上,並準備一根網線用於向機頂盒快速發送固件程式

博主使用的是CH340G,如圖

img

CH340G需要驅動程式,需要去官網下載CH341SER.EXE

若CH340驅動安裝正確,進入設備管理器將會看到對應埠

image

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線連接到機頂盒

連接示意圖

img

主板接線如圖,從左到右依次連接到轉接板的GND, TXD, RXD,不同板子可能有所差別,可以嘗試調一下TXD, RXD順序

image

2. 連接測試

  • 打開HiTool軟體,選擇晶元,第一次使用可能會彈出顯示

    可以百度搜一下自己的機頂盒背面的型號,確認晶元

    image

  • 點擊連接管理器

    image

    配置埠,會自動識別,選擇CH340的埠,波特率為115200

    image

  • 打開終端工具

    image

  • 機頂盒連接電源,並按下機頂盒電源按鈕,開機

3. 查看配置信息

若連接無誤,將會在終端顯示類似於如下啟動信息

image

其中Reg Name是我們需要留意的

關閉機頂盒電源開關,並點擊終端頁面的斷開連接,防止埠占用

image

在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: 啟動的配置文件,將第一個改為自己的機頂盒匹配的配置文件名稱

    image

    該文件存放於source/boot/sysreg/xxx/*.reg

    image

    不同機頂盒的記憶體顆粒等硬體可能有所區別,參照連接測試顯示的Reg Name進行選擇

    image

5. 執行編譯

make build

可以開啟多核編譯,如博主使用16核進行編譯

make build -j 16

等待編譯完成,輸出結果放在out目錄下,燒錄所需的文件如圖所示

image

加上ubuntu rootfs image之後,燒錄應當準備好如下所示的文件

image

修改分區配置文件emmc_partitions.xml,將最後一項的SelectFile改為ubuntu鏡像的文件名,Length屬性改為-,表示占滿存儲器剩餘空間

image

在Windows環境下使用HiTool軟體燒錄固件到EMMC

打開軟體,進入HiBurn視圖模式

1. 配置選項

  • 取一根網線連接機頂盒主板和路由器,確保PC和機頂盒能互通,配置IP信息(使用網路傳輸進行燒錄,原因是串口傳輸速率過慢)

    • PC與板端配置選項卡如圖

    image

    • 在本地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)

    image

2. 燒錄固件

  • 確保連接好網線,機頂盒處於關機狀態

  • 點擊燒寫

    image

  • 打開機頂盒電源開關,自動開始燒寫

  • 燒寫完成,彈窗提示成功

3. 驗證結果

  • 機頂盒可能會自動重啟,先關閉機頂盒開關

  • 打開HiTool終端工具

    image

  • 右鍵Clear Terminal以清除以前的日誌信息

    image

  • 點擊連接

    image

  • 打開機頂盒開關,先是列印bootloader等啟動信息後,直到一串綠色的OK字樣顯示出來,表示Ubuntu已經成功刷入!

    image

  • 登錄Ubuntu,開始使用

    image

以後設備每次開機都會自動引導進入Ubuntu

更換或定製屬於自己的Linux發行版

只需燒寫最後一個分區對應的鏡像即可

image

確保只選擇該分區,再點擊刷寫

image

任何分區都可以類似地自定義,大家愉快的DIY吧!

感謝你的閱讀,覺得不錯麻煩幫忙點個小小的推薦吧

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 在實際項目開發中,需求變更和項目迭代是常態。要求我們能夠迅速響應,對資料庫結構進行相應的調整,如添加新表、更新現有表結構或增加欄位等。 為了確保團隊成員之間的信息同步,實時更新和維護資料庫文檔變得至關重要。這不僅提升了資料庫的可讀性,也極大提高了開發效率和團隊協作的流暢性。 SmartSQL, ...
  • 前言 .NET許可權管理及快速開發框架、最好用的許可權工作流系統。 基於經典領域驅動設計的許可權管理及快速開發框架,源於Martin Fowler企業級應用開發思想及最新技術組合(SqlSugar、EF、Quartz、AutoFac、WebAPI、Swagger、Mock、NUnit、Vue2/3、Ele ...
  • 本章將和大家分享Linux系統中的管道命令、grep命令、sed命令和awk命令。廢話不多說,下麵我們直接進入主題。 一、管道命令 Linux 中的管道命令(pipe)是一種非常強大的特性,它允許你將一個命令的輸出作為另一個命令的輸入。管道命令極大地增強了命令行的靈活性和功能,使得複雜的數據處理任務 ...
  • 1. 配置 1.1 如果是配置全局文件,則編輯/etc/mail.rc 1.2 如果是配置當前用戶,則編輯~/.mailrc 2. 配置文件內容 # 這裡填入smtp地址,這裡的xxx為qq或者163等,如果用的雲伺服器,安全組策略要開放465/25埠,入站和出站都要開放該埠 set smtp= ...
  • 一、背景 在公司軟體的實際開發中,當一個版本的客戶端安裝包本地調試、測試驗證都沒問題後外發,到用戶實際機器上出問題了,怎麼辦? 很多人說,讓客戶給出復現步驟,我來試試!但是按照步驟操作之後還是沒效果。這時你又想到了是不是環境的差異,但是又說不上來是哪裡出問題。提供兩個辦法:1.寫日誌,編一個相近版本 ...
  • 1、用戶操作 阿裡雲預設是 root 用戶,我們一般要自己創建一個用戶,然後給該用戶 sudo 許可權 添加用戶 sudo adduser newUserName 賦予sudo許可權 sudo usermod -aG sudo newUserName 刪除用戶 sudo deluser --remove ...
  • 1、Docker 基本概念 什麼是 Docker? Docker 是一個開源的容器化平臺,允許開發者封裝他們的應用程式及其所有依賴項到一個標準化的單元中,這個單元被稱為“容器”。容器可以在任何支持 Docker 的環境中運行,從而確保應用程式的可移植性和一致性。 Docker 的優勢 一致性和可移植 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是i.MXRT1050在GPIO上增加RC延時電路後導致邊沿中斷誤觸發問題探析。 前段時間有一個 RT1052 客戶反饋了一個有趣的問題,他們設計得是一個帶 LCD 屏交互的應用,應用以官方 SDK 里的 lvgl_demo_widget ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...