在linux中,内核移植是指将程序代码从一种硬件平台转移到另一种硬件平台上运行;移植是根据用户自己选择的硬件平台来重新编译内核支持对应的硬件,使之可以在该硬件平台上运行,如果缺少相应的硬件驱动程序或其他内核模块,可以自己进行相应的开发加入到内核中一起编译最终实现对硬件的支持。
本教程操作环境:linux7.3系统、Dell G3电脑。
linux内核移植是什么
所谓移植就是把程序代码从一种运行环境转移到另一种运行环境。对于内核移植来说,主要是从一种硬件平台转移到另一种硬件平台上运行。
内核移植就是根据你自己选择的硬件平台来重新编译内核支持对应的硬件,使之可以在该硬件平台上运行,如果缺少相应的硬件驱动程序或其他内核模块,可以自己进行相应的开发加入到内核中一起编译最终实现对硬件的支持。
内核的来由
linux是一种开源的电脑操作系统内核。主要是由C语言写成的,既然是开源,那参与开发和维护的人这肯定很多,Linux发展这么快也是因为其开源的缘故,用的人多,发现的问题多,觉得不好用就被某个大神优化了。Linux内核的主要模块(或组件)分以下几个部分:存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的初始化(引导)、系统调用等。
Linux最早是由芬兰人Linus Torvalds设计的。当时由于UNⅨ的商业化,Andrew Tannebaum教授开发了Minix操作系统以便于不受AT&T许可协议的约束,为教学科研提供一个操作系统。当时发布在Internet上,免费给全世界的学生使用。话不多说,我们直接进入主题。
如何进行内核移植
1、版本与下载
linux从1991年开始到发展到现在,版本变成什么样了?相信大家也都想知道,那么在哪里看以及在哪里下载呢?小编为大家准备了内核的下载网址:https://www.kernel.org/,直接点击进去就可以看到了,界面如下:
现在稳定版已经到了5.16.12版本了,大家可以把稳定版本下载下来,但是不建议下载最新的,因为不稳定,带来的体验肯定不好。版本之间区别不是很大,可能新版本加入了一些新平台或者新的外部驱动罢了。
2、内核的移植
在编译源码之前先安装lzop库,否则编译失败:
sudo apt-get install lzop
把下载下来的内核源码及进行解压,命令如下:
tar jxvf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
得出如下文件:
创建shell脚本,并输入如下编译命令:
给予脚本权限,直至脚本变绿,如下:
./mx6ull_nand.sh编译程序,出现图形界面可以先不去配置,直接exit退出,继续等待编译完成(内核编译需要的时间较长,建议大家准备好瓜子)。编译完成以后就会在 arch/arm/boot 这个目录下生成一个叫做 zImage 的文件,zImage 就是我们要用的 Linux 镜像文件。另外也会在 arch/arm/boot/dts 下生成很多.dtb 文件,这些.dtb 就是设备树文件。后面做驱动开发的时候会经常跟这些.dts文件打交道的,编译之后的文件如下:
3、内核的使用
先设置交叉编译工具变量,进入顶层Makefile中设置如下:
使用如下命令编译Linux:
make xxx_defconfig //使用默认配置文件配置 Linux make menuconfig //启动图形化配置界面 make -j2 //编译 Linux
至此,Linux内核部分就给大家分享到这里了,动手操作起来吧。