编译内核镜像并在云实验室开发板运行

编译内核镜像并在云实验室开发板运行

本文档涉及案例包括:

•          预定开发板

•          准备PC ubuntu主机并安装软件包

•          准备交叉编译工具链

•          内核源码下载及切换分支

•          内核源码编译

•          替换云实验室开发板镜像并启动

1.     预定开发板

在动手实践本应用案例前先预定开发板:(以i.MX8MP为例,i.MX93等同样适用), 如何在云实验预定你所感兴趣的开发板

2.     准备PC ubuntu主机并安装软件

在编译前请准备ubuntu22.04的电脑,并安装以下软件包:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \

build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \

xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev \

pylint3 xterm rsync curl zstd lz4 libssl-dev

3.     准备交叉编译工具链

下载并解压交叉编译工具链:

mkdir ~/toolchain/

cd ~/toolchain/

wget https://developer.arm.com/-/media/Files/downloads/gnu-a/10.3-2021.07/binrel/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz

tar -xf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz

执行上面两步后工具链已经安装在目录~/toolchain/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu

4.     内核源码下载及切换分支

cd ~/

mkdir ~/kernel_build/

cd ~/kernel_build/

git clone https://github.com/nxp-imx/linux-imx.git

git checkout -b lf-6.1.22-2.0.0-local lf-6.1.22-2.0.0

执行上面几条命令后,内核源码已经下载到~/kernel_build/linux-imx目录。

5.     内核源码编译

在编译前需要使能交叉工具链,参考下面的export CROSS_COMPILE和export ARCH两个命令,然后在目录~/kernel_build/linux-imx下执行编译,命令如下:

export CROSS_COMPILE=~/toolchain/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-

export ARCH=arm64

make imx_v8_defconfig

make -j$(nproc)

机器配置不同,编译时间从几分钟到几十分钟不等。编译好的 Image 文件会被保存在 arch/arm64/boot 目录下。

6.     替换云实验室开发板镜像并启动

上传并替换云实验室板子的dtb和Image,依次点击用户网页端下面1,2,3的位置,在点击位置2时,选择TFTP,点击3后选择文件~/kernel_build/linux-imx/arch/arm64/boot/dts/freescale/imx8mp-evk.dtb和~/kernel_build/linux-imx/arch/arm64/boot/Image

上传成功后,点击下方PowerReset EVK按钮,重启开发板。

 至此,开发板开始运行自己修改编译的linux镜像。