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
解压完成后
进入该文件夹,新建一个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内核。
编译完成以后就会在arch/arm/boot
这个目录下生成一个zImage
文件,该文件就是要用的Linux镜像文件。另外也会在arch/arm/boot/dts
下生成很多.dtb 文件,这些.dtb 就是设备树文件。
内核启动流程
要分析 Linux 启动流程,同样需要先编译一下 Linux 源码,因为有很多文件是需要编译才会生成的。
首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds ,通过链接脚本可以找到 Linux 内核的第一行程序是从哪里执行的。