编译内核镜像并在云实验室开发板运行
本文档涉及案例包括:
• 预定开发板
• 准备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镜像。