移植目标1.获取Linux内核的源代码;2、修改内核,使内核启动时能够正确挂载根文件系统rootfs(即选择内核支持的文件系统格式);3、修改驱动,切割内核;4.编译生成uImage,下载体验。在设置环境变量配置或编译内核之前,首先要确定目标CPU架构和编译时使用什么工具链。方法一:通过修改根目录下Makefile中的ARCH和CROSS_COMPILE值。方法二:修改环境变量。修改/etc/profile文件对所有用户生效,执行source/etc/profile后立即生效;或修改~/.bashrc,对当前用户生效(推荐),修改后执行source~/.bashrc立即生效。例如:vim~/.bashrc,在文件末尾添加,exportARCH=armexportCROSS_COMPILE=/usr/local/arm-linux-gcc/bin/arm-linux-execute命令:source~/.bashrc查看环境变量:echo$ARCH下载解压Linux内核的官网是https://www.kernel.org。一般芯片厂商会从官网下载某个版本的Linux内核移植到自己的CPU上。因此,你也可以将厂商提供的Linux内核移植到自己的产品中。例如,Atmel的AT91系列内核可以在https://github.com/linux4sam下载。下载解压,ubuntu下的zip软件有问题,编译的时候可能会弹出:Filenametoolong错误。可以执行“sudoapt-getinstallp7zip-full”和“7zaxxxxx.zip”解压。配置和编译内核1.内核配置,配置支持的文件系统格式。将内核文件/arch/arm/configs目录下的sama5_defconfig配置文件复制到内核文件的一级目录下。打开命令行终端,输入“makesama5_defconfig”命令进行编译。2.执行makemenuconfig命令进入配置界面。我们使用ramdisk格式的文件系统,需要修改内核来支持文件系统。进入“Generalsetup”目录,选择“InitialRAMfilesystemandRAMdisk(initramfs/initrd)support”选项(按空格键选中),如下图:3.修改内核的版本信息。进入“Generalsetup”目录,选择“Localversion–appendtpkernelrelease”选项,输入版本信息。4将ramdisks编译格式设置为bzip2:选择“Generalsetup”->“Supportinitialramdiskscompressedusingbzip2”。5设置虚拟盘数量为1,大小为128M。6在根目录下执行makeuImage(生成uboot专用的镜像文件,现在新的uboot已经支持zImage);在arch/arm/boot目录下生成uImage文件,即内核镜像文件。编译下载后可以看到uboot已经正确启动了内核。想了解更多技术知识,扫码关注我。
