Linux内核编译

编译内核之前需要先在ubuntu上安装lzop库,另外,图形化配置工具还需要ncurses库支持,安装命令为:

sudo apt-get install lzop
sudo apt-get install build-essential 
sudo apt-get install libncurses5-dev 

在Ubuntu中新建一个文件夹,然后将linux内核压缩包拷贝到文件夹中并解压,解压命令为:

tar -vxf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2

解压完成后

Linux--内核移植(一)Kernel编译启动-LMLPHP

进入该文件夹,新建一个build.sh脚本文件来编译,脚本中的内容如下:

#!/bin/sh 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_mfg_defconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- all -j8 

给予该脚本可执行权限,然后运行,编译的时候会弹出Linux图形配置界面, 这里不需要做任何的配置, 直接按两下ESC键退出图形界面

Linux--内核移植(一)Kernel编译启动-LMLPHP

之后会自动开始编译Linux内核。

Linux--内核移植(一)Kernel编译启动-LMLPHP

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

内核启动流程

要分析 Linux 启动流程,同样需要先编译一下 Linux 源码,因为有很多文件是需要编译才会生成的。
首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds ,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的。
04-23 22:11