目前手头有一个tinker board 2s的开发板,处理器架构是arm64,今天就在Windows上的ubuntu 虚拟机里面
搭建一个交叉编译的环境,目标是可以编译出运行在tinker board 2s的开发板上的内核模块。
该开发板的内核版本为 4.4.194。
以下命令全部在ubuntu上执行。
首先更新系统
sudo apt update
sudo apt upgrade
下载linaro的arm64位交叉编译工具
cd /usr/local/
mkdir arm
cd arm
sudo wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
tar xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
放入/etc/profile文件末尾。
export PATH=$PATH:/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
让环境变量生效
source /etc/profile
安装必要的包:
sudo apt-get install make build-essential libncurses-dev bison flex libssl-dev libelf-dev
注意gcc必须为版本9,不然编译内核报错。
sudo apt install gcc-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
下载对应的内核版本:
wget https://github.com/TinkerBoard2/kernel/archive/refs/tags/tinker_board_2-debian_10-2.0.0.zip
unzip tinker_board_2-debian_10-2.0.0.zip
下面是把开发板的内核配置文件copy至ubuntu。
我的开发板的ip是 192.168.31.82,支持ssh.
复制目标开发板的内核配置文件至ubuntu当前目录:
sudo scp linaro@192.168.31.82:/proc/config.gz .
sudo gunzip config.gz
修改文件名为.config,后面备用.
sudo cp config .config
开始编译内核:
cd tinker_board_2-debian_10-2.0.0
1 先清除上次编译的遗留文件:
sudo make distclean
2 使用tinker board 2s的 .config 文件编译
将上面准备好的.config 文件复制到当前目录.
sudo cp ../.config .
3 继续执行:
sudo make ARCH=arm64 CROSS_COMPILE=/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
这里有几个编译错误,可以参考这里解决
4 继续执行:
sudo make ARCH=arm64 rk3399-tinker_board_2.img CROSS_COMPILE=/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -j8
5 then copy boot.img to tinker_board
scp boot.img linaro@192.168.31.82:/home/linaro/a
6 在开发板上执行:
sudo dd if=boot.img of=/dev/mmcblk1p4
7 重启开发板,然后输入
uname -a
来确认内核编译时间.
欢迎评论区留言。