Armbian項目地址
Github: https://github.com/armbian/build
Armbian for TV Box 項目地址
Github: https://github.com/150balbes/Build-Armbian/
編譯步驟
參考Github上項目首頁的說明
1. 准備一個ubuntu18.04的虛機, 我是用ESXi6服務器建的, 初始化好之后 apt update & apt upgrade
2. 在自己的home目錄下, 執行命令
apt-get -y install git git clone https://github.com/armbian/build cd build ./compile.sh
3. 中途有停止的時候, 修改一下 userpatches/config-example.conf 這個文件, 將 DOWNLOAD_MIRROR="" 改為 DOWNLOAD_MIRROR="china", 在國內的服務器上可以加快下載速度.
4. 中間會有對話框讓選擇不同的板子, 版本和軟件配置. 和R3300-L板子最接近的幾款量產產品:
Khadas VIM1: https://www.khadas.com/vim1 區別是沒有AV輸出, 電源為microUSB 5V輸入, 內存為2g, wifi芯片不同, 用的是 AP6212 b/g/n or AP6255 802.11b/n/g/ac, with Bluetooth 4.2
Libre Computer的 Le Potato: https://libre.computer/products/boards/aml-s905x-cc/ 區別是電源為microUSB 5V輸入, 內存為2g, 沒有wifi
常見的板子, 其wifi芯片型號如下:
- Q5: MT7601
- Q7和R3300L: RTL8189FTV
- R3300M: RTL8189ETV
5. 中途如果有錯誤, 可以在 build/output/debug 目錄下查看對應的日志文件, 文件會區分patching, compiler, compilation, patching 分別歸類.
在kernel配置對話框中, wifi網卡驅動的位置位於 Device Drivers -> Network device support -> Wireless LAN
定制
定制涉及的目錄
config/kernel: 芯片方案的基礎配置, 例如S905對應的是 linux-menson64-*系列文件
config/boards: 量產成品板的配置, 有csc, conf, tvb等各種后綴, 格式都是一樣的, 定義了板子的名稱, 芯片方案, uboot配置, 但是只有conf后綴是屬於官方支持的板子, 其他的只是社區支持.
patch/kernel: 芯片方案對不同分支的補丁集合, 例如S905對應的是meson64-* 系列目錄, 根據板子的芯片方案, 會依次應用對應目錄下的補丁文件
增加對rtl8189的支持
sunxi是通過補丁把驅動加上的, 具體可以查看 patch/kernel/sunxi-*/系列目錄下的文件
- wifi-xxxx-add-realtek-8189es-kconfig-makefile.patch *diff行數有變化, 需要修改
- wifi-xxxx-add-realtek-8189es.patch
- wifi-add-realtek-8189fs.patch *diff行數有變化, 需要修改
- timekeeping32-tweaks-for-5.0.y.patch 這個是用於修復編譯中產生的 ioctl_cfg80211.c:353:2: error: implicit declaration of function ‘get_monotonic_boottime’ 錯誤
編譯中新增的內容
cache/sources/linux-xxxx/xxxx/arch/arm64/boot/dts/amlogic 對應芯片方案的設備描述基礎文件dtsi, 及最終設備描述文件dts, 例如 meson-gxl-s905x-khadas-vim.dts
cache/sources/linux-xxxx/xxxx/drivers/net/wireless/ 補丁添加的rtl8189驅動文件都放在這個目錄下, 新加入的驅動要加到Kconfig文件里, 才會在內核配置工具中出現
cache/sources/u-boot/20xx.xx/configs/ 這下面都是 *_deconfig 文件, 設備的默認uboot編譯配置, 例如khadas-vim_defconfig
cache/sources/u-boot/20xx.xx/include/configs/meson64.h S905* 芯片對應的頭文件