按照[安裝Docker https://docs.docker.com/engine/install/debian/](https://bobpan357.notion.site/Docker-https-docs-docker-com-engine-install-debian-3811d56e45ad8095ad92e67183c36fcf) 教學安裝Docker
建立 Ubuntu 14.04 docker image
sudo docker run -it --name rk3028-build-env ubuntu:14.04 /bin/bash
安裝必要套件:
apt update
apt install -y git git-core build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip bc python
準備檔案
# 使用 root 資料夾來編譯檔案
cd /root
# Clone Repo
git clone <https://github.com/olegk0/rk3x_kernel_3.0.36.git>
git clone <https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6>
# 將 GCC 固定為 Android 4.2 用的版本
cd arm-eabi-4.6
git checkout android-4.2_r1
# 編譯檔案
# 新版本,直接覆蓋config
mv .config .config_old
cp ./arch/arm/configs/rk3028a_86v_defconfig ./.config
# Note: 指定剛剛下載的gcc來當編譯器
cd /root/rk3x_kernel_3.0.36
# 執行Menuconfig
make ARCH=arm menuconfig
選擇正確的處理器型號(這支電視棒是RK3028A)



退回到最上面

確認這個勾勾

選擇Exit,直到這個選項跳出,選擇Yes

最後檢查
grep -E "CONFIG_SMP|CONFIG_CPU_V7" .config
# 要得到
CONFIG_CPU_V7=y
CONFIG_SMP=y
# CONFIG_SMP_ON_UP is not set
產生標頭檔,準備編模組
make ARCH=arm CROSS_COMPILE=/root/arm-eabi-4.6/bin/arm-eabi- modules_prepare
備份原本的檔案
cd /root/rk3x_kernel_3.0.36/drivers/media/dvb/
mv smsusb.c smsusb.c.bak
像母教學一樣修改檔案

在Makefile增加強制編譯檔案的宣告
/root/rk3x_kernel_3.0.36/drivers/media/dvb/siano/Makefile
# Force complie modules I needed
obj-m += smsmdtv.o smsdvb.o smsusb.o
# 在原始這三行的上面
obj-$(CONFIG_SMS_SIANO_MDTV) += smsmdtv.o smsdvb.o
obj-$(CONFIG_SMS_USB_DRV) += smsusb.o
obj-$(CONFIG_SMS_SDIO_DRV) += smssdio.o
編譯
cd /root/rk3x_kernel_3.0.36
make ARCH=arm CROSS_COMPILE=/root/arm-eabi-4.6/bin/arm-eabi- M=drivers/media/dvb/siano/ modules
驗證
cd /root/rk3x_kernel_3.0.36/
cd drivers/media/dvb/siano/
strings smsdvb.ko | grep vermagic
# 得到的應該會像下面
vermagic=3.0.36+ SMP preempt mod_unload ARMv7
__mod_vermagic5