IMX6ULL移植篇-Linux内核编译

一.  Linux内核

Linux 官网为 https://www.kernel.org ,所以你想获取最新的 Linux 版本就可以在这个网站上下载。
Linux-4.x 版本 Linux 5.x 版本没有本质上的区别, 5.x 更多的是加入了一些新的平台、新的外设驱动而已。
NXP 会从网址 https://www.kernel.org 下载某个版本的 Linux 内核,然后将其移植到自己的 CPU
上,测试成功以后就会将其开放给 NXP CPU 开发者。开发者下载 NXP 提供的 Linux 内核, 然后将其移植到自己的产品上。
本章的移植我们就使用 NXP 提供的 Linux 源码, NXP 提供 Linux源码已经放到了开发板光盘中。

二.  Linux内核编译

1.  Linux内核源码包

这里选择的 Linux内核的目录为:阿尔法Linux开发板(A盘)-基础资料-2022 / 阿尔法Linux开发板(A盘)-基础资料 / 例程源码 / 开发板教程对应的uboot和linux源码

将上面目录下的 Linux内核压缩包拷贝到 ubuntu系统下的某个目录下,并解压缩。我这里在 ubuntu下创建了目录: zhengdian_Linux/linux/kernel 来存放 Linux内核源码包

2.  编译 Linux内核

编译思路

编译 Linux内核与 编译uboot的方法基本类似,大概三步:

(1)  首先,清除工程。

(2)  其次,配置 Linux内核。这里配置可以直接设置配置文件,或者使用 Linux 内核的图形化界面进行配置(即命令 make menuconfig)。

(3) 最后,编译。

配置文件

下来具体来说明编译的方法。

这里,可以直接将以上三步写入 一个shell 脚本,直接运行脚本文件即可编译内核。

 注意:这里配置命令中,会用到配置文件。不同版本的开发板所使用的配置文件不同。

Linux内核的默认配置文件存放目录:arch/arm/configs

可以通过命令查看,是否存在对应的配置文件。操作如下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek$ ls -l ./arch/arm/configs/

输入中有如下内容:

-rw-rw-r-- 1 wangtian wangtian 100400 12月  1  2021 imx_alientek_emmc_defconfig
-rw-rw-r-- 1 wangtian wangtian 100325 10月 19  2021 imx_alientek_emmc_defconfig.old
-rw-rw-r-- 1 wangtian wangtian  90250 12月  1  2021 imx_alientek_nand_defconfig
-rw-rw-r-- 1 wangtian wangtian  90183 9月  11  2019 imx_alientek_nand_defconfig.old

编译

首先,解压缩 Linux内核源码包,输入如下命令:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel$ tar -xvf linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek.tar.bz2 

其次,创建 shell 脚本文件

进入 Linux内核源码根目录下,创建一个脚本文件,这里命名为: imx6ull_alientek_nand.sh,操作如下:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek$ gedit imx6ull_alientek_nand.sh


 

其次,编写 shell 脚本文件:

这里,我这里使用的是 Nand-Flash版本的开发板,所以,我使用的 Linux内核的配置文件是  imx_alientek_nand_defconfig

编辑 shell脚本文件:

#!/bin/sh

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_alientek_nand_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all

其次,更改 shell脚本的权限,需要赋予其执行权限:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek$ chmod 777 imx6ull_alientek_nand.sh

最后,编译内核,即运行 shell脚本:

wangtian@wangtian-virtual-machine:~/zhengdian_Linux/linux/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga_alientek$ ./imx6ull_alientek_nand.sh

三.  生成的内核镜像

编译的时候会弹出 Linux 图形配置界面:
IMX6ULL移植篇-Linux内核编译_第1张图片

Linux 的图行界面配置和 uboot 是一样的,这里我们不需要做任何的配置,直接按两下 ESC
键退出,退出图形界面以后会自动开始编译 Linux 。等待编译完成。

编译 Linux 内核的时候可能会提示 recipe for target ‘arch/arm/boot/compressed/piggy.lzo’
failed”。 错误提示 lzop 未找到,原因是没有安装 lzop 库,输入如下命令安装 lzop
即可解决:
sudo apt-get install lzop
lzop 库安装完成以后在重新编译一下 Linux 内核即可。

内核镜像

编译完成以后,就会在 arch/arm/boot 这个目录下生成 zImage 的文件, zImage 就是我们要用的 Linux 镜像文件。
另外也会在 arch/arm/boot/dts 目录 下生成很多 .dtb 文件,这些 .dtb 就是设备树文件。

IMX6ULL移植篇-Linux内核编译_第2张图片

至此,Linux内核镜像编译完成。后面可以烧录开发板进行验证 Linux镜像是否可以成功启动。

你可能感兴趣的:(系统移植篇,linux,arm开发)